<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.browncat.org/~d/styles/itemcontent.css"?><rss version="2.0">
   <channel>
      <title>blog@browncat.org</title>
      <link>http://blog.browncat.org/</link>
      <description>Web, Linux, Ubuntu, Mac, PDA, 携帯電話, プログラミング, ソフトウェア＆落書き
</description>
      <language>ja</language>
      <copyright>Copyright 2012</copyright>
      <lastBuildDate>Thu, 05 Jan 2012 01:09:11 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="blogatbrowncatorg" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://blog.browncat.org/index.xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://paipo.jp/bookmarklet/?url=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://www.feedburner.jp/fb/i/subscribe_paipo.gif">Paipo???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.co.jp/rss?url=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://i.yimg.jp/i/jp/my/addtomy/standard_bb.gif">myyahoo???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://www.newsgator.com/images/ngsub1.gif">NewsGator Online???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feedpath.jp/feedreader/feeds_add?url=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://feedpath.jp/common/images/sub_feedpath.gif">feedpath???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://blog.browncat.org/index.xml" src="http://www.bloglines.com/images/sub_modern11.gif">Bloglines???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://buttons.googlesyndication.com/fusion/add.gif">Google???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://r.hatena.ne.jp/append/http://blog.browncat.org/index.xml" src="http://r.hatena.ne.jp/images/addto_w.gif">???RSS???</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://reader.livedoor.com/subscribe/http://blog.browncat.org/index.xml" src="http://image.reader.livedoor.com/img/banner/91_17_1.gif">Livedoor???????</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://reader.goo.ne.jp/web/bookmarklet.html?,,http%3A%2F%2Fblog.browncat.org%2Findex.xml" src="http://reader.goo.ne.jp/web/img/addwebrss.gif">goo RSS???????</feedburner:feedFlare><item>
         <title>新年あけましておめでとうございます</title>
         <description>&lt;p&gt;
新年あけましておめでとうございます。
&lt;/p&gt;
&lt;p&gt;
新たに2012年が始まりました。&lt;br /&gt;
今年も皆様にとって実り多き年でありますよう。
&lt;/p&gt;
&lt;p&gt;
私も今年は初心に帰って頑張ろうと心に決めつつ。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nR9XMsL2vf77DZ2yJgfE19K7Cho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nR9XMsL2vf77DZ2yJgfE19K7Cho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nR9XMsL2vf77DZ2yJgfE19K7Cho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nR9XMsL2vf77DZ2yJgfE19K7Cho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=3aPA4gQd5Y4:z1AuDgmgDqM:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=3aPA4gQd5Y4:z1AuDgmgDqM:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=3aPA4gQd5Y4:z1AuDgmgDqM:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=3aPA4gQd5Y4:z1AuDgmgDqM:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/3aPA4gQd5Y4" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2012/01/post_67.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2012/01/post_67.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">独り言</category>
        
        
         <pubDate>Thu, 05 Jan 2012 01:09:11 +0900</pubDate>
      </item>
            <item>
         <title>サーバー復活しました</title>
         <description>&lt;p&gt;
サーバトラブルで当サイト開設以来最長のサーバの停止をしてしまいましたが無事復活いたしました。
&lt;/p&gt;
&lt;p&gt;
HDD交換をしても芳しくなく、メンテの時間がとれなかったのでメールだけ外部に振って放置だったのですが、どうやらSATAケーブル交換で安定した...?模様です。
&lt;/p&gt;
&lt;p&gt;
結構古いマシンなのでそろそろリプレース考えないといけないかもとか思いつつ。
&lt;/p&gt;
&lt;p&gt;
バックアップ＆リストアしたので心なしか速くなったような。これでしばらく様子見をしてみます。
&lt;/p&gt;
&lt;p&gt;
今後ともよろしくお願いいたします。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Art5i_I2GxE6Z3qVzxHCqsI07gU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Art5i_I2GxE6Z3qVzxHCqsI07gU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Art5i_I2GxE6Z3qVzxHCqsI07gU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Art5i_I2GxE6Z3qVzxHCqsI07gU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Wqus_tmpzI8:oP6ux6pqZ2k:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Wqus_tmpzI8:oP6ux6pqZ2k:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Wqus_tmpzI8:oP6ux6pqZ2k:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Wqus_tmpzI8:oP6ux6pqZ2k:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/Wqus_tmpzI8" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/11/server_alive.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/11/server_alive.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">自宅サーバ</category>
        
        
         <pubDate>Sun, 27 Nov 2011 21:04:07 +0900</pubDate>
      </item>
            <item>
         <title>AirPrint Activator2でMacOSX LionでiPhone/iPadから印刷出来るように</title>
         <description>&lt;p&gt;
MacOSXにつないだ普通のプリンタにiOSデバイス(iPhone/iPad)から印刷するには、以前はAirPrint Hacktivatorというソフトで設定していたのですが、Appleからツッコミが入ったらしく、新たにAirPrint Activatorとなっています。Lion対応したAirPrint Activatorのv2を使ってみました。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://netputing.com/airprintactivator/airprint-activator-v2-0/"&gt;AirPrint Activator v2.0 &amp;laquo; Netputing&lt;/a&gt;&lt;br /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
上のリンクからv2.1b2をもらってきてEpsonのプリンタを繋いだMac miniにインストール。
&lt;/p&gt;
&lt;p&gt;
ほとんど書くことがないのですが、起動すると接続されているプリンタを認識するのでこれをONにするとあっさりiOSから認識出来プリント可能に。&lt;br /&gt;
一旦ONにするとソフトを落としても大丈夫のようです。
&lt;/p&gt;
Donationを求められるのですが、MacのAppStoreで買えたら嬉しいのだけど...&amp;nbsp;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2_b6Md-dQR1hrz-cV6n1l4kV8c4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2_b6Md-dQR1hrz-cV6n1l4kV8c4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2_b6Md-dQR1hrz-cV6n1l4kV8c4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2_b6Md-dQR1hrz-cV6n1l4kV8c4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=z2tG8RWzSZQ:wsGCSJJK0qI:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=z2tG8RWzSZQ:wsGCSJJK0qI:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=z2tG8RWzSZQ:wsGCSJJK0qI:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=z2tG8RWzSZQ:wsGCSJJK0qI:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/z2tG8RWzSZQ" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/airprint_activator2_print_ios_to_lion.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/airprint_activator2_print_ios_to_lion.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">iPad</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">iPhone</category>
        
         <pubDate>Tue, 18 Oct 2011 02:26:35 +0900</pubDate>
      </item>
            <item>
         <title>祝Ubuntu 11.10リリース</title>
         <description>&lt;p&gt;
Ubuntu 11.10が今回も無事にリリースされましたね。すっかりデスクトップLinuxとしてトップの座を安定的にキープしていて喜ばしい限りです。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.ubuntu.com/"&gt;Homepage | Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
個人的に今回のリリースで一番といっていい位に嬉しい変更はデフォルトのメーラがEvolutionからThunderbirdになったこと。Evolutionはいつまでたっても日本語では使えませんでしたからね。またUIや検索機能(Spotlightライク)などますますMac化が進んでいます。New Featureの紹介でも内容がUI重視になっておりkernel 3.0やらbtrfs等にはあまり触れられていないのが印象的です。
&lt;/p&gt;
&lt;p&gt;
今回のリリースで面白いのはトップページから辿ることが出来る&amp;quot;&lt;a href="http://www.ubuntu.com/tour"&gt;Take the tour&lt;/a&gt;&amp;quot;。これは単なるスクリーンショットではなく、なんとUbuntuのライブデモになっています。&amp;quot;Show yourself around&amp;quot;をクリックして是非ツアーに出てみてください。左のランチャーからいろいろ楽しめます。
&lt;/p&gt;
&lt;p&gt;
またCloudやServerへの注力がますますはっきりしてきましたね。私的にはサーバへの採用は正直少し控えていたのですが、定期リリースが安定していること、LTSのサポートもちゃんとされていることなどから、遅まきながら次のLTS位からそろそろサーバに採用しようかな？
&lt;/p&gt;
&lt;p&gt;
ところでこのライブデモは自分で構築出来るのか。iPadからもなんとか使えたのでvnc代わりに使えそうな感じ。ちょっとインストールしてつついてみようと思いつつ。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DPbNEdlkD0Ti177CcJ0bPtcuzxk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DPbNEdlkD0Ti177CcJ0bPtcuzxk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DPbNEdlkD0Ti177CcJ0bPtcuzxk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DPbNEdlkD0Ti177CcJ0bPtcuzxk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=0rZjvsPpeWM:gJCZN_K9-L4:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=0rZjvsPpeWM:gJCZN_K9-L4:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=0rZjvsPpeWM:gJCZN_K9-L4:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=0rZjvsPpeWM:gJCZN_K9-L4:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/0rZjvsPpeWM" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/ubuntu_1110_release.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/ubuntu_1110_release.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Linux</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Ubuntu</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Ubuntu</category>
        
         <pubDate>Fri, 14 Oct 2011 13:15:39 +0900</pubDate>
      </item>
            <item>
         <title>Dennis Ritchie氏ご逝去</title>
         <description>&lt;p&gt;
なんていうのか、思うところが多すぎる衝撃的なニュースが
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://developers.slashdot.jp/story/11/10/13/0224245/%E8%A8%83%E5%A0%B1%3A-C-%E8%A8%80%E8%AA%9E%E3%81%AE%E9%96%8B%E7%99%BA%E8%80%85%E3%80%81%E3%83%87%E3%83%8B%E3%82%B9%E3%83%BB%E3%83%AA%E3%83%83%E3%83%81%E3%83%BC%E6%B0%8F%E3%81%8C%E6%AD%BB%E5%8E%BB"&gt;訃報: C 言語の開発者、デニス・リッチー氏が死去 | スラッシュドット・ジャパン デベロッパー&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
C言語の開発者、K&amp;amp;R本の&amp;#39;R&amp;#39;として知られており、初期のUnix開発にも参加しておられたdmrさんがお亡くなりになったとのこと。C言語、Unixの思想を著したK&amp;amp;Rは単なるCの解説書というだけではなく、彼らの重要なソフトウェア技術、プログラミング哲学を表した名著。もちろん直接の面識があったわけではありませんが、若い頃に彼らの著書やコードを熟読、勉強させて頂き、今の自分の礎となったと思っています。
&lt;/p&gt;
&lt;p&gt;
私などが書くまでもなく、C言語とUnixの功績は今のコンピュータ分野を形作ったといっても過言ではないほどの重要なものの一つ。リッチーさんたちがいなければC/C++/Javaもなく当然JavaScriptもなく、MacOSXもiPhoneもLinuxもWindowsすら存在していなかったでしょう。デスクトップ分野では素のC言語のシェアは減っていますが、今でも組み込み分野では中心的存在。現在の世界中のテレビや車などを含めたコンピュータを使う機器のほとんど全てが彼(ら)の恩恵を受けていると言っても過言ではない状況でしょう。dmr氏はコンピュータの世界の&amp;#39;車輪&amp;#39;ともいうべき重要なものを作った方の一人として永遠に記憶されると信じます。
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
少し調べていたら米Motorola社を大きく育て上げた元CEOのRobert Galvin氏も10/11にお亡くなりになっているようです。Jobs氏といい先駆的な方々が次々とお亡くなりになりそうな時期になって来ました。彼らがUnixやCを開発してから約40年、AppleIIからでも30年とちょっと。その間にコンピュータは当時最先端のPDPやその後のMac等とは比べものにならないほど強大な性能を持つようになり、Unixの末裔とも言えるOSで制御されて、ポケットの中にすら収まるようになりました。常時インターネットに接続されて相互につながり、一部マニアや専門家のものから生活やビジネスの道具へと変化。人や社会のあり方を大きく変えてしまいました。これも彼らの功績、だとすればこれからの40年はどういったものになるのでしょうね。今彼らに相当する人達はいるのだろうか？
&lt;/p&gt;
&lt;p&gt;
ともあれ、ご冥福をお祈りいたします。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/sIcB3tCMwVzvCMJ4mGntBOEsAYg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sIcB3tCMwVzvCMJ4mGntBOEsAYg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/sIcB3tCMwVzvCMJ4mGntBOEsAYg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/sIcB3tCMwVzvCMJ4mGntBOEsAYg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=iYaYudwEnjg:ryECf_hDb4o:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=iYaYudwEnjg:ryECf_hDb4o:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=iYaYudwEnjg:ryECf_hDb4o:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=iYaYudwEnjg:ryECf_hDb4o:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/iYaYudwEnjg" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/dennis_ritchie.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/dennis_ritchie.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Linux</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">その他</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Programming</category>
        
         <pubDate>Thu, 13 Oct 2011 16:53:07 +0900</pubDate>
      </item>
            <item>
         <title>Google Dart言語をMacOSX Lionにインストールしてみたメモ</title>
         <description>&lt;p&gt;
先日(2011/10/10)公開されたGoogleの新言語DartをMacOSX 10.7.1 Lionにインストールしてみたので備忘録。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.dartlang.org/"&gt;Dart : Structured web programming&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://code.google.com/p/dart/"&gt;dart - Dart - Structured Web Programming - Google Project Hosting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
ざっくりというとGoogle Dart言語はJavaScriptとJava/C++の中間的な言語。動的な型の変数だけでなく静的な型も使え、クラス/インターフェースなどを持ち文法的にはC/C++系です。JavaScriptの代替とサーバサイドでのスクリプティングの両方を目指しているようです。詳しくは上の本家ページを見てみればわかりますが、Hello Worldなんかは一見して普通にC系言語ですね。
&lt;/p&gt;
&lt;p&gt;
dartの開発環境はdartソースをコンパイルし結果をJavaScriptで出力するコンパイラdartcとインタープリタ(VM)のdartとd8です。dartcでは出来たjsをブラウザ等のJavaScript実行環境で走らせることができます。いずれChrome等にvmが内蔵されるとコンパイルの必要なくブラウザ内でJavaScriptと同様に走らせることが出来るようになると思われます。
&lt;/p&gt;
&lt;h4&gt;当方のコンパイルした環境&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;MacOSX 10.7.1 Lion&lt;/li&gt;
	&lt;li&gt;Xcode 4.1&lt;/li&gt;
	&lt;li&gt;MacPorts&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;手順(gsutilのあたりはかなり適当...)&lt;/h4&gt;
&lt;p&gt;
ビルドのための手順が上記Google Codeのwikiに書いてありますが、少しだけ手間がかかったので以下にメモ。
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;必要なツールのインストール&lt;br /&gt;
	&lt;a href="http://code.google.com/p/chromium/wiki/MacBuildInstructions"&gt;MacBuildInstructions - chromium - Build instructions for Chromium on Mac OS X - An open-source browser project to help move the web forward. - Google Project Hosting&lt;br /&gt;
	&lt;/a&gt;ここにはXcode 3.2.3+を推奨で4はおすすめでないとありますが、今更面倒なので無視&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	sudo port -uvc install git-core +svn&lt;br /&gt;
	sudo port -uvc install depot_tools&lt;br /&gt;
	sudo port -uvc install gsutil
	&lt;/div&gt;
	&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;ソースの入手&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	gclient config http://dart.googlecode.com/svn/trunk/deps/all.deps&lt;br /&gt;
	gclient sync
	&lt;/div&gt;
	&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;最後にDumpRenderTreeがダウンロード出来ないとかgsutilがどうたらとWARNINGが出たら&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	./dart/third_party/gsutil/20110627/gsutil config
	&lt;/div&gt;
	&lt;br /&gt;
	とするとなにやら長いURLが出てくるのでブラウザで開く。&lt;br /&gt;
	googleのアカウントでログインしてgsutilを認証し、出てきたコードをgclientのauthorization codeにコピペ&lt;br /&gt;
	project-idは空でリターン&lt;/li&gt;
	&lt;li&gt;再度gclient sync&lt;/li&gt;
	&lt;li&gt;cd dart&lt;/li&gt;
	&lt;li&gt;Lionの場合SDKが10.6なので&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	GYP_DEFINES=&amp;#39;mac_sdk=10.6&amp;#39; gclient runhooks
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;後はビルド&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	./tools/build.py --arch=ia32
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;テスト&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	./tools/test.py --arch=ia32,dartc,chromium
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;span class="pln"&gt;詳細はつついていませんが&lt;/span&gt;一箇所テストに失敗しました。気持ち悪いですがなんとか使えているようです。エラーメッセージは以下のとおり&lt;br /&gt;
	=== Debug_ia32 vm/Mutex ===&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
	Path: vm/Mutex&lt;br /&gt;
	Running test: Mutex&lt;br /&gt;
	&amp;lt;DART&amp;gt;/dart/runtime/vm/thread_macos.cc:132: error: expected: result == 0&lt;br /&gt;
	Command: &amp;lt;DART&amp;gt;/dart/xcodebuild/Debug_ia32/run_vm_tests Mutex --ignore-unrecognized-flags&lt;br /&gt;
	--- CRASHED ---&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;buildで--arch=x64とするとdartcは動作するがdartが動かないという結果&lt;/li&gt;
	&lt;li&gt;コンパイル結果は./dart/xcodebuild/Debug_ia32以下に。&lt;/li&gt;
	&lt;br /&gt;
&lt;/ol&gt;
&lt;h4&gt;使ってみる&lt;/h4&gt;
&lt;ol&gt;
	&lt;li&gt;パスを通す&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	export PATH=&amp;lt;DART&amp;gt;/dart/xcodebuild/Debug_ia32:$PATH
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;d8と叩くとjsのreplらしきものが起動しますのでちょこっと遊ぶ&lt;/li&gt;
	&lt;li&gt;コンパイルしてみる。dartcはoptimizeをつけると劇的に小さなjsファイルを生成してくれますが最適化にメモリを大量に食うようなので適当にjava vmのメモリを増やす&lt;br /&gt;
	&lt;div class="yourclass01"&gt;
	export DART_JVMARGS=&amp;quot;-Xms256m -Xmx512m&amp;quot;&lt;br /&gt;
	dartc hoge.dart --out hoge.js --optimize
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;dartコマンドではスクリプトが直接実行できます&lt;/li&gt;
&lt;/ol&gt;
お約束のHello World&lt;br /&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href="http://www.dartlang.org/docs/getting-started/index.html"&gt;Tutorial: Hello, World : Dart : Structured web programming&lt;/a&gt;&lt;br /&gt;
	このサンプルをhelloworld.dartなどというファイルに保存して
	&lt;div class="yourclass01"&gt;
	dart helloworld.dart
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;dartc --optimize helloworld.dart --out helloworld.js&lt;/li&gt;
	&lt;li&gt;ちなみにhelloworld.jsは28kb強となります。コンパイルしたjsファイルはnodeでも実行出来ました。&lt;/li&gt;
&lt;/ol&gt;
もう少し面白そうなの(DOM操作でHelloworldみたいなサンプル&amp;quot;Hi&amp;quot;)
&lt;ol&gt;
&lt;/ol&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;a href="https://code.google.com/p/dart/source/browse/#svn%2Fbranches%2Fbleeding_edge%2Fdart%2Fclient%2Fsamples%2Fhi"&gt;/ - dart - Dart - Structured Web Programming - Google Project Hosting&lt;/a&gt;&lt;br /&gt;
	上のリンクからhi.dartとhi.htmlをもらってきてhi.htmlをindex.htmlにしておく&lt;/li&gt;
	&lt;li&gt;変換する
	&lt;div class="yourclass01"&gt;
	python &amp;lt;DART&amp;gt;/client/tools/htmlconverter.py index.html --optimize -o foo/
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;結果が1つのhtmlファイルに出力されるのでブラウザで開く
	&lt;div class="yourclass01"&gt;
	open foo/index-js.html
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
dom操作を含むhi.dart+hi.htmlの結果(index-js.html)は221kbとなりました。
&lt;/p&gt;
&lt;h4&gt;最後に感想など&lt;/h4&gt;
&lt;p&gt;
まだ公開されたての言語なのでこれからという感じですね。vmでの性能は特に調べていませんが速く出来る可能性は非常に高いと思います。が、特にJavaScriptでの出力は元と比べ相当大きくなります。ブラウザ内に取り込まれるまで実用的ではないかもしれません。
&lt;/p&gt;
&lt;p&gt;
また言語仕様はスクリプト系の言語というよりjavaやC++のような言語に近いので、大きなプロジェクトにはいいかもしれませんが、 お手軽に使う感じではないかもという印象です。
&lt;/p&gt;
&lt;p&gt;
#と思ったのですが、基本は動的型で型アノテーションのチェックはあまり厳しくはありません。ラフにも使える反面静的型付言語ほどの安全性はなさそうです。ある意味&amp;quot;Java&amp;quot;Scriptの再定義ともいえるかもしれません。
&lt;/p&gt;
&lt;h4&gt;追記:単純ループでのベンチマーク&lt;/h4&gt;
&lt;p&gt;
単に1000000000回forでループするだけの超簡単なプログラム(参考にもならないかもですが)で速度を測ってみると面白い結果に。&lt;br /&gt;
結果はtimeコマンドのUser時間。マシンはMac miniのi7 2Ghz。
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;dart foo.dart&amp;nbsp;&amp;nbsp; --&amp;gt; 8.68s&lt;/li&gt;
	&lt;li&gt;dartc + node &amp;nbsp; --&amp;gt; 28.6s&lt;/li&gt;
	&lt;li&gt;dartc -optimize + node -&amp;gt; 4.43s&lt;/li&gt;
	&lt;li&gt;dartc + d8 &amp;nbsp; &amp;nbsp;&amp;nbsp; --&amp;gt; 6.55s&lt;/li&gt;
	&lt;li&gt;dart -optomize + d8 --&amp;gt; 1.21s&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
ループを10回増やしてoptimize+d8で再テストすると
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;&amp;nbsp;dart -optomize + d8 x10倍 --&amp;gt; 17.48s&lt;br /&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
ということでjsにコンパイルしてd8が最速という結果。ちなみにコンパイル後のjsファイルのサイズはopt=28507 bytes, no-opt=549613 bytesでした。&lt;br /&gt;
ほぼ同じコードをJavaScriptで書いてnodeとd8で走らせると
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;node + js --&amp;gt; 4.36s&lt;/li&gt;
	&lt;li&gt;d8 + js --&amp;gt; 1.21s&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
dartcとほぼ同じ結果となりました。
&lt;/p&gt;
&lt;h4&gt;追記2:リリース直後から数日で&lt;/h4&gt;
&lt;p&gt;
dartc -optimizeの出力結果が約10%小さくなっていました(笑)。しばらくは更新ラッシュで安定するには少し時間がかかるでしょうね。安定すれば外部jsやブラウザプラグイン等でランタイムを供給すればコンパイル結果は劇的に小さく出来るのではないかと思いつつ。&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/p0sPDX_RCUvvz6Nc3VHvCwRQpao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p0sPDX_RCUvvz6Nc3VHvCwRQpao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/p0sPDX_RCUvvz6Nc3VHvCwRQpao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/p0sPDX_RCUvvz6Nc3VHvCwRQpao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=BcVSqht_lxM:hbfwHR4xrD4:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=BcVSqht_lxM:hbfwHR4xrD4:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=BcVSqht_lxM:hbfwHR4xrD4:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=BcVSqht_lxM:hbfwHR4xrD4:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/BcVSqht_lxM" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/google_dart_install_mac.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/google_dart_install_mac.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Web</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">google</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">mac</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">web</category>
        
         <pubDate>Tue, 11 Oct 2011 02:03:47 +0900</pubDate>
      </item>
            <item>
         <title>MacOSXのサービスからJavaScriptが評価出来るとか</title>
         <description>&lt;p&gt;
小ネタですがさっき気づいたのでメモ。JSTalk(&lt;a href="http://jstalk.org/"&gt;JSTalk: Index&lt;/a&gt;)をインストールするとサービスに&amp;quot;Get Result of JSTalk Script&amp;quot;なる項目が追加され、選択したテキストをJSTalkのスクリプト(ほぼJavaScript)として評価して結果を返してくれます。
&lt;/p&gt;
&lt;p&gt;
環境設定のキーボードショートカットでも選択出来、デフォルトでは⌘+5になっています。
&lt;/p&gt;
&lt;p&gt;
単純な例ですが
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
x=10; y=20; x+y と入れて選択、⌘5 =&amp;gt; 200
&lt;/div&gt;
&lt;p&gt;
という感じ。ただし変数はその場限りなのであまり複雑なことは出来ません。terminalやxcode、ブラウザの入力枠等テキストフィールドの入力部分で使えるので、ちょこっとした計算結果を使いたい場合に便利そうです。
&lt;/p&gt;
&lt;p&gt;
Rubyなんかも同じように出来るらしい(&lt;a href="http://aussiebloke.blogspot.com/2011/04/eval-expression-service-for-os-x.html"&gt;aussie bloke: Eval Expression service for OS X&lt;/a&gt;)のですが未確認。今まであまり使ってなかったのですが、Service機能なかなか面白いですね。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eFloiv6lzPyJGRKbx-MFJH5iQFU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eFloiv6lzPyJGRKbx-MFJH5iQFU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eFloiv6lzPyJGRKbx-MFJH5iQFU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eFloiv6lzPyJGRKbx-MFJH5iQFU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=xojTeGH9h_E:WEg1qsgvE3k:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=xojTeGH9h_E:WEg1qsgvE3k:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=xojTeGH9h_E:WEg1qsgvE3k:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=xojTeGH9h_E:WEg1qsgvE3k:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/xojTeGH9h_E" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/macosx_javascript_service.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/macosx_javascript_service.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
         <pubDate>Fri, 07 Oct 2011 02:32:13 +0900</pubDate>
      </item>
            <item>
         <title>PhoneGap 1.1.0とSafariでJavaScriptの速度比較してみたメモ</title>
         <description>&lt;p&gt;
iOSの4.3で導入されたNitroエンジンが5ではUIWebViewでも使えるようになるのではとの記事を見つけたので&lt;a href="http://www.phonegap.com/"&gt;PhoneGap&lt;/a&gt;とSafariでJavaScriptの性能にどれくらいの差があるのかと思い軽く調べてみました。PhoneGapはUIWebViewがベースで、SafariはNitro(JIT)装備の比較になります。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;iPad (初代)&lt;/li&gt;
	&lt;li&gt;iOS最新版(iOS 5.0)&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;PhoneGap1.1.0&lt;/li&gt;
	&lt;li&gt;Xcode 4.1&lt;br /&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
アプリはindex.htmlに&lt;a href="http://www.webkit.org/perf/sunspider/sunspider.html"&gt;SunSpider JavaScript Benchmark&lt;/a&gt;へのリンクを張っただけの単純なもの。
&lt;/p&gt;
結果...Totalだけを記載すると
&lt;ul&gt;
	&lt;li&gt;Safari&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2886.3ms&lt;/li&gt;
	&lt;li&gt;PhoneGap&amp;nbsp;&amp;nbsp;&amp;nbsp; 9498.4ms&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
その差は約3.3倍。同じテストをiPhone 3GSで走らせるとやはり3.5倍ほどPhoneGapの方が遅い。残念ながらJITは使われていませんね。
&lt;/p&gt;
少し調べてみるとどうやら4.3以降ではメモリにmprotectでPROT_EXECをセット出来るらしいのだが、普通には無理なようです。
&lt;ul&gt;
	&lt;li&gt;&lt;a href="https://gist.github.com/855607"&gt;Demonstrates we can now support limited JIT compilation on recent versions of iOS (assuming Apple approves entitlements at some future point) &amp;mdash; Gist&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
ここまでわかっていながら出来ないのはなんとも。LuaJITもiOSのアプリに組み込めますが名前に反してJIT機能は無理。iOS4から5になっても状況はあまり変わらない。
&lt;/p&gt;
&lt;p&gt;
セキュリティのためとはいえキビシイですねえ。
&lt;/p&gt;
&lt;p&gt;
&lt;br /&gt;
と、これだけでは何なのでPhoneGap 1.1.0で外部サイトへのリンクを使う場合にご注意。
&lt;/p&gt;
&lt;p&gt;
ドキュメントにも書いてあるのですが、1.0と違いPhonegapアプリ内のリンクで外部サイトへ飛びたい場合white-listに追加しておかないと動作しません。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Xcodeで&amp;lt;Project&amp;gt;/Supporting Files/PhoneGap.plist内のExternalHostsキーに&amp;quot;Add Row&amp;quot;して&amp;quot;*.webkit.org&amp;quot;等とホスト名を追加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
です。少しはまったので。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WH0goaIQFN-S2kma8yNWh_QE0_g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WH0goaIQFN-S2kma8yNWh_QE0_g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WH0goaIQFN-S2kma8yNWh_QE0_g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WH0goaIQFN-S2kma8yNWh_QE0_g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=2Y9IQqRpE-Q:RIOdIPG2dF8:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=2Y9IQqRpE-Q:RIOdIPG2dF8:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=2Y9IQqRpE-Q:RIOdIPG2dF8:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=2Y9IQqRpE-Q:RIOdIPG2dF8:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/2Y9IQqRpE-Q" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/phonegap_110safarijavascript.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/phonegap_110safarijavascript.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Web</category>
                  <category domain="http://www.sixapart.com/ns/types#category">iPhone/iPad</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Apple</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">iPad</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">iPhone</category>
        
         <pubDate>Thu, 06 Oct 2011 23:55:16 +0900</pubDate>
      </item>
            <item>
         <title>Steve Jobs氏ご逝去</title>
         <description>&lt;p&gt;
とうとうApple社創業者Steve Jobs氏がガンでお亡くなりになったようです。武勇伝の多いIT業界でもダントツのカリスマ性を持ち、ついには世界1にまで上り詰めた稀有な方でした。Apple社のキーノート等で英語の得意でない私でも理解できる素晴らしいプレゼンがもう見れないかと思うと残念です。
&lt;/p&gt;
&lt;p&gt;
学生時代にAppleII (とその互換機)を見たのが始まりで、初代Macを最初に触った時には白黒ビットマップディスプレイながらの表現力の素晴らしさと洗練されたUIに驚いたものです。
&lt;/p&gt;
&lt;p&gt;
Jobs氏、Apple社の作る製品を楽しみに、またその紆余曲折を興味をもって見てきた一人として感慨深く。Apple社の一番いい時期にお亡くなりになったということもまた彼らしいとも言えるかもしれませんが、個人的には一つの時代の区切りを感じざるを得ません。
&lt;/p&gt;
&lt;p&gt;
心からご冥福をお祈りいたします。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5ZpATtqMapIrXr3nGccQHfN2FQI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ZpATtqMapIrXr3nGccQHfN2FQI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5ZpATtqMapIrXr3nGccQHfN2FQI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5ZpATtqMapIrXr3nGccQHfN2FQI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=T89o8jkvFUE:N015WjTpaiY:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=T89o8jkvFUE:N015WjTpaiY:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=T89o8jkvFUE:N015WjTpaiY:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=T89o8jkvFUE:N015WjTpaiY:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/T89o8jkvFUE" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/10/steve_jobs.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/10/steve_jobs.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">PC</category>
                  <category domain="http://www.sixapart.com/ns/types#category">iPhone/iPad</category>
                  <category domain="http://www.sixapart.com/ns/types#category">独り言</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Apple</category>
        
         <pubDate>Thu, 06 Oct 2011 14:23:33 +0900</pubDate>
      </item>
            <item>
         <title>JavaScript+Smalltalk(ObjectiveC)=JSTalkをいじってみる</title>
         <description>&lt;p&gt;
JavaScriptにObjective C/Smalltalk的な拡張を追加してMacOSXのスクリプティングに使用できるOSSのJSTalk。面白そうなのですが日本語の情報が殆ど無いので少しメモ。
&lt;/p&gt;
&lt;p&gt;
似たようなコンセプトのモノにJSCocoaやCapputinoのObjective Jがありますが、JSTalkが最もスクリプト言語的(といっていいのか)でお手軽です。マイナーで完成度はこれからという感じで軽微な問題はありますが、今のところ大きな不具合はなく使えています。私のようにAppleScriptになかなか馴染めない人には面白い選択肢ではないかと思います。
&lt;/p&gt;
&lt;h4&gt;インストール等&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;MacのApp Storeから&amp;quot;&lt;a href="http://itunes.apple.com/jp/app/jstalk-editor/id416348607?mt=12"&gt;JSTalk Editor&lt;/a&gt;&amp;quot;を入手可能 (フリー)&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://jstalk.org/"&gt;JSTalk: Index&lt;/a&gt;-- 本家サイト&lt;/li&gt;
	&lt;li&gt;&lt;a href="https://github.com/ccgus/jstalk"&gt;ccgus/jstalk - GitHub&lt;/a&gt;-- githubのソースリポジトリ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
まずは本家のパッケージにも含まれますがApp Storeから落とせるJSTalk Editorを入れてみます。AppleScript Editorライクに試せるエディタで動作確認をすぐに行なえます。
&lt;/p&gt;
&lt;p&gt;
コマンドラインからスクリプトとして使うためには本家パッケージ内のjstalkコマンドを手動で/usr/local/binあたりにコピー。
&lt;/p&gt;
&lt;h4&gt;簡単な説明と例&lt;/h4&gt;
&lt;p&gt;
基本的な文法はJavaScriptですが、Objective C的に&amp;#39;[]&amp;#39;で括ってメッセージ式が記述できます。以下は最初にeditorを開いたときに出てくるHello Worldです。[]の中はほとんどObjective Cと同じような感じということがわかると思います。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
var message = &amp;quot;Hello World!&amp;quot;;&lt;br /&gt;
[[JSTalk application:&amp;quot;JSTalk Editor&amp;quot;] displayDialog:message];
&lt;/div&gt;
&lt;h4&gt;iTunesのプレイリストをダンプしてみる&lt;/h4&gt;
&lt;p&gt;
Hello WorldだけではなんなのでiTunesをスクリプティングしてみます。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
var iTunes = [SBApplication application:&amp;quot;iTunes&amp;quot;];&lt;br /&gt;
var sources = [iTunes sources];　// iTunes.sources();とも書ける&lt;br /&gt;
var numSources = [sources count];&lt;br /&gt;
&lt;br /&gt;
var src = sources[0];&lt;br /&gt;
var playlists = [src playlists];&lt;br /&gt;
var numPlayList = [playlists count];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; numPlayList; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var playlist = playlists[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(&amp;quot;&amp;nbsp;&amp;nbsp; &amp;quot; + i + &amp;quot;:&amp;quot; + [playlist name]+&amp;quot; &amp;quot;+[playlist specialKind]);&lt;br /&gt;
}
&lt;/div&gt;
&lt;h4&gt;コマンドラインから使ってみる(iTunesの曲リストを表示)&lt;/h4&gt;
&lt;p&gt;
コマンドラインから引数をとったりする方法です。#!記法が使えますが、JSTalk Editorではエラーになるのでテスト時は先頭行は//してください。またEditor内のスクリプトで[NSApp terminate ]等とするとEditor自身が終了してしまうのでご注意。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
#!/usr/local/bin/jstalk&lt;br /&gt;
// 引数を文字列に変換しておく(例)&lt;br /&gt;
var av&amp;nbsp;&amp;nbsp; = NSProcessInfo.processInfo().arguments();&lt;br /&gt;
var argc = av.count(); // 0:jstalk, 1:scriptの情報, 2〜:引数&lt;br /&gt;
var argv = new Array();&lt;br /&gt;
for (var i = 0; i &amp;lt; argc; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; argv[i] = av[i].UTF8String();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; print(&amp;quot;arg[&amp;quot;+i+&amp;quot;] = &amp;quot; + argv[i]);&lt;br /&gt;
}&lt;br /&gt;
// ... 引数の処理をしたりする&lt;br /&gt;
// がここでは使わないので無視して
&lt;/div&gt;
&lt;div class="yourclass01"&gt;
// iTunesのMusicをリストしてみる&lt;br /&gt;
&lt;/div&gt;
&lt;div class="yourclass01"&gt;
var iTunes = [SBApplication application:&amp;quot;iTunes&amp;quot;];&lt;br /&gt;
var sources = iTunes.sources();&lt;br /&gt;
var numSources = [sources count];&lt;br /&gt;
&lt;br /&gt;
var src = sources[0];&lt;br /&gt;
var playlists = [src playlists];&lt;br /&gt;
var numPlayList = [playlists count];&lt;br /&gt;
&lt;br /&gt;
for (var i = 0; i &amp;lt; numPlayList; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var playlist = playlists[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var kind = [playlist specialKind];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (kind == 1800630362) { // 直値で適当過ぎだが...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(i + &amp;quot;:&amp;quot; + [playlist name]);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var tracks = [playlist tracks];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var n = [tracks count];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (j = 0; j &amp;lt; n; j++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t = tracks[j];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print( ([t enabled] ? &amp;quot; v &amp;quot; : &amp;quot;&amp;nbsp;&amp;nbsp; &amp;quot;) + j + &amp;quot; [&amp;quot; + [t name] + &amp;quot;]&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // [t setEnabled: false]などとするとチェックを外すことが出来る&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/div&gt;
&lt;p&gt;
保存したスクリプトは&amp;quot;jstalk hoge.jstalk&amp;quot;などとして実行可能です。ちゃんと弄ればmp4のタグを設定したりも出来ると思います(多分)
&lt;/p&gt;
&lt;h4&gt;最後に&lt;/h4&gt;
&lt;p&gt;
JavaScriptにもAppleScriptにも不慣れなのでコードが稚拙なのはご勘弁下さい。&lt;br /&gt;
AppleScript EditorでライブラリのsdefとAppleのScripting Bridgeのドキュメントを見つつ書けばさほど難しくはないと思います。メッセージはAppleScriptと少し異なるので注意。値をセットするにはsetHoge。また文字列等の扱いが微妙なのでJavaScriptの型への変換は適宜考慮した方が良さそうです。
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;JS実行環境といえばやはりnode.js(v8)。あちらはリソースも大量にあるので、JSTalk言語 to Pure JavaScriptのトランスレータを作るか、node.jsベースになればもっと面白い事も簡単に出来そうですし、普及するかもしれないと思いつつ。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eCKtC2RrM6rlJImEPuKxt5OoRMU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eCKtC2RrM6rlJImEPuKxt5OoRMU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eCKtC2RrM6rlJImEPuKxt5OoRMU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eCKtC2RrM6rlJImEPuKxt5OoRMU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=g6aIZJ_mrYo:BHmX1nZcGCI:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=g6aIZJ_mrYo:BHmX1nZcGCI:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=g6aIZJ_mrYo:BHmX1nZcGCI:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=g6aIZJ_mrYo:BHmX1nZcGCI:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/g6aIZJ_mrYo" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/09/javascriptsmalltalkobjectivecj.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/09/javascriptsmalltalkobjectivecj.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
                  <category domain="http://www.sixapart.com/ns/types#category">iPhone/iPad</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Apple</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">mac</category>
        
         <pubDate>Fri, 30 Sep 2011 12:43:30 +0900</pubDate>
      </item>
            <item>
         <title>greasemonkey+websocket+node.js+prowlでブラウザからiPhoneに通知してみる</title>
         <description>&lt;p&gt;
Firefoxのgreasemonkey(scriptish)からwebsocketでnode.jsのサーバと通信して、ブラウザでチェックしたWebサイトの変更やアクションなどをgrowlでローカル通知したりProwl経由でiPhoneに通知を送りつけてみたのでメモ。
&lt;/p&gt;
&lt;p&gt;
承前。webサイト毎に独自のjavascriptを走らせて色々なことが出来る便利なgreasemonkey(scriptish)ですが、なにかと制限がキツく外部との連携は結構大変でした。でWebSocketは使えるかどうか試してみると無事node.jsのwebsocketと通信出来ました。
&lt;/p&gt;
&amp;nbsp;環境:
&lt;ul&gt;
	&lt;li&gt;MacOSX 10.7.1 Lion&lt;/li&gt;
	&lt;li&gt;Firefox 6/7&lt;/li&gt;
	&lt;li&gt;Scriptish (greasemonkey互換のスクリプト環境)&lt;/li&gt;
	&lt;li&gt;node.js (0.4.12 = macportsで入るもの)&lt;/li&gt;
	&lt;li&gt;websocket (firefox6はdraft07 branch, 7は最新版)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Greasemonkey側:スクリプト内に適当に通信部分を追加
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
&amp;nbsp; var socket = MozWebSocket(&amp;quot;http://localhost:8080&amp;quot;);&lt;br /&gt;
&amp;nbsp; socket.onopen = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket.send(&amp;quot;HogeHoge&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket.onclose = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // alert(&amp;quot;Socket has been closed!&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; socket = null;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp; }
&lt;/div&gt;
&lt;p&gt;
サーバ側:(Firefox6は少し古いdraft対応なので以下のようにdraft07対応のwebsocketをインストール)
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
&amp;nbsp; git clone https://github.com/Worlize/WebSocket-Node.git -b draft-07 &amp;nbsp;
&lt;/div&gt;
&lt;p&gt;
落としてきたWebSocket-NodeをNODE_PATHの通った所にコピー
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
&amp;nbsp; cp -p&amp;nbsp; WebSocket-Node /opt/local/lib/node_modules/websocket-draft07
&lt;/div&gt;
&lt;p&gt;
Firefox7以降では対応するdraftが新しくなっているのでnpmで入れたものやgitの先頭で使えます。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
&amp;nbsp;sudo npm install websocket -g
&lt;/div&gt;
&lt;p&gt;
サーバスクリプト: websocketのサンプルを適当に弄ったモノ&lt;br /&gt;
&amp;nbsp; ProwlのAPI KeyはProwlサイトにアカウントを作れば取得できます。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
var WebSocketServer = require(&amp;#39;websocket-draft07&amp;#39;).server;　// firefox7以降なら-draft07は不要&lt;br /&gt;
&lt;/div&gt;
&lt;div class="yourclass01"&gt;
var http = require(&amp;#39;http&amp;#39;);&lt;br /&gt;
var growl = require(&amp;#39;growl&amp;#39;); // 要growlnotifyコマンド&lt;br /&gt;
var Prowl = require(&amp;#39;prowl&amp;#39;).Prowl;&lt;br /&gt;
var prowl = new Prowl(&amp;#39;&amp;lt;YOUR PROWL API KEY&amp;gt;&amp;#39;);&lt;br /&gt;
&lt;br /&gt;
var server = http.createServer(function(request, response) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log((new Date()) + &amp;quot; Received request for &amp;quot; + request.url);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.writeHead(404);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; response.end();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
server.listen(8080, function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.log((new Date()) + &amp;quot; Server is listening on port 8080&amp;quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&lt;br /&gt;
webSocket_server = new WebSocketServer({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; httpServer: server,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; autoAcceptConnections: true&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&lt;br /&gt;
webSocket_server.on(&amp;#39;connect&amp;#39;, function(connection) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.on(&amp;#39;message&amp;#39;, function(message) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (message.type === &amp;#39;utf8&amp;#39;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; msg = message.utf8Data;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; growl.notify(&amp;quot;XXX&amp;quot;+msg);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var data = { priorify: Prowl.NORMAL, application: &amp;#39;prowl-test&amp;#39;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event: &amp;#39;Hoge&amp;#39;, description: msg };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prowl.add(data, function(status) { console.log(&amp;quot;msg: &amp;quot;+msg); };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
結構簡単に通信できるのでマッシュアップ的な使い方やページの更新や機能追加等に便利そうです。本家GreasemonkeyとChromeでも試してみようと思いつつ。ただ思い切りクロスサイトで通信出来てしまうようなので、かなり注意が必要だと思います。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-T_yFsXENmovEytGa48Rvw7efc0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-T_yFsXENmovEytGa48Rvw7efc0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-T_yFsXENmovEytGa48Rvw7efc0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-T_yFsXENmovEytGa48Rvw7efc0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=wy9YdFRqM0c:oPpxuEyhmAg:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=wy9YdFRqM0c:oPpxuEyhmAg:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=wy9YdFRqM0c:oPpxuEyhmAg:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=wy9YdFRqM0c:oPpxuEyhmAg:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/wy9YdFRqM0c" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/09/greasemonkeywebsocketnodejspro.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/09/greasemonkeywebsocketnodejspro.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Web</category>
                  <category domain="http://www.sixapart.com/ns/types#category">iPhone/iPad</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">JavaScript</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">chrome</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">firefox</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">iPhone</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">web</category>
        
         <pubDate>Tue, 27 Sep 2011 16:05:49 +0900</pubDate>
      </item>
            <item>
         <title>MacPortsのmacfuse関連がfuse4xに置き換わった模様</title>
         <description>&lt;p&gt;
Linux発祥のユーザ空間で走るファイルシステムのベースfuseのMacOSX版ですが、開発が止まっているmacfuseのfolkでLion, 64bitに対応したfuse4xがやっとMacPortsでまともに使えるようになったようなのでメモ。fuse4x自体はしばらく前から入っていましたが、関連するfsがmacfuseベースのままでした。今日？のアップデートでやっとfuse4xを使うようになっているようです。
&lt;/p&gt;
&lt;p&gt;
全部はチェックしていませんがざっとみる限りほとんどがfuse4xに置き換わっているようなので、個人的に欲しかったencfsとmhddfsやsshfs, ext2fuse, ntfs-3g等をインストールしてみました。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo port selfupdate&lt;br /&gt;
sudo port -uc upgrade outdated&lt;br /&gt;
sudo port install fuse4x encfs sshfs ...&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
古いMacFuseやEncFS等を使っていた場合コンパイルで問題が出たりしますので、Google Codeから落としたものはまずシステム環境設定のMacFuseでuninstallを行いパネルも削除、/usr/local以下のencfsとfuse関係のファイルをきれいにしておいてください。
&lt;/p&gt;
&lt;p&gt;
インストールするfsによってはboostやら色々インストールされるので時間が少々かかりますが無事インストール完了。
&lt;/p&gt;
&lt;p&gt;
encfsはDropbox等のオンラインストレージと併用すると仮にサービス側のセキュリティが破られても一定のセキュリティが確保出来るので少し安心です。Linuxのものとも互換性があるので相互に比較的セキュアにデータのやり取りが出来ます。
&lt;/p&gt;
&lt;p&gt;
またmhddfsはunionfsと似た機能で2つ以上のファイルシステムを重ねることが出来るので、ディスク増設時やSSDとHDDを重ねる等の使い方ができて面白いかもしれません。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OoYC268q0vIYgrkjJu3T-WoFKO8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoYC268q0vIYgrkjJu3T-WoFKO8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OoYC268q0vIYgrkjJu3T-WoFKO8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OoYC268q0vIYgrkjJu3T-WoFKO8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Br1SAcvpMVA:qGQ9KQ9Co9U:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Br1SAcvpMVA:qGQ9KQ9Co9U:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Br1SAcvpMVA:qGQ9KQ9Co9U:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=Br1SAcvpMVA:qGQ9KQ9Co9U:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/Br1SAcvpMVA" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/09/macports_fuse4x_encfs_ext2fuse_etc.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/09/macports_fuse4x_encfs_ext2fuse_etc.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
        
         <pubDate>Sun, 04 Sep 2011 17:57:32 +0900</pubDate>
      </item>
            <item>
         <title>MacOSX LionでTerminalが復帰した時zshとsshでディレクトリを復帰させるメモ</title>
         <description>&lt;p&gt;
MacOSX Lionではアプリの再起動を行う際以前の状態を戻してくれる機能が備わるようになりましたが、Terminal.appでもタブが復帰しbashは閉じる前のディレクトリに復帰してくれます。
&lt;/p&gt;
&lt;p&gt;
ところがzsh, sshでは残念ながら同じことは出来ないので、どうにかできないか調べてみたメモ。
&lt;/p&gt;
&lt;h4&gt;zshをresumeさせるには&lt;/h4&gt;
&lt;p&gt;
まずzshではできないものか探してみるとbashでは/etc/bashrcにマジックがあったようで、同じ事を.zshrcに追加することで同じように閉じる以前のディレクトリに戻るようになるとのこと。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://superuser.com/questions/313650/resume-zsh-terminal-os-x-lion"&gt;terminal.app - Resume Zsh-Terminal (OS X Lion) - Super User&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
ほとんど書くことない感じでそのまま動きます。
&lt;/p&gt;
&lt;h4&gt;sshでもディレクトリを復帰させるには&lt;/h4&gt;
&lt;p&gt;
sshでも元いたディレクトリに復帰して欲しいと思ったのでやり方を思案してみました。少し不恰好ですがTERM_SESSION_IDを使ってディレクトリをファイルに記録しておくことに。
&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Terminal.appでsshを開く際にshellは復帰されるが実行していたコマンドまではresumeしないので&amp;quot;新規コマンド&amp;quot;を使って開く
	か、[環境設定]-&amp;gt;[設定]で起動時にsshを起動するエントリを追加作成(Basicをコピーすると楽)し開くようにする&lt;br /&gt;
	&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;サーバ側には公開キーを渡す等してパスワード無しでログイン出来るようにしておく&lt;br /&gt;
	&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;サーバ側の.zshrcには上のリンクの設定は入れないで.zprofileに以下の設定を入れる&lt;br /&gt;
	ついでにタイトルのホスト名も表示しとく&lt;br /&gt;
	&lt;br /&gt;
	&lt;div class="yourclass01" style="font-size: x-small"&gt;
	if [[ $TERM_PROGRAM == &amp;quot;Apple_Terminal&amp;quot; ]] &amp;amp;&amp;amp; [[ -z &amp;quot;$INSIDE_EMACS&amp;quot; ]] {&amp;nbsp; [[ -e .ZPWD_$TERM_SESSION_ID ]] &amp;amp;&amp;amp; cd `cat .ZPWD_$TERM_SESSION_ID`&lt;br /&gt;
	&amp;nbsp; function chpwd {&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; local SEARCH=&amp;#39; &amp;#39;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; local REPLACE=&amp;#39;%20&amp;#39;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; local PWD_URL=&amp;quot;file://$HOST${PWD//$SEARCH/$REPLACE}&amp;quot;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; printf &amp;#39;\e]7;%s\a&amp;#39; $PWD_URL&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; [[ -n &amp;quot;$SSH_CLIENT&amp;quot; ]] &amp;amp;&amp;amp; echo $PWD &amp;gt; ~/.ZPWD_$TERM_SESSION_ID&lt;br /&gt;
	&amp;nbsp; }&lt;br /&gt;
	&amp;nbsp; find ~ -maxdepth 1 -mtime +7&amp;nbsp; -name .ZPWD\* -exec rm {} \;&lt;br /&gt;
	&amp;nbsp; chpwd&lt;br /&gt;
	}&lt;br /&gt;
	if [[ -n $PS1 ]]; then&lt;br /&gt;
	&amp;nbsp; h=$HOST&lt;br /&gt;
	&amp;nbsp; echo -n -e &amp;quot;\033]0;$h\007&amp;quot;&lt;br /&gt;
	&amp;nbsp; alias chtitle=&amp;#39;echo -n -e &amp;quot;\033]0;$@\007&amp;quot;&amp;#39;&lt;br /&gt;
	fi&lt;br /&gt;
	&lt;br /&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;サーバに環境変数のTERM_PROGRAMとTERM_SESSION_IDを渡すようにする
	&lt;ol&gt;
		&lt;li&gt;サーバ側の/etc/sshd_config
		&lt;div class="yourclass01"&gt;
		113: AcceptEnv LANG LC_* TERM_PROGRAM
		TERM_SESSION_ID
		&lt;/div&gt;
		&lt;/li&gt;
		&lt;li&gt;クライアント側の/etc/ssh_config
		&lt;div class="yourclass01"&gt;
		21:&amp;nbsp; SendEnv LANG LC_* TERM_PROGRAM
		TERM_SESSION_ID
		&lt;/div&gt;
		&lt;/li&gt;
	&lt;/ol&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
以上でTerminalコマンドが再起動してもssh先で元いたディレクトリに復帰するようになります。普通にログアウトして同じ端末から再ログインしても元いたディレクトリにcdしてしまうのでご注意。
&lt;/p&gt;
&lt;p&gt;
bashでも/etc/bashrcを参考に.bash_profile等に記述すれば同じことが出来ると思います。
&lt;/p&gt;
&lt;p&gt;
ホームディレクトリに.ZPWD_XXXというファイルがどんどん増えるのが問題なので一週間たつと消すようにしています。適当にいじってください。
&lt;/p&gt;
&lt;p&gt;
追記:.zprofile追加スクリプトにミスがあったので修正
&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7ZPq6MpjuqPKaIbt0X1tB-K11hM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7ZPq6MpjuqPKaIbt0X1tB-K11hM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7ZPq6MpjuqPKaIbt0X1tB-K11hM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7ZPq6MpjuqPKaIbt0X1tB-K11hM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=to5b0S_U8xY:bTETV_VlH1o:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=to5b0S_U8xY:bTETV_VlH1o:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=to5b0S_U8xY:bTETV_VlH1o:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=to5b0S_U8xY:bTETV_VlH1o:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/to5b0S_U8xY" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/08/macosx_lion_terminal_resume_ssh_and_zsh.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/08/macosx_lion_terminal_resume_ssh_and_zsh.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
         <pubDate>Thu, 18 Aug 2011 23:36:36 +0900</pubDate>
      </item>
            <item>
         <title>Linuxのファイルをデフラグするshakeを使ってみる</title>
         <description>&lt;p&gt;
Linuxのext3/ext4ファイルシステムはフラグメントに強いと言われていますが、ファイルシステムである以上発生しないものでもありません。特に長期間使い続けていると気になるものです。
&lt;/p&gt;
&lt;p&gt;
Windows標準機能の様なディスク全体のデフラグではなくファイル単位で行うもので、マウントしているファイルシステムでも使用中でないファイルであればデフラグを行うことが出来るshakeを試して見たのでメモ。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://vleu.net/shake/"&gt;Vleu.net: ShAkE&lt;/a&gt;-- 本家サイト&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;インストール&lt;/h4&gt;
&lt;ol&gt;
	&lt;li&gt;Debian/Ubuntu&lt;br /&gt;
	sudo apt-get install libattr1 libattr1-dev cmake help2man&lt;/li&gt;
	&lt;li&gt;Redhat/CentOS&lt;br /&gt;
	sudo yum install libattr libattr-devel cmake help2man&lt;br /&gt;
	&lt;/li&gt;
	&lt;li&gt;wget http://download.savannah.nongnu.org/releases/shake/shake-0.999.tar.bz2&lt;/li&gt;
	&lt;li&gt;tar xvfj shake-0.999.tar.bz2&lt;/li&gt;
	&lt;li&gt;cd shake-fs-0.999/build&lt;/li&gt;
	&lt;li&gt;cmake ..&lt;/li&gt;
	&lt;li&gt;make&lt;/li&gt;
	&lt;li&gt;sudo make install&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;使い方&lt;/h4&gt;
&lt;p&gt;
1. フラグメントのチェック
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo shake -pvv file or dir
&lt;/div&gt;
&lt;p&gt;
又は
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
filefrag file&lt;br /&gt;
&lt;/div&gt;
&lt;p&gt;
ファイルシステム全体は
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
fsck -vnf &amp;lt;FS&amp;gt;
&lt;/div&gt;
&lt;p&gt;
フラグメントの多いファイルは以下の様にしてチェック(1を適当に大きく)
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo shake -pvv dir | awk &amp;#39;$4 &amp;gt; 1&amp;#39;
&lt;/div&gt;
&lt;p&gt;
2. デフラグ&lt;br /&gt;
&lt;br /&gt;
shakeは作成からの時間やファイルサイズなどでデフラグを行うかどうかを選択出来ますので強制的にデフラグするには以下の様に。ディレクトリを指定すると再帰的にファイルを全て行うようです。試していませんがディスク全体を行わせると効率が上がるようです。&lt;br /&gt;
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo shake -vv --old=0 -T0 file or dir
&lt;/div&gt;
&lt;br /&gt;
xattr関係でエラーが出たりした場合には-Xをつけてみてください。&lt;br /&gt;
試しに107のextentに分かれているファイルをshakeしてみると51に減りました。結果のファイルをcompareしましたが一致しました。
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
3. その他&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
引数でファイル名、ディレクトリ名を省略すると標準入力からファイル名を読み込むのでfindやフィルタと組み合わせることも可能です。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
ls -1 *.mp4 | sudo shake -pvv
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;h4&gt;感想など&lt;/h4&gt;
&lt;p&gt;
このツールはファイルをリライトすることでフラグメントを減少させているので必ずしもいい結果となるかどうかはわからないのですが、面白そうなので気になるfsに使ってみることにします。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vIB_SvLlWoYCiyffi_JSnsyVJIk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vIB_SvLlWoYCiyffi_JSnsyVJIk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vIB_SvLlWoYCiyffi_JSnsyVJIk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vIB_SvLlWoYCiyffi_JSnsyVJIk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=vB54-3AQ6mM:ZSCHDvYht_c:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=vB54-3AQ6mM:ZSCHDvYht_c:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=vB54-3AQ6mM:ZSCHDvYht_c:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=vB54-3AQ6mM:ZSCHDvYht_c:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/vB54-3AQ6mM" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/08/linux_defrag_shake.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/08/linux_defrag_shake.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">CentOS</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Linux</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Ubuntu</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">CentOS</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Linux</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Ubuntu</category>
        
         <pubDate>Wed, 17 Aug 2011 02:03:17 +0900</pubDate>
      </item>
            <item>
         <title>MacOSX Lionでswapを止める方法のメモ</title>
         <description>&lt;p&gt;
MacMiniのサーバを購入し、8GBにメモリを増設して使っているのですが起動しっぱなしにしているとさほどメモリを使うようなことはしていないにも関わらず最大3GBものSwapファイルが出来ているではありませんか。これはちょっとなんなので試しにLionにアップデートしたMacBook AirでSnow Leopardでの方法をそのまま試してみました。
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.browncat.org/2010/10/macosx_snow_leopardswap.html"&gt;MacOSX Snow Leopardのswapを止めたりいじったりするメモ (blog@browncat.org)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
manなどで確認した限りSnow Leopardと変わっていないようですが、やり方を再度簡単に書くと
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
&lt;/div&gt;
&lt;p&gt;
再起動してswapが使われていないのを確認したら
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo rm /private/var/vm/swapfile*
&lt;/div&gt;
&lt;p&gt;
念のためもう一回再起動(必要ないかも)
&lt;/p&gt;
&lt;p&gt;
これで無事swapファイルができなくなりました。またスリープ・復帰も無事行われています。
&lt;/p&gt;
&lt;p&gt;
swapを有効にするにはunloadをloadにしてlaunchctlを行う。
&lt;/p&gt;
&lt;div class="yourclass01"&gt;
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
&lt;/div&gt;
&lt;p&gt;
以上です。
&lt;/p&gt;
&lt;p&gt;
元々SSDでサクサクなAirでは体感的にはあまりわかりませんが遅くはなっていません(当たり前か)。サーバでもSwapを止めて24時間位走らせていますが今のところ大丈夫なようです。サーバはhddのタイプなので体感的に反応が良くなったのが実感出来ます。&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
安定性やその他の不具合があるかどうかはまだわからないのでしばらく使ってみることにします。
&lt;/p&gt;
&lt;p&gt;
追記:メモリ4GBでChromeでタブを開きまくりつつスリープで使い続けているとシステムが一回固まりました。普段だと問題ないレベルなのでやはり使用には注意が必要なようです。Chromeなかなか64bit版も出ないしfirefoxに変えようかなぁと思いつつ。
&lt;/p&gt;
&lt;p&gt;
追記2: やはりswapを止めた状態でメモリを使い切るとシステムが固まったり不安定になりますのでご注意。ちなみにFirefoxはメモリ管理がかなり良くなってきてますね。タブを大量に開くとChromeと比べて劇的に少ないメモリで動作すると思います。
&lt;/p&gt;
&lt;p&gt;
追記3: スリープで使い続けていると使用中メモリが増えてきますので時折Firefoxを再起動、本体を週一回再起動位のペースで安定稼働。ヘビーな使い方をするならばswapが必要。サーバは8GBで安定。
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fOgV750flHx6AwEBtVrIT9gDyCM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fOgV750flHx6AwEBtVrIT9gDyCM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fOgV750flHx6AwEBtVrIT9gDyCM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fOgV750flHx6AwEBtVrIT9gDyCM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=SugoNyUiOTk:yMoYojmNZzc:spdCosxkSQE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=spdCosxkSQE" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=SugoNyUiOTk:yMoYojmNZzc:OAQBO0PjnPA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=OAQBO0PjnPA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=SugoNyUiOTk:yMoYojmNZzc:fqmcRPSHgvs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=fqmcRPSHgvs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.browncat.org/~ff/BlogAtBrowncatOrg?a=SugoNyUiOTk:yMoYojmNZzc:NxMb_nMRk0A"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogAtBrowncatOrg?d=NxMb_nMRk0A" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogAtBrowncatOrg/~4/SugoNyUiOTk" height="1" width="1"/&gt;</description>
         <link>http://blog.browncat.org/2011/08/macosx_lion_stop_swap.html</link>
         <guid isPermaLink="false">http://blog.browncat.org/2011/08/macosx_lion_stop_swap.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Mac</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Mac</category>
        
         <pubDate>Sun, 14 Aug 2011 01:43:42 +0900</pubDate>
      </item>
      
   </channel>
</rss>

