<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Go towards a Word-Progress</title>
	<atom:link href="http://wordprogress.org/feed" rel="self" type="application/rss+xml" />
	<link>http://wordprogress.org</link>
	<description>　～言霊とプログラム言語の共進化!?</description>
	<lastBuildDate>Fri, 22 Jan 2010 03:37:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>これはキテル!? 新フレームワークRangoの件</title>
		<link>http://wordprogress.org/archives/944</link>
		<comments>http://wordprogress.org/archives/944#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:04:48 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=944</guid>
		<description><![CDATA[Rango。このブログに書くと、一見、名前的にGoのフレームワークのように思ってしまうかもしれないが、ruby 1.9の新フレームワーク。
で、Djangoにヒントを得たフレームワークで・・・と聞くと今度はバッタモンのように思えてしまうかもしれないが、なかなかどうして優れものな感じ。Rack/Bundle/Tilt対応、といったあたりでピンとくるひとまだ少ないかもしれないが、これ、rails 3.0キラーとなりうる実力を持っているのかも(すまない、しばし解説略)。
気になった方はRango rubyあたりでググッてくだされ。(かなり)個人的には、web.goと同様にmustacheを使えるのが気に入った。
mustacheテンプレートを例に、Tiltだけご紹介(といってもTiltのテストコードをカンニングしたもの):
	gem install tilt mustacheして、irbにて、以下を叩こう。
	※スマンソ　コード整形のプラグインが壊れてる模様なので、ただ文字列を羅列
&#160;
require &#39;tilt&#39;
require &#39;mustache&#39;
template = Tilt::MustacheTemplate.new { &#124;t&#124; &#34;Hello World!&#34; }
	template.render
template = Tilt::MustacheTemplate.new { &#34;&#60;p&#62;Hey {{name}}!&#60;/p&#62;&#34; }
	template.render(nil, :name =&#62; &#39;Joe&#39;)
&#160;
#このyieldはちょっとかっこいい
template = Tilt::MustacheTemplate.new { &#34;&#60;p&#62;Hey {{yield}}!&#60;/p&#62;&#34; }
	template.render { &#39;Joe&#39; }
&#160;
#ビューのロジックと見た目の分離・・とのこと
&#160;&#160;module Views
	&#160;&#160; &#160; &#160;class Foo &#60; Mustache
	&#160;&#160; &#160; &#160; &#160; &#160; attr_reader :foo
	&#160;&#160; &#160; &#160;end
	&#160;&#160;end
&#160;&#160;
template = Tilt::MustacheTemplate.new(&#39;foo.mustache&#39;) { &#34;&#60;div&#62;Hey {{foo}}!&#60;/div&#62;&#34; }
	scope = [...]]]></description>
			<content:encoded><![CDATA[<p>Rango。このブログに書くと、一見、名前的にGoのフレームワークのように思ってしまうかもしれないが、ruby 1.9の新フレームワーク。</p>
<p>で、Djangoにヒントを得たフレームワークで・・・と聞くと今度はバッタモンのように思えてしまうかもしれないが、なかなかどうして優れものな感じ。Rack/Bundle/Tilt対応、といったあたりでピンとくるひとまだ少ないかもしれないが、これ、rails 3.0キラーとなりうる実力を持っているのかも(すまない、しばし解説略)。</p>
<p>気になった方はRango rubyあたりでググッてくだされ。(かなり)個人的には、web.goと同様にmustacheを使えるのが気に入った。</p>
<p>mustacheテンプレートを例に、Tiltだけご紹介(といってもTiltのテストコードをカンニングしたもの):<br />
	gem install tilt mustacheして、irbにて、以下を叩こう。<br />
	※スマンソ　コード整形のプラグインが壊れてる模様なので、ただ文字列を羅列</p>
<p>&nbsp;</p>
<p>require &#39;tilt&#39;</p>
<p>require &#39;mustache&#39;</p>
<p>template = Tilt::MustacheTemplate.new { |t| &quot;Hello World!&quot; }<br />
	template.render</p>
<p>template = Tilt::MustacheTemplate.new { &quot;&lt;p&gt;Hey {{name}}!&lt;/p&gt;&quot; }<br />
	template.render(nil, :name =&gt; &#39;Joe&#39;)</p>
<p>&nbsp;</p>
<p>#このyieldはちょっとかっこいい</p>
<p>template = Tilt::MustacheTemplate.new { &quot;&lt;p&gt;Hey {{yield}}!&lt;/p&gt;&quot; }<br />
	template.render { &#39;Joe&#39; }</p>
<p>&nbsp;</p>
<p>#ビューのロジックと見た目の分離・・とのこと</p>
<p>&nbsp;&nbsp;module Views<br />
	&nbsp;&nbsp; &nbsp; &nbsp;class Foo &lt; Mustache<br />
	&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; attr_reader :foo<br />
	&nbsp;&nbsp; &nbsp; &nbsp;end<br />
	&nbsp;&nbsp;end</p>
<p>&nbsp;&nbsp;</p>
<p>template = Tilt::MustacheTemplate.new(&#39;foo.mustache&#39;) { &quot;&lt;div&gt;Hey {{foo}}!&lt;/div&gt;&quot; }<br />
	scope = Object.new<br />
	scope.instance_variable_set(:@foo, &#39;Jane!&#39;)<br />
	template.render(scope)</p>
<p>実行結果は、地味に一瞬で得られるので、自らお試しを～</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/944/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(ネタ)　GoでForthで日本語プログラミングなのだ。</title>
		<link>http://wordprogress.org/archives/938</link>
		<comments>http://wordprogress.org/archives/938#comments</comments>
		<pubDate>Sun, 17 Jan 2010 20:54:47 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Go]]></category>
		<category><![CDATA[Forth]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=938</guid>
		<description><![CDATA[Go上で実装された最初の言語はどうやらForthっぽい。
http://github.com/ArtemTitoulenko/GoForth/
マイノリティ言語好きのくせにForthはノーチェックだったのでちょっとググってみる。
	日本語をForthにコンパイルする日本語プログラミング言語Mindという先達が今も気を吐いているのに驚いた(Mindで書かれた商用の全文検索がばりばり現役)
	・・・ので、せっかくだから「擬似日本語=&#62;Forth =&#62;Goコード」というものをやってみようかと。
日本語は簡単な文字列の置換でそこそこforthコードを吐き出せるらしい。試しに書いてみた
&#8212;-(日本語コード)&#8212;#ループカウンタ「i」は事前定義とのこと
変数sum
	0をsumに代入
	50以下について、
	&#160;&#160; &#160; &#160;「sumを参照し、iと足して、sumに代入する。」
	というループ。
&#8212;-(自動変換後のForthコード)&#8212;

variable sum
0 sum !
50 0 do &#160; &#160;&#160;
&#160;&#160;sum @ &#160;i + &#160; sum ! &#160; &#160;
&#160;&#160; loop&#160;
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
&#160;
単発ネタのつもりだったが、日本語で並列処理を書けたら面白いかもしれないので、
もう少し追いかけてみようかな。
アセンプラとの親和性が売りらしいForth、果たして、Goとどう組み合わせるべきか。
&#160;

]]></description>
			<content:encoded><![CDATA[<p>Go上で実装された最初の言語はどうやらForthっぽい。</p>
<p><a href="http://github.com/ArtemTitoulenko/GoForth/">http://github.com/ArtemTitoulenko/GoForth/</a></p>
<p>マイノリティ言語好きのくせにForthはノーチェックだったのでちょっとググってみる。<br />
	日本語をForthにコンパイルする日本語プログラミング言語Mindという先達が今も気を吐いているのに驚いた(Mindで書かれた商用の全文検索がばりばり現役)<br />
	・・・ので、せっかくだから「擬似日本語=&gt;Forth =&gt;Goコード」というものをやってみようかと。</p>
<p>日本語は簡単な文字列の置換でそこそこforthコードを吐き出せるらしい。試しに書いてみた</p>
<p>&#8212;-(日本語コード)&#8212;#ループカウンタ「i」は事前定義とのこと</p>
<p><span style="color:#800000;">変数sum<br />
	0をsumに代入<br />
	50以下について、<br />
	&nbsp;&nbsp; &nbsp; &nbsp;「sumを参照し、iと足して、sumに代入する。」<br />
	というループ。</span></p>
<p>&#8212;-(自動変換後のForthコード)&#8212;</p>
<div>
<div><span style="color:#f00;">variable sum</span></div>
<div><span style="color:#f00;">0 sum !</span></div>
<div><span style="color:#f00;">50 0 do &nbsp; &nbsp;&nbsp;</span></div>
<div><span style="color:#f00;">&nbsp;&nbsp;sum @ &nbsp;i + &nbsp; sum ! &nbsp; &nbsp;</span></div>
<div><span style="color:#f00;">&nbsp;&nbsp; loop&nbsp;</span></div>
<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</div>
<div>&nbsp;</div>
<div>単発ネタのつもりだったが、日本語で並列処理を書けたら面白いかもしれないので、</div>
<div>もう少し追いかけてみようかな。</div>
<div>アセンプラとの親和性が売りらしいForth、果たして、Goとどう組み合わせるべきか。</div>
<div>&nbsp;</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/938/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Golangのアップデートについて</title>
		<link>http://wordprogress.org/archives/929</link>
		<comments>http://wordprogress.org/archives/929#comments</comments>
		<pubDate>Wed, 13 Jan 2010 00:59:25 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Go]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=929</guid>
		<description><![CDATA[・・・なんと、Golangのアップデートについて書いた投稿を更新時に、WordPressのアップデートの影響によってか消えてしまった。。。 まぁ、golangの公式アップデートは半月に一回ぐらいで、以下のようやるんだけれどけっこう時間がかかるねぇというお話だった。
$ cd $GOROOT/src
$ hg pull
$ hg update release
$ make all
&#160;
で、問題はWindowsでGolang MLでもちょこちょこ議論されているところなんだけど、書いたことが消えちゃったし、問題は解決できるわけでもないので、取り急ぎ。ここまで(汗)。。。
]]></description>
			<content:encoded><![CDATA[<p>・・・なんと、Golangのアップデートについて書いた投稿を更新時に、WordPressのアップデートの影響によってか消えてしまった。。。 まぁ、golangの公式アップデートは半月に一回ぐらいで、以下のようやるんだけれどけっこう時間がかかるねぇというお話だった。</p>
<p>$ cd $GOROOT/src</p>
<p>$ hg pull</p>
<p>$ hg update release</p>
<p>$ make all</p>
<div>&nbsp;</div>
<div>で、問題はWindowsでGolang MLでもちょこちょこ議論されているところなんだけど、書いたことが消えちゃったし、問題は解決できるわけでもないので、取り急ぎ。ここまで(汗)。。。</div>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/929/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows AzureでもGAEでも、もちろんVPSでも動作する・・ @ 「本気クラウド勉」その3</title>
		<link>http://wordprogress.org/archives/924</link>
		<comments>http://wordprogress.org/archives/924#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:09:13 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[Redis DB]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[SproutCore]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=924</guid>
		<description><![CDATA[年末に、Booをいじくってたころ時のエントリから思っていたことなのだが、少なくともこれから数年はけっこういけてるサービスをVPSで提供してるぜぇという話には事欠かないと思う。江島氏の「スケールアウトからスケールアップへの回帰」を読んで、けっこうな数の人がこのことを再確認したと思う。
少なくとも、特定のクラウドに依存しすぎちゃうと危険かもよというハナシには説得力がある。
てなわけで、クラウド勉などといいつつも、年末年始に主にいじくっていたのは、快適になりすぎてる感のあるNginx(webサーバ)とRedis-db(KVS)。こいつらがいると只のクラウドじゃ勝ち目がないんでは。。
ということで、クラウドのお勉強も、Windows AzureでもGAEでも、もちろんVPSでも動作するwebフレームワークにしたい。。。
即答で、それってDjangoでいいんじゃね、とのささやきが。Djangoくらいになると、たいていの情報に事欠かないものねぇ。(RailsだとGAEあたりで逆に苦労しそうと・・・偏見かもしれないが思っている)。
NginxもRedis-dbも実績あるみたいだし、GAEならKayでいけばいいし、Windows AzureならNWSGI経由で何とかなるかもしらんなど、クラウド対応もばっちり。
・・・すまん、長門Compojure、涙目でこっちを見ないでくれ。
後は、フロントエンドをHTML5対応のSproutCoreにすれば、本気クラウド勉の体をなす。
そのうえで、管理系やらなにやらをSproutCOreからSilverlight+ PureMVCあたりにおきかえてみたり・・・と妄想してみる今日この頃。
まぁ、Nginx+Redis-db+SproutCoreあたりで、Django on VPS、まずは来月くらいに動作させませう。
で、クラウドにする時に何をどう置き換えるのかといったあたりから、クラウド勉。
・・・とはいえ、平行してAzureでもいじくっておくかと思ったが、VS2010β2&#038;マニュアルのダウンロード時間があまりに長すぎて、やる気が失せた。
・・・なので、そういやNginx+Redis-db+SproutCore、こいつら、golangとの組み合わせで、一通り動いているなぁ、と思いつつ惰眠する。
]]></description>
			<content:encoded><![CDATA[<p>年末に、<a href="http://wordprogress.org/archives/879">Booをいじくってたころ時のエントリ</a>から思っていたことなのだが、少なくともこれから数年はけっこういけてるサービスをVPSで提供してるぜぇという話には事欠かないと思う。江島氏の「<a href="http://japan.cnet.com/blog/kenn/2010/01/12/entry_27036420/">スケールアウトからスケールアップへの回帰</a>」を読んで、けっこうな数の人がこのことを再確認したと思う。</p>
<p>少なくとも、特定のクラウドに依存しすぎちゃうと危険かもよというハナシには説得力がある。</p>
<p>てなわけで、クラウド勉などといいつつも、年末年始に主にいじくっていたのは、快適になりすぎてる感のあるNginx(webサーバ)とRedis-db(KVS)。こいつらがいると只のクラウドじゃ勝ち目がないんでは。。<br />
ということで、クラウドのお勉強も、Windows AzureでもGAEでも、もちろんVPSでも動作するwebフレームワークにしたい。。。</p>
<p>即答で、それってDjangoでいいんじゃね、とのささやきが。Djangoくらいになると、たいていの情報に事欠かないものねぇ。(RailsだとGAEあたりで逆に苦労しそうと・・・偏見かもしれないが思っている)。</p>
<p>NginxもRedis-dbも実績あるみたいだし、GAEならKayでいけばいいし、Windows AzureならNWSGI経由で何とかなるかもしらんなど、クラウド対応もばっちり。<br />
・・・すまん、<del datetime="2010-01-12T14:39:19+00:00">長門</del>Compojure、涙目でこっちを見ないでくれ。<br />
後は、フロントエンドをHTML5対応のSproutCoreにすれば、本気クラウド勉の体をなす。<br />
そのうえで、管理系やらなにやらをSproutCOreからSilverlight+ PureMVCあたりにおきかえてみたり・・・と妄想してみる今日この頃。</p>
<p>まぁ、Nginx+Redis-db+SproutCoreあたりで、Django on VPS、まずは来月くらいに動作させませう。<br />
で、クラウドにする時に何をどう置き換えるのかといったあたりから、クラウド勉。<br />
・・・とはいえ、平行してAzureでもいじくっておくかと思ったが、VS2010β2&#038;マニュアルのダウンロード時間があまりに長すぎて、やる気が失せた。<br />
・・・なので、そういやNginx+Redis-db+SproutCore、こいつら、golangとの組み合わせで、一通り動いているなぁ、と思いつつ惰眠する。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/924/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>「本気クラウド勉」その2 BooなsilverlightでprotocolBufferをホゲるまで</title>
		<link>http://wordprogress.org/archives/879</link>
		<comments>http://wordprogress.org/archives/879#comments</comments>
		<pubDate>Sun, 27 Dec 2009 14:53:43 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[クラウド]]></category>
		<category><![CDATA[Boo]]></category>
		<category><![CDATA[Protocol Buffer]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=879</guid>
		<description><![CDATA[クラウドの実サービスは、2010年末くらいでいいだろうとタカをくくって、2009年末からクラウドのお勉強を開始した本シリーズ。
=======================
[追記]
 　　本エントリとあんま関係ないが、ホットエントリな、こちらの 「ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない」&#38;「ウェブ業界の15年、これからの10年」のエントリにほぼ全面賛同。
『　　中規模(おおよそ、1000万PV/月程度？)までは１台でがんばる覚悟を決める。ある程度以上の規模になると思ったら、コンパイル言語を使ってアプリを書く&#38;必要に応じ十分なスペックのマルチコアマシンを速攻買える予算を用意しておく。』が、2010年代のCOST-EFFECTIVEな考え方なのでは、と。で、それ以上になる or 負荷の変動がかなり大きいと見込まれる場合には、クラウドというソリューションを採用することになるかと。(おそらく、大多数のweb案件ではクラウド対応が必須となることは当面ない。なので、コスト面にあまり差がなければ、当座、普通のサーバかクラウドかは気分で選んでいいくらい、かと)。
 　　なんだかんだいって、cpuのマルチコア化やバス周りの高速化はまだまだ進むわけで、、2015年くらいになると、中途半端な複数台構成技術は、「滅多に必要とならない」のかなと思う。。その頃になると、Map-ReduceやNOSQLを使いこなす技術もそこそこ枯れてきて、「自分好みのクラウドを、大きく外さず使うテクニック」が、大多数のWeb屋にとって普通のスキルとなるんだろうな。
 ・・・もちろん、クラウドなんて自前でもっといいの作るぜ、とか「普通な奴らをぶっ飛ばせ」とかいう勢いのあるWeb屋がいちばんかっこいいんだけど。
 
 =======================
2010年末に「まぁ、あり」だと思われるサービスの提供形態のひとつが、
 サーバ側Google App Engine で、クライアントがsilverlightというRIA型クラウドアプリ。
(Windows Azureの話はそのうちに。)
これを、Google App Engine for Python + silverlight on Booで組むと、だいたいスクリプトっぽいし、実行速度もそこそこでいけるのではと狸の皮算用中。
ついでに、両者の通信プロトコルは、Google protocol Bufferにしておけば、他の言語への取替えもきいていい感じかなと
 ＊あと、もちろん、SOAPなんかを使う場合と比べて、実用上十分に早いぞ、と。
ということで、今回ははじめてまともに触るBooでSilverlight&#38;Protocol Bufferしてみた。
大きくはまることはなかったが、寄り道・脱線しまくりで半日かかってしまった。。
[1] BooとPythonの違い
Python激似と、たまに話題となる.Net上のコンパイル言語Boo。とりあえず、Booのチュートリアルなんかをヒントにbooiでいろいろ試してみる。
# Booのスライス　日本語の扱いを除くとPythonと完全互換
str ="こんにちは。Hello, World"

print str[0:6]
print str[6:11]
print str[:-5]
# BooのmutableかつAnyなリスト　AddはC#風
lst = [1, 'two', 3.0, "four"]
lst.Add(5)
lst.Add("six")
for c in lst:
    print c
わかったこと :


Pythonと命令や関数なんかはかなり似ている。
が、Booは静的型付けな言語なので、関数の引数やジェネリックへの対応は必要である他、メソッドがC#風(例、appendでなくAdd)。
Python使いな人はここでBooにいらつくんだろうか(個人的にも、pythonと同様のメソッド名も採用してほしい・・・)。
とはいえ、C#より圧倒的にスクリプト風味なBoo。もしかするとPython以外のスクリプト言語ユーザーにおすすめかもしれない。


[2] Boo+NAntでSilverlight
日本語プログで唯一、Booをきちんと書いているのではと思われるこちらの方のエントリで、速攻動いた。
NAntも勉強させてもらったので、感謝。ただ、NAmtは今では、完全にMSBuildにくわれてしまったのかなぁ。。
[3] Boo+protobuf-netでProtocol Buffer
Google謹製のProtocol BufferにC#界隈の人々がけっこう熱心に取り組んでいるのは前からしっていた。ので、C#がわかれば、あとは、protobuf-netあたりを使えば、そっこうBooでもProtocol Bufferできるだろうと思ったのだが、、、Boo言語入門をまともにしていないので、ちまちまはまった・・・が、なんとかなった。。。
はじめに、protobuf-netについてくるprotogen.exeをつかって、以下の.protoファイルからC#ソースを生成
package tutorial;

message Person [...]]]></description>
			<content:encoded><![CDATA[<p>クラウドの実サービスは、2010年末くらいでいいだろうとタカをくくって、2009年末からクラウドのお勉強を開始した本シリーズ。<br />
=======================<br />
<em><span style="color: #800000;"><strong>[追記]<br />
</strong><span style="font-style: normal;"> 　　本エントリとあんま関係ないが、ホットエントリな、こちらの 「</span><a href="http://d.hatena.ne.jp/kazuhooku/20091226/1261838127"><span style="font-style: normal;">ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない</span></a><span style="font-style: normal;">」&amp;「</span></span><a href="http://d.hatena.ne.jp/kazuhooku/20091227/1261900135"><span style="color: #000080;"><span style="font-style: normal;">ウェブ業界の15年、これからの10年</span></span></a><span style="color: #800000;"><span style="font-style: normal;">」のエントリにほぼ全面賛同。<br />
『</span><strong><span style="font-style: normal;">　　中規模(おおよそ、1000万PV/月程度？)までは１台でがんばる覚悟を決める。ある程度以上の規模になると思ったら、コンパイル言語を使ってアプリを書く&amp;必要に応じ十分なスペックのマルチコアマシンを速攻買える予算を用意しておく。</span></strong><span style="font-style: normal;">』が、2010年代のCOST-EFFECTIVEな考え方なのでは、と。で、それ以上になる or 負荷の変動がかなり大きいと見込まれる場合には、クラウドというソリューションを採用することになるかと。(おそらく、大多数のweb案件ではクラウド対応が必須となることは当面ない。なので、コスト面にあまり差がなければ、当座、普通のサーバかクラウドかは気分で選んでいいくらい、かと)。</span></span></em></p>
<p><span style="color: #800000;"> 　　なんだかんだいって、cpuのマルチコア化やバス周りの高速化はまだまだ進むわけで、、<strong>2015年くらい</strong>になると、中途半端な複数台構成技術は、「滅多に必要とならない」のかなと思う。。その頃になると、Map-ReduceやNOSQLを使いこなす技術もそこそこ枯れてきて、「<strong>自分好みのクラウドを、大きく外さず使うテクニック</strong>」が、大多数のWeb屋にとって<strong>普通のスキル</strong>となるんだろうな。</span></p>
<p><em><span style="color: #800000;"> ・・・もちろん、クラウドなんて自前でもっといいの作るぜ、とか「普通な奴らをぶっ飛ばせ」とかいう勢いのあるWeb屋がいちばんかっこいいんだけど。<br />
</span> </em><span style="color: #800000;"><br />
</span> =======================</p>
<p>2010年末に「まぁ、あり」だと思われるサービスの提供形態のひとつが、<br />
<strong> サーバ側Google App Engine で、クライアントがsilverlightというRIA型クラウドアプリ</strong>。<br />
(Windows Azureの話はそのうちに。)</p>
<p>これを、<strong>Google App Engine for Python + silverlight on Boo</strong>で組むと、だいたいスクリプトっぽいし、実行速度もそこそこでいけるのではと狸の皮算用中。<br />
ついでに、両者の通信プロトコルは、<a href="http://code.google.com/p/protobuf/">Google protocol Buffer</a>にしておけば、他の言語への取替えもきいていい感じかなと<br />
<em> ＊あと、もちろん、SOAPなんかを使う場合と比べて、実用上十分に早いぞ、と。</em></p>
<p>ということで、今回ははじめてまともに触るBooでSilverlight&amp;Protocol Bufferしてみた。<br />
大きくはまることはなかったが、寄り道・脱線しまくりで半日かかってしまった。。</p>
<h2>[1] BooとPythonの違い</h2>
<p>Python激似と、たまに話題となる.Net上のコンパイル言語Boo。とりあえず、<a href="http://boo.codehaus.org/Tutorials">Booのチュートリアル</a>なんかをヒントにbooiでいろいろ試してみる。</p>
<pre class="brush:python"># Booのスライス　日本語の扱いを除くとPythonと完全互換
str ="こんにちは。Hello, World"

print str[0:6]
print str[6:11]
print str[:-5]
# BooのmutableかつAnyなリスト　AddはC#風
lst = [1, 'two', 3.0, "four"]
lst.Add(5)
lst.Add("six")
for c in lst:
    print c</pre>
<p><span style="text-decoration: underline;">わかったこと :</span></p>
<blockquote>
<ul>
<li>Pythonと命令や関数なんかはかなり似ている。</li>
<li>が、Booは静的型付けな言語なので、関数の引数やジェネリックへの対応は必要である他、メソッドがC#風(例、appendでなくAdd)。<br />
Python使いな人はここでBooにいらつくんだろうか(個人的にも、pythonと同様のメソッド名も採用してほしい・・・)。</li>
<li>とはいえ、C#より圧倒的にスクリプト風味なBoo。もしかするとPython以外のスクリプト言語ユーザーにおすすめかもしれない。</li>
</ul>
</blockquote>
<h2>[2] Boo+NAntでSilverlight</h2>
<p>日本語プログで唯一、Booをきちんと書いているのではと思われる<a href="http://d.hatena.ne.jp/coma2n/20090206/1233904958">こちらの方のエントリ</a>で、速攻動いた。<br />
NAntも勉強させてもらったので、感謝。ただ、NAmtは今では、完全にMSBuildにくわれてしまったのかなぁ。。</p>
<h2>[3] Boo+protobuf-netでProtocol Buffer</h2>
<p>Google謹製のProtocol BufferにC#界隈の人々がけっこう熱心に取り組んでいるのは前からしっていた。ので、C#がわかれば、あとは、<a href="http://code.google.com/p/protobuf-net/">protobuf-net</a>あたりを使えば、そっこうBooでもProtocol Bufferできるだろうと思ったのだが、、、Boo言語入門をまともにしていないので、ちまちまはまった・・・が、なんとかなった。。。<br />
はじめに、protobuf-netについてくるprotogen.exeをつかって、以下の.protoファイルからC#ソースを生成</p>
<pre class="brush:python">package tutorial;

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

message AddressBook {
  repeated Person person = 1;
}</pre>
<hr />ん～、protobuf-net、ぜんぜん、ドキュメントが整備されてないなぁ。とりあえず、protogen &#8211;helpしてコマンドの打ち方をクリア。</p>
<p>で、生成されたcsファイルからdllを生成。お試し用の以下のような.projファイルを作って、msbuildする。</p>
<pre class="brush:xml">&lt;!-- ======== MsBuild .projファイル(文字コードはutf-8) ========= --&gt;
&lt;Project DefaultTargets="build"   xmlns="http://schemas.microsoft.com/developer/msbuild/2003"&gt;
    &lt;!-- =========== プロパティ ========== --&gt;    &lt;PropertyGroup&gt;
        &lt;ProjectName&gt;MyProtoBuf&lt;/ProjectName&gt;
    &lt;/PropertyGroup&gt;
    &lt;!-- ======= アイテムグループ ======== --&gt;
    &lt;ItemGroup&gt;
        &lt;CSFile Include="**\*.cs"/&gt;
        &lt;Reference Include="*.dll"/&gt;
    &lt;/ItemGroup&gt;
    &lt;!-- =========== ターゲット ========== --&gt;
    &lt;Target Name="build" &gt;
        &lt;CSC   Sources="@(CSFile)"   References="@(Reference)"  OutputAssembly="$(ProjectName).dll"  TargetType="library" /&gt;
    &lt;/Target&gt;&lt;
/Project&gt;</pre>
<p>.\protobufsrc\test&gt;msbuild msbuild.proj</p>
<p><em>Microsoft (R) Build Engine Version 3.5.30729.1<br />
[Microsoft .NET Framework, Version 2.0.50727.4200]<br />
Copyright (C) Microsoft Corporation 2007. All rights reserved.</em></p>
<p><em>2009/12/27 18:24:15 にビルドを開始しました。</em></p>
<p><em>ビルドに成功しました。<br />
0 警告<br />
0 エラー</em><br />
よし,MyProtoBuf.dllがでけた。ということで、いよいよBooでいじくってみる。まずは、REPLなbooishで<br />
.\protobufsrc\test&gt;booish -resource MyProtoBuf.dll protobuf-net.dll</p>
<p><em>Welcome to booish, an interactive interpreter for the boo programming language.<br />
Running boo 0.9.2.3383 on CLR 2.0.50727.4200.</em></p>
<p><em>Enter boo code in the prompt below (or type /help).<br />
Adding reference to &#8216;MyProtoBuf.dll&#8217;<br />
Adding reference to &#8216;protobuf-net.dll&#8217;</em></p>
<p>・・・あれ、これ、・・・といろいろ悩むがもはやドキュメントはあてにせず、protobuf-netのソースをたどりつつ、以下の感じで、まずはProtocol Bufferベースのシリアライズ・デシリアライズができた。</p>
<pre class="brush:python">import tutorial
import System.IO

person = Person()
person.id = 1234
person.name = "My name is  Hige."
person.email = "hige@example.com"

#バイナリで書き出し
file = File.Create("person.bin")
ProtoBuf.Serializer.Serialize(file, person)
file.Close()
#バイナリからオブジェクトを復元
f2 = File.OpenRead("person.bin")
newPerson = ProtoBuf.Serializer.Deserialize[of Person](f2)
print newPerson.name</pre>
<p>その後は、これとほぼ同様に、</p>
<ul>
<li>インタプリタ環境で実行<br />
#booi -r:ProtoBuf.dll -r:protobuf-net.dll person.boo</li>
<li>コンパイルして実行<br />
#booc -r:ProtoBuf.dll -r:protobuf-net.dll -r:Boo.Lang.dll person.boo</li>
</ul>
<p>おおっはじめて、booでexeを作った。</p>
<p>ということで、<br />
「[4] いよいよsilverlightでProtocolBuffer」、クラウドとsilverlightでバイナリ通信するぜ・・・といくところなのだが、まともなアプリにするには一晩かかりそうな気がするので、このあたりで、いったん休憩。</p>
<p><strong>今回の成果 :</strong><br />
C#とBooの関係は、予想通り、JavaとScalaの関係に近い。≒まぁ、なんとかなる。<br />
問題は、C#やBooを扱っているブロガーな人々がだいぶ少ないこと。<br />
ん～、自分が人柱になれってことかぁ。まぁ、2010年の楽しみができたと。<br />
=====================<br />
[おまけ]<br />
気力がつきた時のあいまにやった。PythonでProtocol Bufferについて。実行ログだけ。ほとんど、<a href="http://d.hatena.ne.jp/Voluntas/20080711/1215736060">こちらの方</a>のいいなりでできた。多謝。<br />
まぁ、Boo版と比較してみると、Python v.s. Booぽくなってちょっといいかも。</p>
<p>$ cd protobuf-2.2.0a<br />
$ ./configure &#8211;prefix=/opt/google<br />
$ make<br />
$ sudo make install<br />
$ cd python<br />
$ export PATH=/opt/google/bin:$PATH<br />
$ sudo python setup.py install<br />
$ protoc -I=. &#8211;python_out=. addressbook.proto<br />
$sudo easy_install ipython</p>
<p>以下、ipythonでしばしばホゲる。<br />
$ipython -cl</p>
<pre class="brush:python">import addressbook_pb
person = addressbook_pb.Person()
person.id = 1234
person.name = "My name is  Hige."
person.email = "hige@example.com"
phone = person.phone.add()
phone.number = "555-4321"
phone.type = addressbook_pb.Person.HOME
#書き込み
f= open('adr.pb','w')
f.write(person.SerializeToString())
f.close() #()はpythonでは省略不可
#読み出し
str = open('adr.pb').read()
tmp = addressbook_pb.Person()
tmp.ParseFromString(str)</pre>
<p>当然ながら、PythonでもProtocolBufferのシリアライズ・デシリアライズできた、と。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/879/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GoのSinatra風フレームワーク(?)web.goでハローワールド＋α</title>
		<link>http://wordprogress.org/archives/868</link>
		<comments>http://wordprogress.org/archives/868#comments</comments>
		<pubDate>Thu, 24 Dec 2009 14:07:03 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[Go]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=868</guid>
		<description><![CDATA[12月に入ってから、開発が続けられているGolangのSinatra風フレームワーク(?)web.go。
http://github.com/hoisie/web.go
ビルドには、最新版のgolangが必要。特徴は、バイナリにコンパイルして実行するから高速とのこと。クリスマスイブの夜に、VPSでいきなり80番開放してテストしてみる。
今晩はハローワールドのみ。
package main

import (
    "fmt"
    "web"
)

func hello(val string) string {
 return fmt.Sprintf("こんにちは、世界 %s", val)
}

func main() {
    web.Get("/(.*)", hello)
    web.Run("0.0.0.0:80")
}
キモは、「web.Get(&#8220;/(.*)&#8221;, hello)」のところで、関数helloにurlの/以下のユーザーが入力した値が渡される。

Golang開発チームからのクリスマスプレゼントで、プログラム中にセミコロンを書かかなくとも良くなった(ほとんどの場合)。省略ルールの詳細は押さえていないが、「スクリプト風言語」にいよいよGolangも仲間入りした気がするなぁ。

実行結果は以下の通り :
[入力]
http://MyDomain.jp/。メリークリスマス!!
[出力]
こんにちは、世界 。メリークリスマス!!
とりあえず、web.go、UTF-8でソースを書けば、日本語込みで動作するよ、との報告まで。
Sinatra風か・・・どうかはこれから検証予定(POSTも動作している模様)
・・・おそらく、web.go これからもけっこう変化するんだろうけれど、これからに期待ということで。
]]></description>
			<content:encoded><![CDATA[<p>12月に入ってから、開発が続けられているGolangのSinatra風フレームワーク(?)web.go。</p>
<p><a href="http://github.com/hoisie/web.go">http://github.com/hoisie/web.go</a></p>
<p>ビルドには、最新版のgolangが必要。特徴は、バイナリにコンパイルして実行するから高速とのこと。クリスマスイブの夜に、VPSでいきなり80番開放してテストしてみる。<br />
今晩はハローワールドのみ。</p>
<pre class="brush:c">package main

import (
    "fmt"
    "web"
)

func hello(val string) string {
 return fmt.Sprintf("こんにちは、世界 %s", val)
}

func main() {
    web.Get("/(.*)", hello)
    web.Run("0.0.0.0:80")
}</pre>
<p>キモは、「<strong>web.Get(&#8220;/(.*)&#8221;, hello)</strong>」のところで、関数helloにurlの/以下のユーザーが入力した値が渡される。</p>
<ul>
<li><em>Golang開発チームからのクリスマスプレゼントで、プログラム中にセミコロンを書かかなくとも良くなった(ほとんどの場合)。省略ルールの詳細は押さえていないが、「スクリプト風言語」にいよいよGolangも仲間入りした気がするなぁ。</em></li>
</ul>
<p>実行結果は以下の通り :<br />
[入力]</p>
<p>http://MyDomain.jp/。メリークリスマス!!</p>
<p>[出力]<br />
こんにちは、世界 。メリークリスマス!!</p>
<p>とりあえず、web.go、UTF-8でソースを書けば、日本語込みで動作するよ、との報告まで。<br />
Sinatra風か・・・どうかはこれから検証予定(POSTも動作している模様)<br />
・・・おそらく、web.go これからもけっこう変化するんだろうけれど、これからに期待ということで。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/868/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GAE for Python向きのIDE? PyScripter</title>
		<link>http://wordprogress.org/archives/865</link>
		<comments>http://wordprogress.org/archives/865#comments</comments>
		<pubDate>Thu, 24 Dec 2009 04:47:22 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[IDE]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=865</guid>
		<description><![CDATA[Pythonやるなら、独自のインデントをうまく補ってくれるIDEが欲しくなる。
Windowsユーザーの場合、いまのとこ、ちょっと古めのPython2.5系を強制するGAEと組み合わせるなら、ちょっと古めのPyScripterがいいのではと思っていたり。2006年で開発止まっているのが若干不安だが、インデントさくさく補完は快感。Pythonのコードは・・・自分がさらすまでもなくWebに良いコードが一杯転がってるね。いや、かなりメジャーだぜPython(世界的には)。
Python3.xにGAEが対応するとかがあったら、その時にIDEはまた考えよう。
]]></description>
			<content:encoded><![CDATA[<p>Pythonやるなら、独自のインデントをうまく補ってくれるIDEが欲しくなる。</p>
<p>Windowsユーザーの場合、いまのとこ、ちょっと古めのPython2.5系を強制するGAEと組み合わせるなら、ちょっと古めのPyScripterがいいのではと思っていたり。2006年で開発止まっているのが若干不安だが、インデントさくさく補完は快感。Pythonのコードは・・・自分がさらすまでもなくWebに良いコードが一杯転がってるね。いや、かなりメジャーだぜPython(世界的には)。</p>
<p>Python3.xにGAEが対応するとかがあったら、その時にIDEはまた考えよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/865/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本気のクラウド・アプリを１年半後に作り上げるためのお勉強メモ(略して「本気クラウド勉」)　その１</title>
		<link>http://wordprogress.org/archives/858</link>
		<comments>http://wordprogress.org/archives/858#comments</comments>
		<pubDate>Thu, 24 Dec 2009 03:37:36 +0000</pubDate>
		<dc:creator>kyon</dc:creator>
				<category><![CDATA[クラウド]]></category>
		<category><![CDATA[Boo]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[涼宮ハルヒの驚愕]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=858</guid>
		<description><![CDATA[2009年後半はまさしくBuzzwordとして盛り上がったクラウド。
コンサルの人々などが精一杯語った後で訪れるであろう失望期にこそ、真の普及が始まる(・・・かもしれないし、Web2.0のような末路をたどるかもしれない)。
自分としては、2010年末のクラウドは、少なくともオードリー春日よりも売れているのではと思っているので、そろそろクラウド・アプリの構築を開始しようかと。

オードリーは嫌いでないというかむしろ好きだし、レイザーラモンHG同様、長く応援したいのだが・・・2011年頃には、「消失」映画化後に角川がブレークさせようとするであろう「佐々木」よりマイナーキャラとなっているのではと思う今日この頃。佐々木祭りは2010年のイブに期待。 

ということで、調べたもの :
◆Google App Engine(GAE)
・for Python　　　・・(1)
・for JavaVM　　　・・(2)
◆Windows Azure　　　・・(3)
ずばり、今の自分なら(1)のPythonを使う。(2)でScalaやClojureも魅力なのだが、自前でフレームワークを作る暇がなさげなので、ちょっと断念(Scalaは従来型で使い続ける)。
以下、Google App Engine for Pythonを選んだ理由を少しだけ。
まずは、永遠のパソコン少年中島氏のさすがのエントリ『Google App Engine入門：実行効率を犠牲にせずに開発効率だけを上げるテクニック』がある。Google謹製の簡易フレームワークに必要なものだけを付け加えるというセンスがlazyで素敵。・・・といって結局Djangoなんかを使うのかもだけれど。
加えて、クラウドで業務アプリに近いものを開発しようと思った場合、リッチクライアントとの組み合わせが不可欠となるのだが、この1～2年くらいでは、自分的に最高のリッチクライアント開発環境は、Boo on Silverlightであることが判明していることが大きい。

 前もどっかで書いたけど、Booは、.NET(CLR)上のPython激似のコンパイル言語。でもって、NAntなんかと組み合わせて、さくっとSilverlight開発ができる。・・・あんま勉強していないが、コンパイル言語だけあって、Booはけっこう速い(Scala並みというか、少なくともC#並み？)のでは、とも思っている。・・・勝手に最強実用言語かもしらんと思っていたり。

『Python やっちゃうけどイイよね？』とかを参考に、PythonとBooを同時に入門しちゃえば効率いいでしょ的なノリ。GAEでPythonした後、2010年の下期くらいには、AzureでBooできるならばなお良し、と。
=============
[追記] 　あ、本エントリは、クラウドの「本気のお勉強」にGAE for Pythonを使うといっているだけ。本気でアプリ実装するときが来た時には、その場で一番いけてるフレームワークを採用する予定・・・ひょっとして、GAE for Golang ???
]]></description>
			<content:encoded><![CDATA[<p>2009年後半はまさしくBuzzwordとして盛り上がったクラウド。<br />
コンサルの人々などが精一杯語った後で訪れるであろう失望期にこそ、真の普及が始まる(・・・かもしれないし、Web2.0のような末路をたどるかもしれない)。</p>
<p>自分としては、2010年末のクラウドは、少なくともオードリー春日よりも売れているのではと思っているので、そろそろクラウド・アプリの構築を開始しようかと。</p>
<ul>
<li><span style="color: #888888;">オードリーは嫌いでないというかむしろ好きだし、レイザーラモンHG同様、長く応援したいのだが・・・2011年頃には、「消失」映画化後に角川がブレークさせようとするであろう「佐々木」よりマイナーキャラとなっているのではと思う今日この頃。<strong>佐々木祭りは2010年のイブに期待</strong>。 </span></li>
</ul>
<p>ということで、調べたもの :</p>
<p><strong>◆Google App Engine(GAE)<br />
・for Python　　　・・(1)<br />
・for JavaVM　　　・・(2)<br />
◆Windows Azure　　　・・(3)</strong></p>
<p><strong>ずばり、今の自分なら(1)のPythonを使う</strong>。(2)でScalaやClojureも魅力なのだが、自前でフレームワークを作る暇がなさげなので、ちょっと断念(Scalaは従来型で使い続ける)。<br />
以下、Google App Engine for Pythonを選んだ理由を少しだけ。<br />
まずは、永遠のパソコン少年中島氏のさすがのエントリ『<a href="http://satoshi.blogs.com/life/2009/11/gdispatch_kwargs.html">Google App Engine入門：実行効率を犠牲にせずに開発効率だけを上げるテクニック</a>』がある。Google謹製の簡易フレームワークに必要なものだけを付け加えるというセンスがlazyで素敵。・・・といって結局Djangoなんかを使うのかもだけれど。<br />
加えて、クラウドで業務アプリに近いものを開発しようと思った場合、リッチクライアントとの組み合わせが不可欠となるのだが、この1～2年くらいでは、自分的に最高のリッチクライアント開発環境は、Boo on Silverlightであることが判明していることが大きい。</p>
<ul>
<li> 前もどっかで書いたけど、Booは、.NET(CLR)上のPython激似のコンパイル言語。でもって、NAntなんかと組み合わせて、さくっとSilverlight開発ができる。・・・あんま勉強していないが、コンパイル言語だけあって、Booはけっこう速い(Scala並みというか、少なくともC#並み？)のでは、とも思っている。・・・勝手に最強実用言語かもしらんと思っていたり。</li>
</ul>
<p>『<a href="http://d.hatena.ne.jp/hamatsu1974/searchdiary?word=%2a%5bPython%20%b2%f2%c0%e2%b5%ad%bb%f6%bc%d0%a4%e1%c6%c9%a4%df%5d">Python やっちゃうけどイイよね？</a>』とかを参考に、PythonとBooを同時に入門しちゃえば効率いいでしょ的なノリ。GAEでPythonした後、2010年の下期くらいには、AzureでBooできるならばなお良し、と。</p>
<p>=============</p>
<p>[追記] 　あ、本エントリは、クラウドの「本気のお勉強」にGAE for Pythonを使うといっているだけ。本気でアプリ実装するときが来た時には、その場で一番いけてるフレームワークを採用する予定・・・ひょっとして、GAE for Golang ???</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/858/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS(yum入りVPS)にGolangをインストールした。</title>
		<link>http://wordprogress.org/archives/852</link>
		<comments>http://wordprogress.org/archives/852#comments</comments>
		<pubDate>Wed, 23 Dec 2009 05:27:27 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[CentOS]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=852</guid>
		<description><![CDATA[先程VPSにyumを入れた目的は、golangを入れて、近時のアップデートについていって、ちょっくらGoのwebフレームワークを使ってみようと言うこと。
ということで、自分の場合をメモ書き (叩いたコマンドのみ):
yum install python-setuptools
easy_install mercurial
yum -y install bison gcc libc6-dev ed
cd;mkdir bin
export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=386
export PATH=$PATH:$HOME/bin
source .bashrc
hg clone -r release https://go.googlecode.com/hg/ $GOROOT
cd ./go/src
./all.bash
・・・し、しまったとx64のOSに386の環境を作ってしまった。。この場合でも、当然コンパイル&#038;リンクまではできるのね。
どうする？

(補充)
.bash_profileあたりに
export GOROOT=$HOME/go
export GOOS=linux
export GOARCH=amd64
export PATH=$PATH:$HOME/bin
と記して、
./all.bashし直すだけで無事x64環境が構築できた。
[go@gouser gosrc]$ 6g hello.go
[go@gouser gosrc]$ 6l hello2.6
[go@gouser gosrc]$ ./6.out
8gもできるから、クロスコンパイル環境になったということかな。
]]></description>
			<content:encoded><![CDATA[<p>先程VPSにyumを入れた目的は、golangを入れて、近時のアップデートについていって、ちょっくらGoのwebフレームワークを使ってみようと言うこと。</p>
<p>ということで、自分の場合をメモ書き (叩いたコマンドのみ):</p>
<div id="_mcePaste">yum install python-setuptools</div>
<div id="_mcePaste">easy_install mercurial</div>
<div id="_mcePaste">yum -y install bison gcc libc6-dev ed</div>
<div id="_mcePaste">cd;mkdir bin</div>
<div id="_mcePaste">export GOROOT=$HOME/go</div>
<div id="_mcePaste">export GOOS=linux</div>
<div id="_mcePaste">export GOARCH=386</div>
<div id="_mcePaste">export PATH=$PATH:$HOME/bin</div>
<div id="_mcePaste">source .bashrc</div>
<div id="_mcePaste">hg clone -r release https://go.googlecode.com/hg/ $GOROOT</div>
<div id="_mcePaste">cd ./go/src</div>
<div id="_mcePaste">./all.bash</div>
<p>・・・し、しまったとx64のOSに386の環境を作ってしまった。。この場合でも、当然コンパイル&#038;リンクまではできるのね。<br />
どうする？</p>
<hr/>
<p>(補充)<br />
.bash_profileあたりに<br />
export GOROOT=$HOME/go<br />
export GOOS=linux<br />
export GOARCH=amd64<br />
export PATH=$PATH:$HOME/bin<br />
と記して、<br />
./all.bashし直すだけで無事x64環境が構築できた。<br />
[go@gouser gosrc]$ 6g hello.go<br />
[go@gouser gosrc]$ 6l hello2.6<br />
[go@gouser gosrc]$ ./6.out</p>
<p>8gもできるから、クロスコンパイル環境になったということかな。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/852/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPSにyum導入。(&amp; 寝ぼけていてもやっちゃいけないこと)</title>
		<link>http://wordprogress.org/archives/847</link>
		<comments>http://wordprogress.org/archives/847#comments</comments>
		<pubDate>Wed, 23 Dec 2009 05:09:32 +0000</pubDate>
		<dc:creator>アルケー</dc:creator>
				<category><![CDATA[CentOS]]></category>
		<category><![CDATA[映画]]></category>

		<guid isPermaLink="false">http://wordprogress.org/?p=847</guid>
		<description><![CDATA[まぁ、定番のお話なのだが、備忘録ということで。
自分の場合 :
こちらの方とほぼ同一で、
OSのディストリビューション
[root@ user]# cat /etc/redhat-release
CentOS release 5.3 (Final)
OSは何ビットか
[root@user]# uname -a
Linux 2.6.18-028stab059.6 #1 SMP Fri Nov 14 14:01:22 MSK 2008 x86_64 x86_64 x86_64 GNU/Linux
RPMの置き場
http://ftp.riken.jp/Linux/centos/
はじめに、yumのRPMを入手[root@user]#cd /usr/local/src
[root@user]#mkdir yumrpm
[root@user]#cd yumrpm
[root@yumrpm]# wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm
んで、rp、m -ihv *にて足りないと言われたもの　をwgetしていく。自分の場合 :
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/m2crypto-0.16-6.el5.3.x86_64.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-metadata-parser-1.1.2-2.el5.x86_64.rpm
wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/m2crypto-0.16-6.el5.3.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-metadata-parser-1.1.2-2.el5.x86_64.rpm
入手し終えたところで :
[root@yumrpm]# rpm -ihv *

yum 入れた後、どんなことがあってもやってはいけないこと・・・
全てのアップデート
#yum update
MySQLなんかが壊れたりと、えらいめにあうとのこと。
]]></description>
			<content:encoded><![CDATA[<p>まぁ、定番のお話なのだが、備忘録ということで。</p>
<p>自分の場合 :</p>
<p><a href="http://www.hotsystems.jp/blog/archives/264">こちらの方とほぼ同一</a>で、</p>
<p>OSのディストリビューション<br />
[root@ user]# cat /etc/redhat-release<br />
CentOS release 5.3 (Final)</p>
<p>OSは何ビットか</p>
<p>[root@user]# uname -a<br />
Linux 2.6.18-028stab059.6 #1 SMP Fri Nov 14 14:01:22 MSK 2008 x86_64 x86_64 x86_64 GNU/Linux</p>
<p>RPMの置き場</p>
<p><a href="http://ftp.riken.jp/Linux/centos/">http://ftp.riken.jp/Linux/centos/</a></p>
<p>はじめに、yumのRPMを入手[root@user]#cd /usr/local/src<br />
[root@user]#mkdir yumrpm<br />
[root@user]#cd yumrpm<br />
[root@yumrpm]# wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-3.2.19-18.el5.centos.noarch.rpm</p>
<p>んで、rp、m -ihv *にて足りないと言われたもの　をwgetしていく。自分の場合 :</p>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/m2crypto-0.16-6.el5.3.x86_64.rpm</div>
<div id="_mcePaste">wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-metadata-parser-1.1.2-2.el5.x86_64.rpm</div>
<p>wget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-elementtree-1.2.6-5.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-sqlite-1.1.7-1.2.1.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/python-urlgrabber-3.1.0-5.el5.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/m2crypto-0.16-6.el5.3.x86_64.rpmwget http://ftp.riken.jp/Linux/centos/5.3/os/x86_64/CentOS/yum-metadata-parser-1.1.2-2.el5.x86_64.rpm</p>
<p>入手し終えたところで :</p>
<p><span style="font-family: Osaka, Verdana, sans-serif; line-height: 22px; color: #666666;">[root@yumrpm]# rpm -ihv *</span></p>
<p><span style="font-family: Osaka, Verdana, sans-serif; color: #666666;"><span style="line-height: 22px;"><span id="more-847"></span></span></span></p>
<p><span style="font-family: Osaka, Verdana, sans-serif; color: #666666;"><span style="line-height: 22px;"><span style="color: #7b654a; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal; font-size: 11px;">yum 入れた後、どんなことがあってもやってはいけないこと・・・</span></span></span></p>
<p>全てのアップデート<br />
#yum update</p>
<p>MySQLなんかが壊れたりと、えらいめにあうとのこと。</p>
]]></content:encoded>
			<wfw:commentRss>http://wordprogress.org/archives/847/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.770 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-21 01:54:57 -->
