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

<channel>
	<title>Kusare-Do</title>
	<atom:link href="http://www.kusare-do.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kusare-do.net</link>
	<description>音楽とかプログラミングとかバイクとか</description>
	<lastBuildDate>Thu, 10 May 2012 12:37:48 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/feed/" />
		<item>
		<title>非同期プログラミングのノウハウ</title>
		<link>http://www.kusare-do.net/2012/05/%e9%9d%9e%e5%90%8c%e6%9c%9f%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e3%83%8e%e3%82%a6%e3%83%8f%e3%82%a6/</link>
		<comments>http://www.kusare-do.net/2012/05/%e9%9d%9e%e5%90%8c%e6%9c%9f%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e3%83%8e%e3%82%a6%e3%83%8f%e3%82%a6/#comments</comments>
		<pubDate>Thu, 10 May 2012 12:37:48 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3219</guid>
		<description><![CDATA[非同期処理 必ずしも前から順番に実行されない 非同期におけるエラー処理 process.nextTickでCPUの専有を回避する &#160;]]></description>
			<content:encoded><![CDATA[<h1>非同期処理</h1>
<p>必ずしも前から順番に実行されない</p>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');

http.get({
	host: 'graph.facebook.com',
	port: 80,
	path: '/zuck'
}, function(res) {
	console.log('Got response.');
	res.on('data', function(chunk) {
		console.log('Data is successfully recieved.');
	});
	console.log('Recieved data???');
});
console.log('Got response???');
</pre>
<p>非同期におけるエラー処理</p>
<pre class="brush: jscript; title: ; notranslate">
var fs = require('fs');

fs.readFile('dummy_file.txt', function(err, data) {
	if (err) {
		console.log(err.message);
	} else {
		console.log(data);
	}
});
</pre>
<h1>process.nextTickでCPUの専有を回避する</h1>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/05/%e9%9d%9e%e5%90%8c%e6%9c%9f%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e3%83%8e%e3%82%a6%e3%83%8f%e3%82%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/05/%e9%9d%9e%e5%90%8c%e6%9c%9f%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e3%83%8e%e3%82%a6%e3%83%8f%e3%82%a6/" />
	</item>
		<item>
		<title>Node.jsプログラミングの基本</title>
		<link>http://www.kusare-do.net/2012/05/node-js%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e5%9f%ba%e6%9c%ac/</link>
		<comments>http://www.kusare-do.net/2012/05/node-js%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e5%9f%ba%e6%9c%ac/#comments</comments>
		<pubDate>Thu, 10 May 2012 11:51:57 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3216</guid>
		<description><![CDATA[HTTPサーバを動かしてみる 保存されているファイルを読み込んでみる 外部サービスのAPI(Facebookのユーザ情報を取得して表示）にアクセスしてみる ネットワークサーバを作ってみる requireとその使い方 呼び出し先 呼び出し元 &#160;]]></description>
			<content:encoded><![CDATA[<h1>HTTPサーバを動かしてみる</h1>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');
var server = http.createServer(function(req, res) {
	res.writeHead(200, {'Content-Type':'text/html'});
	res.end('&lt;h1&gt;Hello Node!&lt;/h1&gt;');
});
server.listen(8080);
console.log('server started on 8080');
</pre>
<h1>保存されているファイルを読み込んでみる</h1>
<pre class="brush: jscript; title: ; notranslate">
var fs = require('fs');

fs.readFile('./test.txt', 'utf-8', function(err, data) {
	if (err) {
		return console.log(err);
	} else {
		console.log(data);
	}
});
</pre>
<h1>外部サービスのAPI(Facebookのユーザ情報を取得して表示）にアクセスしてみる</h1>
<pre class="brush: jscript; title: ; notranslate">
var http = require('http');

http.get({
	host: 'graph.facebook.com',
	port: 80,
	path: '/zuck',
}, function(res) {
	res.setEncoding('utf-8');
	res.on('data', function(chunk) {
		console.log(chunk);
	});
}).on('error', function(e) {
	console.log('ERROR', e.message);
});
</pre>
<h1>ネットワークサーバを作ってみる</h1>
<pre class="brush: jscript; title: ; notranslate">
var net = require('net');

var server = net.createServer(function(socket) {
	console.log('connected');
	socket.write('welcome to node.js server\n');
	socket.on('data', function(data) {
		socket.write('you said ' + data);
	});
	socket.on('end', function() {
		console.log('disconnected');
	});
});

server.listen(8111);
console.log('server start listening on 8111');
</pre>
<h1>requireとその使い方</h1>
<p>呼び出し先</p>
<pre class="brush: jscript; title: ; notranslate">
exports.sample1 = function() {
	console.log(new Date());
}
</pre>
<p>呼び出し元</p>
<pre class="brush: jscript; title: ; notranslate">
var sample = require('./require_sample');
sample.sample1();
</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/05/node-js%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e5%9f%ba%e6%9c%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/05/node-js%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e3%81%ae%e5%9f%ba%e6%9c%ac/" />
	</item>
		<item>
		<title>Node.jsを動かす</title>
		<link>http://www.kusare-do.net/2012/05/node-js%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99/</link>
		<comments>http://www.kusare-do.net/2012/05/node-js%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99/#comments</comments>
		<pubDate>Thu, 10 May 2012 11:02:23 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3211</guid>
		<description><![CDATA[インストール http://nodejs.jp/nodejs.org_ja/ からインストーラ入手。 コマンドプロンプトで 簡単なプログラム hello.js &#160;]]></description>
			<content:encoded><![CDATA[<h1>インストール</h1>
<p>http://nodejs.jp/nodejs.org_ja/</p>
<p>からインストーラ入手。</p>
<p>コマンドプロンプトで</p>
<pre class="brush: plain; title: ; notranslate">
node -v

v0.7.8
</pre>
<p>簡単なプログラム</p>
<p>hello.js</p>
<pre class="brush: jscript; title: ; notranslate">
var text = 'Hello Node!';
console.log(text);
</pre>
<pre class="brush: plain; title: ; notranslate">
node hello.js
Hello Node!
</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/05/node-js%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/05/node-js%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99/" />
	</item>
		<item>
		<title>Node.js入門</title>
		<link>http://www.kusare-do.net/2012/05/node-js%e5%85%a5%e9%96%80/</link>
		<comments>http://www.kusare-do.net/2012/05/node-js%e5%85%a5%e9%96%80/#comments</comments>
		<pubDate>Thu, 10 May 2012 10:16:21 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3205</guid>
		<description><![CDATA[Node.jsとは何か JavaScriptの実行プラットフォーム 特徴と仕組み Javascriptをサーバサイドのプログラムとして実行できる 高速でスケーラブルなプログラムを書ける HTTPサーバやソケットサーバとして動作 構成要素 JavaScript実行エンジンV8と、非同期イベントライブラリのlibuvを使って動作 何故話題になっているか 非同期I/Oを簡単に扱える インターネットがよりリアルタイムな情報を扱うようになり、常時接続や一定期間待機して応答を待つポーリングなどの手法が増加している C10K問題という接続数の増大に伴うサーバリソースの枯渇が問題視されるようになった 同期I/Oサーバでは１つの接続に１つのスレッドが割り当てられ、接続に対する通信などの処理を担当する Node.jsは非同期I/Oを扱うことで、１つのスレッドで大量の接続を処理できる Node.jsは非同期を前提として動作するため、特に高度な知識や経験がなくとも非同期I/Oによるプログラミングが可能 JavaScriptである スマートフォンの登場でHTML5に対する注目度が高まり、JavaScriptも注目されるようになった スマートフォンのネイティブアプリケーションの開発にJavaScriptを使う開発フレームワークが登場]]></description>
			<content:encoded><![CDATA[<h1>Node.jsとは何か</h1>
<p>JavaScriptの実行プラットフォーム</p>
<h1>特徴と仕組み</h1>
<p>Javascriptをサーバサイドのプログラムとして実行できる</p>
<p>高速でスケーラブルなプログラムを書ける</p>
<p>HTTPサーバやソケットサーバとして動作</p>
<h1>構成要素</h1>
<p>JavaScript実行エンジンV8と、非同期イベントライブラリのlibuvを使って動作</p>
<h1>何故話題になっているか</h1>
<h2>非同期I/Oを簡単に扱える</h2>
<p>インターネットがよりリアルタイムな情報を扱うようになり、常時接続や一定期間待機して応答を待つポーリングなどの手法が増加している</p>
<p>C10K問題という接続数の増大に伴うサーバリソースの枯渇が問題視されるようになった</p>
<p>同期I/Oサーバでは１つの接続に１つのスレッドが割り当てられ、接続に対する通信などの処理を担当する</p>
<p>Node.jsは非同期I/Oを扱うことで、１つのスレッドで大量の接続を処理できる</p>
<p>Node.jsは非同期を前提として動作するため、特に高度な知識や経験がなくとも非同期I/Oによるプログラミングが可能</p>
<h2>JavaScriptである</h2>
<p>スマートフォンの登場でHTML5に対する注目度が高まり、JavaScriptも注目されるようになった</p>
<p>スマートフォンのネイティブアプリケーションの開発にJavaScriptを使う開発フレームワークが登場</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/05/node-js%e5%85%a5%e9%96%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/05/node-js%e5%85%a5%e9%96%80/" />
	</item>
		<item>
		<title>2. Pythonのインタプリタを使う</title>
		<link>http://www.kusare-do.net/2012/04/2-python%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%97%e3%83%aa%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%86/</link>
		<comments>http://www.kusare-do.net/2012/04/2-python%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%97%e3%83%aa%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%86/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 03:37:37 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3199</guid>
		<description><![CDATA[2.1. インタプリタを呼びだす Pythonのインタプリタは通常/usr/local/bin/pythonにインストールされ、有効になります。Unixシェルの/usr/local/binのサーチパスに加えるとシェルに以下のコマンドを打つことで開始できるようになります。 python インタプリタが有効となるディレクトリを選択することはインストールのオプションであるため、他の場所でも可能です。ローカルのPythonの先生やシステム管理者に確認してみてください。（例えば、/usr/local/pythonはこれ以外でよく使われる場所です） WindowsではPythonは通常C:\Python27に配置されますが、インストーラ実行時に他の場所に変更することも出来ます。あなたのパスにディレクトリを追加することで、以下のコマンドをDOSのコマンドプロンプトに打ってください。 set path=%path%;C:\python27 一番目のプロンプトで終了文字(UnixではControl-D、WindowsではControl-Z)を打つことで、ゼロのステータスとともにインタプリタを終了させます。それが動かない場合、quit()を打つことで、インタプリタを終了させることが出来ます。 インタプリタの行編集機能は通常は全然洗練されていません。Unixではインタプリタをインストールした人全てがGNU readlineライブラリためにサポートできたかもしれません。readlineはより念入りでインタラクティブな編集や履歴機能を追加します。おそらく、一番早いコマンドライン編集がサポートされているかどうかチェック方法は手に入れた最初のPythonのプロンプトにControl-Pを打つことです。もしビープ音が鳴れば、コマンドライン編集があります。キーの紹介のため、Interactive Input Editing and History Substitutionの付録を見てください。何も起きない、または^Pが表示された場合は、コマンドライン編集が使えません。現在の行から文字を削除するためにはバックスペースを使うしかありません。 インタプリタはUnixシェルのようにいくらか機能します。ttyデバイスで繋がる標準入力で呼ばれ、コマンドを対話的に読み込み実行します。ファイル名の引数または標準入力としてファイルを呼ぶと、ファイルからスクリプトを読み込み実行します。 2番目のインタプリタを開始する方法は、python -c command [arg] &#8230;です。これはcommandの記述を実行します。シェルの-cオプションと似ています。Pythonの記述はしばしばスペースやシェルにとって特別な他の文字を含んでいるため、通常は全てシングルクウォートでcommandを引用するよう勧められます。 いくつかのPythonのモジュールもスクリプトとして使えます。python -m module [arg] &#8230;として呼び出すことが出来ます。そうすることで、コマンドラインの全ての記述をしたかのように、モジュールのためにソースファイルを実行します。 スクリプトファイルが使われると、後でスクリプトを実行できるようになり、対話モードを入力するため便利になることがあります。-/をスクリプトの前に通すことで、実行可能です。 2.1.1. 引数の引渡し インタプリタを使うとき、スクリプト名とその後に追加した引数は引数リストに変わり、sysモジュールの中の変数argvに割り当てられます。このリストはimport sysとすることによってアクセスできます。リストは少なくとも1つ以上の長さを持ちます。1つもスクリプトまたは引数が与えられなかった場合、sys.argv[0]は空の文字列が入れられます。スクリプト名が&#8217;-'(標準入力の意味)として与えられた場合、sys.argv[0]は&#8217;-'がセットされます。-c commandが使われた場合、sys.argv[0]は&#8217;-c&#8217;がセットされます。-m moduleが使われる場合、sys.argv[0]は配置されたモジュールのフルネームがセットされます。-c commandまたは-m moduleの後に見つかったオプションはPythonのインタプリタのオプションプロセスに取得されず、使うコマンドやモジュールのためにsys.argvの中に残ります。 2.1.2. 対話モード コマンドがttyから読まれるとき、インタプリタは対話モードと呼ばれます。このモードでは次のコマンドをprimary prompt(通常は3つの&#62;(&#62;&#62;&#62;))、とともに表示します。続く行のために、secondary &#8230; <a href="http://www.kusare-do.net/2012/04/2-python%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%97%e3%83%aa%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%86/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>2.1. インタプリタを呼びだす</h2>
<p>Pythonのインタプリタは通常/usr/local/bin/pythonにインストールされ、有効になります。Unixシェルの/usr/local/binのサーチパスに加えるとシェルに以下のコマンドを打つことで開始できるようになります。</p>
<blockquote><p>python</p></blockquote>
<p>インタプリタが有効となるディレクトリを選択することはインストールのオプションであるため、他の場所でも可能です。ローカルのPythonの先生やシステム管理者に確認してみてください。（例えば、/usr/local/pythonはこれ以外でよく使われる場所です）<br />
WindowsではPythonは通常C:\Python27に配置されますが、インストーラ実行時に他の場所に変更することも出来ます。あなたのパスにディレクトリを追加することで、以下のコマンドをDOSのコマンドプロンプトに打ってください。</p>
<blockquote><p>set path=%path%;C:\python27</p></blockquote>
<p>一番目のプロンプトで終了文字(UnixではControl-D、WindowsではControl-Z)を打つことで、ゼロのステータスとともにインタプリタを終了させます。それが動かない場合、quit()を打つことで、インタプリタを終了させることが出来ます。<br />
インタプリタの行編集機能は通常は全然洗練されていません。Unixではインタプリタをインストールした人全てがGNU readlineライブラリためにサポートできたかもしれません。readlineはより念入りでインタラクティブな編集や履歴機能を追加します。おそらく、一番早いコマンドライン編集がサポートされているかどうかチェック方法は手に入れた最初のPythonのプロンプトにControl-Pを打つことです。もしビープ音が鳴れば、コマンドライン編集があります。キーの紹介のため、Interactive Input Editing and History Substitutionの付録を見てください。何も起きない、または^Pが表示された場合は、コマンドライン編集が使えません。現在の行から文字を削除するためにはバックスペースを使うしかありません。<br />
インタプリタはUnixシェルのようにいくらか機能します。ttyデバイスで繋がる標準入力で呼ばれ、コマンドを対話的に読み込み実行します。ファイル名の引数または標準入力としてファイルを呼ぶと、ファイルからスクリプトを読み込み実行します。<br />
2番目のインタプリタを開始する方法は、python -c command [arg] &#8230;です。これはcommandの記述を実行します。シェルの-cオプションと似ています。Pythonの記述はしばしばスペースやシェルにとって特別な他の文字を含んでいるため、通常は全てシングルクウォートでcommandを引用するよう勧められます。<br />
いくつかのPythonのモジュールもスクリプトとして使えます。python -m module [arg] &#8230;として呼び出すことが出来ます。そうすることで、コマンドラインの全ての記述をしたかのように、モジュールのためにソースファイルを実行します。<br />
スクリプトファイルが使われると、後でスクリプトを実行できるようになり、対話モードを入力するため便利になることがあります。-/をスクリプトの前に通すことで、実行可能です。</p>
<h3>2.1.1. 引数の引渡し</h3>
<p>インタプリタを使うとき、スクリプト名とその後に追加した引数は引数リストに変わり、sysモジュールの中の変数argvに割り当てられます。このリストはimport sysとすることによってアクセスできます。リストは少なくとも1つ以上の長さを持ちます。1つもスクリプトまたは引数が与えられなかった場合、sys.argv[0]は空の文字列が入れられます。スクリプト名が&#8217;-'(標準入力の意味)として与えられた場合、sys.argv[0]は&#8217;-'がセットされます。-c commandが使われた場合、sys.argv[0]は&#8217;-c&#8217;がセットされます。-m moduleが使われる場合、sys.argv[0]は配置されたモジュールのフルネームがセットされます。-c commandまたは-m moduleの後に見つかったオプションはPythonのインタプリタのオプションプロセスに取得されず、使うコマンドやモジュールのためにsys.argvの中に残ります。</p>
<h3>2.1.2. 対話モード</h3>
<p>コマンドがttyから読まれるとき、インタプリタは対話モードと呼ばれます。このモードでは次のコマンドをprimary prompt(通常は3つの&gt;(&gt;&gt;&gt;))、とともに表示します。続く行のために、secondary prompt(デフォルトでは&#8230;)とともに表示されます。インタプリタは最初のプロンプトの前に、バージョンナンバーとコピーライトの状態とともにwelcome messageを出力します。</p>
<pre class="brush: python; title: ; notranslate">
Python 2.7 (#1, Feb 28 2010, 00:02:06)
Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.
&gt;&gt;&gt;
</pre>
<p>続きの行が複数行の構造が入力された場合は必要です。この例ではif文で少し見せています。</p>
<pre class="brush: python; title: ; notranslate">
&gt;&gt;&gt; the_world_is_flat = 1
&gt;&gt;&gt; if the_world_is_flat:
...     print &quot;Be careful not to fall off!&quot;
...
Be careful not to fall off!
</pre>
<h2>2.2. インタプリタとその環境</h2>
<h3>2.2.1. エラーハンドリング</h3>
<p>エラーが発生したとき、インタプリタはエラーメッセージとスタックトレースを出力します。対話モードではprimary promptに表示されます。入力がファイルから行われた場合、スタックトレースの出力後、0以外の終了コードが存在します(try文の中のexcept節で呼ばれた除外は文脈の中のエラーではありません）。いくつかのエラーは無条件にFatalエラーになり、0以外の終了コードを返します。それは内部の矛盾とメモリ外で実行したケースを示します。全てのエラーメッセージは標準エラー出力で書かれます。実行されたコマンドからの普通の出力は標準出力で書かれます。<br />
終了文字(通常はControl-CまたはDEL)をprimaryまたはsecondary promptに打つと入力をキャンセルし、primary promptに返ってきます。コマンド中に終了文字を打つとKeyboard Interrput例外を引き起こします。それはtry状態で行われるかもしれません。</p>
<h3>2.2.2. Pythonスクリプトの実行</h3>
<p>BSDのUnixシステムではPythonスクリプトはシェルスクリプトのように実行可能な形式でこのように（インタプリタがユーザのPATH上にあると思ってください）スクリプトの最初とファイルが実行可能なモードで与えられることで直接作れます。</p>
<pre class="brush: python; title: ; notranslate">
#! /usr/bin/env python
</pre>
<p>#!はファイルの先頭2文字でなくてはなりません。いくつかのプラットフォームでは最初の行はWindowsスタイルの(&#8216;\r\n&#8217;)ではなく、Unixスタイルの改行(&#8216;\n&#8217;)で終わらなければなりません。ここで気をつけることとして、ハッシュやポンド、文字、&#8217;#'はPythonのコメントの頭文字に使われます。<br />
スクリプトはchmodコマンドを使うことで、実行可能モードまたはパーミッションが与えられます。</p>
<pre class="brush: bash; title: ; notranslate">
$ chmod +x myscript.py
</pre>
<h3>2.2.3. ソースコードのエンコーディング</h3>
<p>PythonのソースコードファイルはASCIIとは異なるエンコーディングを使うことができます。一番よい方法はソースファイルのエンコーディング定義のために１つ以上の特別なコメント行を#!の直後に置くことです。</p>
<pre class="brush: python; title: ; notranslate">
# -*- coding: encoding -*-
</pre>
<p>この宣言で、ソースファイル中の全ての文字はencondigエンコーディングとして扱われ、選択したエンコーディングのUnicode文字列を直接記述することが可能になります。可能なエンコーディングはcodecsセクションのPython Library Referenceから見つけることができます。<br />
例えば、現在のユーロシンボルを含むUnicode文字列を使う（序数が164のユーロシンボルとともにISO-8859-15エンコーディングを使う）ことができます。このスクリプトは8364(ユーロシンボルと対応するUnicodeのコードポイント)の値を表示し、終了します。</p>
<pre class="brush: python; title: ; notranslate">
# -*- conding: iso-8859-15 -*-

currency = u&quot;ｬ &quot;
print ord(currency)
</pre>
<p>もしあなたのエディタがUTF-8のバイトオーダーマーク(BOMでも知られる)とともにUTF-8でファイル保存することができるのなら、エンコーディング宣言の代わりにそれを使うことができます。もし、Option/General/Default Source Encoding/UTF-8がセットされているならば、IDLEはこの機能を持ちます。注意して欲しいのは、この文法はPython2.2以前のバージョンでは解釈されません。(Unixシステムだけで使われる)#!行とともにスクリプトファイルのためにOSでも解釈されません。<br />
（この宣言とともに）UTF-8を使う場合、この世界のほとんどの言語の文字がコードやコメントで同時に使われます。識別にASCIIではない文字列を使う場合はサポートされません。全ての文字列を適切に表示するために、あなたのエディタはこのファイルはUTF-8であることがわからなければなりません。そしてファイル中の全ての文字をサポートするフォントを使わなければなりません。</p>
<h3>2.2.4. 対話スタートアップファイル</h3>
<p>Pythonを対話的に使う場合、インタプリタを開始するときにいつも使ういくつかの標準的なコマンドがあると便利です。PYTHONSTARTUPというあなたのスタートアップコマンドを含むファイルに環境変数をセットすることでそれが可能になります。Unixシェルの.profileの機能に似ています。<br />
このファイルは対話セッションのときにだけ読み込まれ、スクリプトからPythonコマンドが呼ばれるときには読み込まれません。また、/dev/ttyがコマンドの明確なソース(一方で対話的セッションのように振舞う)として与えられたときでもありません。対話的コマンドが実行される同じ名前空間で実行されます。このため、定義、またはインポートされたオブジェクトは対話的セッションがなくても使われることが可能です。ファイルの中で、sys.ps1とsys.ps2のプロンプトを変更することもできます。<br />
もし現在のディレクトリから追加したスタートアップファイルを読み込ませたい場合、if os.path.isfile(&#8216;.pythonrc.py&#8217;): execfile(&#8216;.pythonrc.py&#8217;)のようにグローバルスタートアップファイルにプログラムをする必要があります。スクリプト中でスタートアップファイルを使いたい場合、スクリプト中に明示しなければなりません。</p>
<pre class="brush: python; title: ; notranslate">
import os
filename = os.enrion.get('PYTHONSETUP')
if filename and os.path.isfile(filename):
	execfile(filename)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/04/2-python%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%97%e3%83%aa%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/04/2-python%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%97%e3%83%aa%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%86/" />
	</item>
		<item>
		<title>1. あなたの意欲を刺激</title>
		<link>http://www.kusare-do.net/2012/04/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e6%84%8f%e6%ac%b2%e3%82%92%e5%88%ba%e6%bf%80/</link>
		<comments>http://www.kusare-do.net/2012/04/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e6%84%8f%e6%ac%b2%e3%82%92%e5%88%ba%e6%bf%80/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 02:34:58 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3194</guid>
		<description><![CDATA[もしあなたがコンピュータで多くの仕事をしている場合、結局いくつか自動化したタスクがあることに気づくでしょう。例えば、複雑な方法で行っている多くのテキストファイルの文字列を検索して置換したり、大量の写真フォルダの移動や再配置を行いたい。おそらく、小規模な独自のデータベースまたは特別なGUIアプリケーション、単純なゲームを書きたいかもしれません。 もしあなたがプロのソフトウェア開発者である場合、C/C++/Javaを使って仕事をしなければならないかもしれない。ただし、通常の書き込み/コンパイル/テスト/再コンパイルのサイクルが遅過ぎることに気づくでしょう。そのようなライブラリのためにテストケースを書き、テストコードを書くことが退屈な作業と気づくかもしれません。または、拡張言語を使ったプログラムを書いたかもしれません。そしてあなたのアプリケーションのためにデザインをしたくない、全ての新しい言語を実装したくないかもしれません。 Pythonはまさにあなたのための言語です。 あなたはこれらのいくつかのタスクのために、Unixシェルスクリプト、またはWindowsバッチファイルを書けるかもしれません。しかし、シェルスクリプトはファイル周りの移動やテキストデータの変更に適していますが、GUIアプリケーションやゲームには適していません。C/C++/Javaプログラムを書くかもしれませんが、最初の試作プログラムに到達するまでにさえ多くの開発時間が必要です。Pythonは簡単に使うことができ、Windows,Mac OS X,UnixのOS上で利用でき、仕事をもっと早く終わらせるために役に立つでしょう。 Pythonは簡単に使えますが、ちゃんとしたプログラミング言語です。巨大なプログラムに対して、シェルスクリプトや他のバッチファイルよりも多くの構造やサポートを提供します。一方で、PythonはCや高度なプログラミング言語よりも多くのエラーチェックも提供します。柔軟な配列や辞書のようなハイレベルなデータタイプを搭載しています。そのより一般的なデータタイプのお陰で、PythonはAwkやPerlよりも非常に巨大なプログラムの領域に適用できます。にもかかわらず、少なくともPythonの多くのことは他の言語よりも簡単なのです。 Pythonはインタプリタ型言語です。コンパイルやリンキングが不要であるため、開発中、あなたはかなりの時間を確保することができます。インタプリタは対話的に使うことができ、言語の特徴を検証すること、ちょっとしたプログラムを書くこと、ボトムアップのプログラム開発で関数のテストが簡単に行えます。また、便利な机上の計算機として使うこともできます。 Pythonはプログラムをコンパクトに、読みやすく書くことを可能にします。Pythonで書かれたプログラムはC,C++,Javaに比べ、下記の理由で明らかに短くなります。 １行で複雑な処理を可能にするハイレベルなデータタイプ 開始または終了の括弧に代わる、インデントによって状態のグルーピングが行われる 変数や引数の宣言が必要ない Pythonは拡張可能です。もしあなたがC言語でいくらかプログラムを知っていれば、組み込みの新しい関数またはモジュールをインタプリタに加えることが出来ます。また、重要な処理を最大速度で行わせることもできます。またはPythonプログラムをベンダー特製のグラフィックライブラリのようなバイナリフォームだけで可能になるかもしれないライブラリと結びつけることもできます。一度ちゃんと呼び出してしまえば、PythonインタプリタをCで書かれたアプリケーションに結びつけることができるようになり、それをアプリケーションのために拡張またはコマンド言語として使うことが出来るようになります。 とにかく、この言語はBBCが&#8221;Monty Python&#8217;s Flying Circus(空飛ぶモンティ・パイソン)&#8221;を見せるより後に名前がついていますし、爬虫類とも関係ありません。ドキュメントでモンティ・パイソンのリファレンスを作ることだけはできません。お勧めですけど！ もうPythonに興味出てきましたね。詳細を調べたくなるでしょう。言語を学ぶ一番の方法は使ってみることなので、このチュートリアルは読む際に、Pythonインタプリタを使う形で紹介します。 次の章ではインタプリタを使うためのメカニズムが説明されています。かなりありふれた情報ですが、後に見せるサンプルを試すためには必要不可欠なことです。 その他のチュートリアルでは、Python言語またはシステムの多くの機能を最初は関数やモジュールを通じて単純な表現、状態、データ型から、最後は例外やユーザ定義関数など発展的なコンセプトに触れるといった多くの例を通じて紹介します。]]></description>
			<content:encoded><![CDATA[<p>もしあなたがコンピュータで多くの仕事をしている場合、結局いくつか自動化したタスクがあることに気づくでしょう。例えば、複雑な方法で行っている多くのテキストファイルの文字列を検索して置換したり、大量の写真フォルダの移動や再配置を行いたい。おそらく、小規模な独自のデータベースまたは特別なGUIアプリケーション、単純なゲームを書きたいかもしれません。<br />
もしあなたがプロのソフトウェア開発者である場合、C/C++/Javaを使って仕事をしなければならないかもしれない。ただし、通常の書き込み/コンパイル/テスト/再コンパイルのサイクルが遅過ぎることに気づくでしょう。そのようなライブラリのためにテストケースを書き、テストコードを書くことが退屈な作業と気づくかもしれません。または、拡張言語を使ったプログラムを書いたかもしれません。そしてあなたのアプリケーションのためにデザインをしたくない、全ての新しい言語を実装したくないかもしれません。<br />
Pythonはまさにあなたのための言語です。<br />
あなたはこれらのいくつかのタスクのために、Unixシェルスクリプト、またはWindowsバッチファイルを書けるかもしれません。しかし、シェルスクリプトはファイル周りの移動やテキストデータの変更に適していますが、GUIアプリケーションやゲームには適していません。C/C++/Javaプログラムを書くかもしれませんが、最初の試作プログラムに到達するまでにさえ多くの開発時間が必要です。Pythonは簡単に使うことができ、Windows,Mac OS X,UnixのOS上で利用でき、仕事をもっと早く終わらせるために役に立つでしょう。<br />
Pythonは簡単に使えますが、ちゃんとしたプログラミング言語です。巨大なプログラムに対して、シェルスクリプトや他のバッチファイルよりも多くの構造やサポートを提供します。一方で、PythonはCや高度なプログラミング言語よりも多くのエラーチェックも提供します。柔軟な配列や辞書のようなハイレベルなデータタイプを搭載しています。そのより一般的なデータタイプのお陰で、PythonはAwkやPerlよりも非常に巨大なプログラムの領域に適用できます。にもかかわらず、少なくともPythonの多くのことは他の言語よりも簡単なのです。<br />
Pythonはインタプリタ型言語です。コンパイルやリンキングが不要であるため、開発中、あなたはかなりの時間を確保することができます。インタプリタは対話的に使うことができ、言語の特徴を検証すること、ちょっとしたプログラムを書くこと、ボトムアップのプログラム開発で関数のテストが簡単に行えます。また、便利な机上の計算機として使うこともできます。<br />
Pythonはプログラムをコンパクトに、読みやすく書くことを可能にします。Pythonで書かれたプログラムはC,C++,Javaに比べ、下記の理由で明らかに短くなります。</p>
<ul>
<li>１行で複雑な処理を可能にするハイレベルなデータタイプ</li>
<li>開始または終了の括弧に代わる、インデントによって状態のグルーピングが行われる</li>
<li>変数や引数の宣言が必要ない</li>
</ul>
<p>Pythonは拡張可能です。もしあなたがC言語でいくらかプログラムを知っていれば、組み込みの新しい関数またはモジュールをインタプリタに加えることが出来ます。また、重要な処理を最大速度で行わせることもできます。またはPythonプログラムをベンダー特製のグラフィックライブラリのようなバイナリフォームだけで可能になるかもしれないライブラリと結びつけることもできます。一度ちゃんと呼び出してしまえば、PythonインタプリタをCで書かれたアプリケーションに結びつけることができるようになり、それをアプリケーションのために拡張またはコマンド言語として使うことが出来るようになります。<br />
とにかく、この言語はBBCが&#8221;Monty Python&#8217;s Flying Circus(空飛ぶモンティ・パイソン)&#8221;を見せるより後に名前がついていますし、爬虫類とも関係ありません。ドキュメントでモンティ・パイソンのリファレンスを作ることだけはできません。お勧めですけど！<br />
もうPythonに興味出てきましたね。詳細を調べたくなるでしょう。言語を学ぶ一番の方法は使ってみることなので、このチュートリアルは読む際に、Pythonインタプリタを使う形で紹介します。<br />
次の章ではインタプリタを使うためのメカニズムが説明されています。かなりありふれた情報ですが、後に見せるサンプルを試すためには必要不可欠なことです。<br />
その他のチュートリアルでは、Python言語またはシステムの多くの機能を最初は関数やモジュールを通じて単純な表現、状態、データ型から、最後は例外やユーザ定義関数など発展的なコンセプトに触れるといった多くの例を通じて紹介します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/04/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e6%84%8f%e6%ac%b2%e3%82%92%e5%88%ba%e6%bf%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/04/%e3%81%82%e3%81%aa%e3%81%9f%e3%81%ae%e6%84%8f%e6%ac%b2%e3%82%92%e5%88%ba%e6%bf%80/" />
	</item>
		<item>
		<title>Pythonチュートリアル</title>
		<link>http://www.kusare-do.net/2012/04/python%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/</link>
		<comments>http://www.kusare-do.net/2012/04/python%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 16:21:36 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3190</guid>
		<description><![CDATA[Pythonは学びやすく、パワフルなプログラミング言語です。ハイレベルなデータ構造とオブジェクト指向に対する簡潔だけど効果的なアプローチを持っています。Pythonの自然に説明できるエレガントな文法とダイナミックな入力は大抵のプラットフォーム上の多くの分野のスクリプトや迅速なアプリケーション開発において理想的な言語にします。 Pythonインタプリタと拡張可能な標準ライブラリはソースやバイナリレベルでPythonウェブサイト(http://www.python.org/)から自由に使うことが出来ます。また、自由に配布可能かもしれません。このサイトはまた、多くのフリーのサードパーティのPythonモジュールや追加ドキュメントに対しての引用も提供しています。 Pythonインタプリタは新しい関数やCやC++(またはCから呼び出し可能なほかの言語)で実装されたデータタイプと共に容易に拡張できます。Pythonはカスタマイズできるアプリケーションにとっての拡張言語としても適しています。 このチュートリアルは形式ばらずにPython言語やシステムの基本的なコンセプトと機能を紹介します。Pythonインタプリタを実践のため便利に使う手助けとなります。全てのサンプルは完結していますので、オフライン状態でも読むことが出来ます。 標準的なオブジェクトやモジュールの説明はThe Python Standard Libraryを見てください。The Python Language Referenceではこの言語のより厳密な定義を載せています。C,C++の拡張についての記述はExtending and Embedding the Python InterpriterやPython/C API Reference Manualを参照ください。Pythonについて深く書かれた書籍もあります。 このチュートリアルは包括的な説明を意図しておらず、それぞれの個別の機能、共通の機能をカバーしています。その代わり、多くのPythonの有用な機能を紹介しています。また、あなたに言語の特色やスタイルの良いアイディアを与えるでしょう。これを読み終えた後、あなたはPythonのモジュールやプログラミングを読んだり書いたりすることができるようになるでしょう。そして、The Python Standard Libraryに書かれたより多くのPythonライブラリモジュールの学習の準備が整うでしょう。 Glossaryにも学習を進めるにあたって有用な情報となります。]]></description>
			<content:encoded><![CDATA[<p>Pythonは学びやすく、パワフルなプログラミング言語です。ハイレベルなデータ構造とオブジェクト指向に対する簡潔だけど効果的なアプローチを持っています。Pythonの自然に説明できるエレガントな文法とダイナミックな入力は大抵のプラットフォーム上の多くの分野のスクリプトや迅速なアプリケーション開発において理想的な言語にします。<br />
Pythonインタプリタと拡張可能な標準ライブラリはソースやバイナリレベルでPythonウェブサイト(http://www.python.org/)から自由に使うことが出来ます。また、自由に配布可能かもしれません。このサイトはまた、多くのフリーのサードパーティのPythonモジュールや追加ドキュメントに対しての引用も提供しています。<br />
Pythonインタプリタは新しい関数やCやC++(またはCから呼び出し可能なほかの言語)で実装されたデータタイプと共に容易に拡張できます。Pythonはカスタマイズできるアプリケーションにとっての拡張言語としても適しています。<br />
このチュートリアルは形式ばらずにPython言語やシステムの基本的なコンセプトと機能を紹介します。Pythonインタプリタを実践のため便利に使う手助けとなります。全てのサンプルは完結していますので、オフライン状態でも読むことが出来ます。<br />
標準的なオブジェクトやモジュールの説明はThe Python Standard Libraryを見てください。The Python Language Referenceではこの言語のより厳密な定義を載せています。C,C++の拡張についての記述はExtending and Embedding the Python InterpriterやPython/C API Reference Manualを参照ください。Pythonについて深く書かれた書籍もあります。<br />
このチュートリアルは包括的な説明を意図しておらず、それぞれの個別の機能、共通の機能をカバーしています。その代わり、多くのPythonの有用な機能を紹介しています。また、あなたに言語の特色やスタイルの良いアイディアを与えるでしょう。これを読み終えた後、あなたはPythonのモジュールやプログラミングを読んだり書いたりすることができるようになるでしょう。そして、The Python Standard Libraryに書かれたより多くのPythonライブラリモジュールの学習の準備が整うでしょう。<br />
Glossaryにも学習を進めるにあたって有用な情報となります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2012/04/python%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2012/04/python%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab/" />
	</item>
		<item>
		<title>ファイアーエムブレム外伝 Phase曲+α</title>
		<link>http://www.kusare-do.net/2011/12/%e3%83%95%e3%82%a1%e3%82%a4%e3%82%a2%e3%83%bc%e3%82%a8%e3%83%a0%e3%83%96%e3%83%ac%e3%83%a0%e5%a4%96%e4%bc%9d-phase%e6%9b%b2%ce%b1/</link>
		<comments>http://www.kusare-do.net/2011/12/%e3%83%95%e3%82%a1%e3%82%a4%e3%82%a2%e3%83%bc%e3%82%a8%e3%83%a0%e3%83%96%e3%83%ac%e3%83%a0%e5%a4%96%e4%bc%9d-phase%e6%9b%b2%ce%b1/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 04:23:45 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[FE演奏動画]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3184</guid>
		<description><![CDATA[うｐ！ &#160; 1.オープニング 2.全体マップ~1章(ソフィアへ:アルムの旅立ち) 3.戦闘マップ1~戦闘MAP1-1(アルム1) 4.全体マップ~2章(セリカの旅立ち) 5.戦闘マップ3~戦闘MAP2-1(セリカ1) 6.全体マップ~3章(解放戦争:それぞれの道) 7.全体マップ~4章(悲しみの大地) 8.戦闘マップ~最終MAP BGM(プレイヤー側) 9.エンディング1]]></description>
			<content:encoded><![CDATA[<p>うｐ！</p>
<!-- wp-nicolink 0.3.0--><div class="nicolink"><div class="left"><div><a href="http://www.nicovideo.jp/" target="_blank"><img src="http://www.kusare-do.net/wp-content/plugins/wp-nicolink/image/logo_b.gif" alt="ニコニコ動画" border="0" class="nico"></a></div><div><a href="http://www.nicovideo.jp/watch/sm17459120" target="_blank"><img src="http://tn-skr1.smilevideo.jp/smile?i=17459120" alt="ファイアーエムブレム外伝　マップ曲＋α　を弾いてみた" border="0" width="94" height="70" class="thumb"></a></div><p class="statics"><strong>8:52</strong><br>再生：<strong>430</strong><br>コメント：<strong>36</strong><br>マイリスト：<strong>21</strong></p></div><div class="right"><p class="registed"><strong>2012/04/04 23:31</strong> 投稿</p><p><a href="http://www.nicovideo.jp/watch/sm17459120" target="_blank" class="video"><strong>ファイアーエムブレム外伝　マップ曲＋α　を弾いてみた</strong></a><br>外伝のマップ曲を中心に、9曲弾いてみました。他作品でいろいろなBGMがアレンジされるのもうなづける良...</p><div class="res">来た来た！！！ マップ曲に期待 トリハダ ｗｋｗｋ テケテテーテーテッテ 外伝は良曲揃... </div></div></div><!-- wp-nicolink 0.3.0 END -->
<p>&nbsp;</p>
<p>1.オープニング</p>
<p>2.全体マップ~1章(ソフィアへ:アルムの旅立ち)</p>
<p>3.戦闘マップ1~戦闘MAP1-1(アルム1)</p>
<p>4.全体マップ~2章(セリカの旅立ち)</p>
<p>5.戦闘マップ3~戦闘MAP2-1(セリカ1)</p>
<p>6.全体マップ~3章(解放戦争:それぞれの道)</p>
<p>7.全体マップ~4章(悲しみの大地)</p>
<p>8.戦闘マップ~最終MAP BGM(プレイヤー側)</p>
<p>9.エンディング1</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2011/12/%e3%83%95%e3%82%a1%e3%82%a4%e3%82%a2%e3%83%bc%e3%82%a8%e3%83%a0%e3%83%96%e3%83%ac%e3%83%a0%e5%a4%96%e4%bc%9d-phase%e6%9b%b2%ce%b1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2011/12/%e3%83%95%e3%82%a1%e3%82%a4%e3%82%a2%e3%83%bc%e3%82%a8%e3%83%a0%e3%83%96%e3%83%ac%e3%83%a0%e5%a4%96%e4%bc%9d-phase%e6%9b%b2%ce%b1/" />
	</item>
		<item>
		<title>JBoss Netty2</title>
		<link>http://www.kusare-do.net/2011/12/jboss-netty2/</link>
		<comments>http://www.kusare-do.net/2011/12/jboss-netty2/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 15:39:39 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3177</guid>
		<description><![CDATA[JBoss Nettyを使ったHelloサーバを作成してみる。 改行コードで区切られた各文字列をリクエストとする リクエストが「quit」の場合は「Bye!」を返し、接続を閉じる リクエストが「quit」以外の文字列の場合は、それを名前と見なして「Hello [名前]!」を返す リクエストが空文字列の場合は「What?」を返す パイプラインの設計 HelloServerHandler 下流のStringDecoderから文字列を受け取り、プロトコルに沿って生成したレスポンスを返す]]></description>
			<content:encoded><![CDATA[<p>JBoss Nettyを使ったHelloサーバを作成してみる。</p>
<ul>
<li>改行コードで区切られた各文字列をリクエストとする</li>
<li>リクエストが「quit」の場合は「Bye!」を返し、接続を閉じる</li>
<li>リクエストが「quit」以外の文字列の場合は、それを名前と見なして「Hello [名前]!」を返す</li>
<li>リクエストが空文字列の場合は「What?」を返す</li>
</ul>
<p>パイプラインの設計</p>
<p>HelloServerHandler</p>
<p>下流のStringDecoderから文字列を受け取り、プロトコルに沿って生成したレスポンスを返す</p>
<pre class="brush: java; title: ; notranslate">
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelFutureListener;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;

public class HelloServerHandler {
	@Override
	public void messageRecieved(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
		// リクエストを取得する
		String request = (String) e.getMessage();

		// レスポンスを生成する
		String response;
		if (request.equals(&quot;quit&quot;)) {
			response = &quot;Bye!&quot;;
		} else if (request.equals(&quot;quit&quot;)) {
			response = &quot;Hello &quot; + request + &quot;!&quot;;
		} else {
			response = &quot;What?&quot;;
		}

		// レスポンスに改行コードを付加して書き込む
		ChannelFuture future = e.getChannel().write(response + &quot;\r\n&quot;);

		// リクエストが&quot;quit&quot;の場合はチャネルを閉じる
		if (request.equals(&quot;quit&quot;)) {
			future.addListener(ChannelFutureListener.CLOSE);
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2011/12/jboss-netty2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2011/12/jboss-netty2/" />
	</item>
		<item>
		<title>Ubuntu 10.04上でJBoss Application Server構築</title>
		<link>http://www.kusare-do.net/2011/12/ubuntu-10-04%e4%b8%8a%e3%81%a7jboss-application-server%e6%a7%8b%e7%af%89/</link>
		<comments>http://www.kusare-do.net/2011/12/ubuntu-10-04%e4%b8%8a%e3%81%a7jboss-application-server%e6%a7%8b%e7%af%89/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 15:15:43 +0000</pubDate>
		<dc:creator>BrandyIron</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.kusare-do.net/?p=3171</guid>
		<description><![CDATA[JBOSS 5.1 on Ubuntu 10.04を参考に。 java-6-openjdkをSynapticからインストール /usr/local/jbossの下にjboss-5.1.0.GA.zipを展開する。 JDKのパスが違うので下記指定。 127.0.0.1:8080にアクセス。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.surajitray.com/coders-corner/jboss-5-1-on-ubuntu-10-04/">JBOSS 5.1 on Ubuntu 10.04</a>を参考に。</p>
<p>java-6-openjdkをSynapticからインストール</p>
<p>/usr/local/jbossの下にjboss-5.1.0.GA.zipを展開する。</p>
<p>JDKのパスが違うので下記指定。</p>
<pre class="brush: bash; title: ; notranslate">
JAVAPTH=${JAVAPTH:-&quot;/usr/lib/jvm/java-6-openjdk/bin&quot;}
</pre>
<p>127.0.0.1:8080にアクセス。</p>
<p><a href="http://www.kusare-do.net/wp-content/uploads/2011/12/Screenshot.png"><img src="http://www.kusare-do.net/wp-content/uploads/2011/12/Screenshot-300x225.png" alt="" title="Screenshot" width="300" height="225" class="aligncenter size-medium wp-image-3174" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kusare-do.net/2011/12/ubuntu-10-04%e4%b8%8a%e3%81%a7jboss-application-server%e6%a7%8b%e7%af%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.kusare-do.net/2011/12/ubuntu-10-04%e4%b8%8a%e3%81%a7jboss-application-server%e6%a7%8b%e7%af%89/" />
	</item>
	</channel>
</rss>

