<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www32.atwiki.jp/erlang/">
    <title>erlang @ Wiki</title>
    <link>http://www32.atwiki.jp/erlang/</link>
    <description>erlang @ Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2008-03-04T21:05:32+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/35.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/1.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/37.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/2.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/14.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/36.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/28.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/16.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/34.html" />
                <rdf:li rdf:resource="http://www32.atwiki.jp/erlang/pages/33.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/35.html">
    <title>リンク集</title>
    <link>http://www32.atwiki.jp/erlang/pages/35.html</link>
    <description>
      maagrena.tripod.com

[O] これから15分でErlangを始めるための資料
http://blog.overlasting.net/2007-05-09-1.html

Erlang Land
http://www.kmonos.net/alang/etc/erlang.php

Erlang - Wikipedia
http://ja.wikipedia.org/wiki/Erlang

Thinking-in-Erlang-Japanese-version
http://www.scribd.com/doc/45477/

どう書く？org :doukaku
http://ja.doukaku.org/

リレーショナルでもオブジェクトでもない、JSONが前提のドキュメントデータベース
CouchDb Project Website
http://couchdb.org/CouchDB/CouchDBWeb.nsf/Home?OpenForm

DSAS開発者の部屋
http://dsas.blog.klab.org/

Erlang クエックブック
http://ancient.s6.xrea.com/erlang/cookbook.html

少年よ大志を抱け:Erlang
http://bba-ltom.blogspot.com/search/label/erlang

Erlangプログラミング (Erlang Programming)
基本的な使い方・構文 (Getting Started)]]
Erlnag リファレンスマニュアル (Erlang Reference Manual)]]     </description>
    <dc:date>2008-03-04T21:05:32+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/1.html">
    <title>トップページ</title>
    <link>http://www32.atwiki.jp/erlang/pages/1.html</link>
    <description>
      **Erlangに関する情報をまとめるwikiです。
-[[Erlangとは]]
-[[インストールガイド (Installation Guide)]]
-[[リンク集]]    </description>
    <dc:date>2007-10-19T23:39:09+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/37.html">
    <title>Des_Overview</title>
    <link>http://www32.atwiki.jp/erlang/pages/37.html</link>
    <description>
      The OTP Design Principles is a set of principles for how to structure Erlang code in terms of processes, modules and directories. 
OTPの設計原則はErlangコードのプロセス、モジュール、ディレクトリといった項目の構築原則のセットです。

*1.Supervision Trees 
supervisionツリー

A basic concept in Erlang/OTP is the supervision tree. This is a process structuring model based on the idea of workers and supervisors. 
Erlang/OTPの基本的なコンセプトはsupervisionツリーです。これはworkerとsupervisiorのアイディアモデルベースのプロセス構築です。

-Workers are processes which perform computations, that is, they do the actual work. 
ワーカは、計算指示を実際の動作に変換するプロセスです。

-Supervisors are processes which monitor the behaviour of workers. A supervisor can restart a worker if something goes wrong. 
Supervisiorsはworkerビヘイビアのモニターをするプロセスです。supervisiorは、想定外の事が起こった場合にワーカーを再起動できます。

-The supervision tree is a hierarchical arrangement of code into supervisors and workers, making it possible to design and program fault-tolerant software. 
supervisionツリーはコード内にsupervisorsとworkerの階層的引数を持ち、障害耐性の高いソフトウェアの設計とプログラムを可能にします。

*2.Behaviours 
*3.Applications 
*4.Releases 
*5.Release Handling    </description>
    <dc:date>2007-10-19T23:29:25+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/2.html">
    <title>メニュー</title>
    <link>http://www32.atwiki.jp/erlang/pages/2.html</link>
    <description>
      メニュー
-[[トップページ]]

-[[Erlangとは]]
-[[インストールガイド (Installation Guide)]]

**Erlangプログラミング (Erlang Programming)
-[[基本的な使い方・構文 (Getting Started)]]
-[[Erlnag リファレンスマニュアル (Erlang Reference Manual)]] 
-[[OTP 設計原則 (OTP Design Principles)]] 



//-[[プラグイン]]
//-[[メニュー]]
//-[[メニュー2]]

----


//-[[@ウィキ ガイド&gt;http://atwiki.jp/guide/]]
//-[[@wiki 便利ツール &gt;http://atwiki.jp/tools/]]
//-[[@wiki&gt;http://atwiki.jp]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります
**counter 
-- &amp;counter()
-- today &amp;counter(today)
-- yesterday &amp;counter(yesterday)
**更新履歴
#recent(10)    </description>
    <dc:date>2007-04-19T00:22:35+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/14.html">
    <title>Introduction</title>
    <link>http://www32.atwiki.jp/erlang/pages/14.html</link>
    <description>
      *1.  Introduction

*1.1 Erlang と OTP
Erlangは多目的プログラミング言語であり、並列性、配布、バグを内包している。


OTP（Open　Telecom　Platform）は、強固で適応性のあるテレコムシステムのためにtime-savingと柔軟な発展性を提供することを目的としている。またOTPは、Erlang Runtime Systemと、たくさんのready-to-useコンポネント（主にErlangで書かれた）と、Erlangプログラムのための設計原理のまとまりから成る。ErlangとOTPは密接な関係があるので、Erlang/OTPは一般的にOTPの代わりとして使われる。
*1.2 Erlang/OTP
*1.2.1 Erlang Runtime System
Erlang Runtime System(ERTS)は、OSの上を走るエミュレータと、配布とI/Oのような低レベルサービスを提供するカーネルと、膨大な再利用モジュールを含んだ標準ライブラリから成る。ERTSの一つの導入は、&quot;Getting started with Erlang&quot;の第二章に書いてある。完全なドキュメントは、書籍&quot;Erlang 5.1/OTP R8 Basic Applications&quot;に書いてある。 

OTP設計原理は、アプリケーションを呼ぶコンセプトに基づくシステムを構築する手段をユーザーに提供する。OTPアプリケーションはシステムコンポネントをパッケージ化する方法で、モジュールライブラリかスーパービジョンツリーのまとまりである。スーパービジョンツリーは、fault-tolerantシステムプログラムに使われたプロセスの階層的な木のことである。そのプロセスは最も簡単な実装されたビヘイビアモジュールで、それは設計パターンの形式化である。標準ライブラリはスーパービジョンとサーバーとステイトマシンと一般的イベントハンドラのためのビヘイビアモジュールを含んでいる。&quot;OTP Design Principles&quot;の第四章で、設計原理が詳細に説明されている。 

*1.2.2 OTP コンポーネント
OTPコンポネントは６つのカテゴリに分けられる。



-基本的アプリケーション－基本的Erlang/OTP関数 
--コンパイラ 高次元なコンパクトコードを提供するErlangのためのバイトコードコンパイラ 
--カーネル Erlang/OTPを走らせる関数的必需品 
--SASL (System Architecture Support Libraries) コード置換や警告処理などのためのツールセット 
--STDLIB 標準ライブラリ 
-オペレーションと保守－ユーザーとErlang/OTP自身の両方によって改善されたシステム 
--EVA multi-featuredイベントと警告処理 
--OS_Mon OSからの検査を許すモニター 
--SNMP MIBコンパイラとSNMPエージェントのためのツールを内蔵したSNMPサポート 
-インターフェースとコミュニケーション－相互運用性とプロトコルサポート 
--Asn1 ASN1のサポート 
--Comet ウインドウ上でErlang/OTPにCOMオブジェクトを呼ばせるライブラリ 
--Crypto 暗号化サポート 
--Erl_Interface Cへの低レベルインターフェース 
--GS ユーザーインターフェースから独立したプラットフォームを書くのに使うグラフィックシステム 
--Inets WebサーバーやFTPクライアントのようなサービスのセット 
--Jinterface Javaへの低レベルインターフェース 
--SSL 安全なソケット層（SSL)、UNIX BSDソケットへのインターフェース 
-データベース運用 
--Mnemosyne DBMSの問い合わせ言語サポート 
--Mnesia リアルタイムで記述されたデータベースの重大な義務 
--Mnesia_session Mnesia DBMSへの外国語インターフェース 
--ODBC ODBCデータベースインターフェース 
-CORBAサービスとIDLコンパイラ 
--cosEvent Orber OMG Event Service. 
--cosNotification Orber OMG Notification Service. 
--cosTime Orber OMG Timer and TimerEvent Services. 
--cosTransactions Orber OMG Transaction Service. 
--IC IDL compiler 
--Orber A CORBA object request broker. 
-Tools. 
--Appmon OTPアプリを見るのにつかうユーティリティ 
--Debugger Erlangプログラムのテストとデバッグ 
--Parsetools A set of parsing と語句解析のツール 
--Pman Erlang/OTPシステムの状態の検査に使うプロセスマネージャ 
--Runtime_Tools プロダクションシステムでのインクルードするためのツール 
--Toolbar Erlang/OTPツールに簡単にアクセスするためのツールバー 
--Tools 変換解析などを含んだプログラミングツールのセット 
--TV ETSとMnesiaグラフィックテーブルビジュアライザー 

*1.3 狙いと目的

このドキュメントは、ErlangランタイムシステムとOTPアプリケーションとOTP設計原理について説明している。読み手はErlangプログラミング言語に精通しているが、Erlangでのプログラムの方法については説明できないと想定している。Erlangは”Concurrent Programming in Erlang, 2nd Edition”（ ISBN 0-13-508301-X）で詳細に記してある。 

*1.4 The Erlang/OTP Documentation について
*1.4.1 この本の構造
ドキュメントは８つのパートに分割されている。この本, Erlang 5.1/OTP R8 System Documentation, EN/LZT 108 4095 R2,は、ドキュメントのポイントから始まり、Erlang言語とランタイム、OTP設計原理、Erlang/OTPのインストールと設定の仕方が書いてある。 


-Chapter 2: &quot;初めてのErlang&quot;では、Erlangランタイムシステムについて記述してあり、読者にコンパイラやデバッガのようなツールを紹介している。  
-Chapter 3: &quot;4.4からのErlangの拡張&quot;では、最新バージョンの本Concurrent Programming in ERLANGから、Erlangに加えられたすべての拡張を列挙してある。 
-Chapter 4: &quot;OTP Design Principles（OTP設計原理）&quot;では、アプリケーションタームのErlangコードとスーパービジョン木の構築の仕方について記述している。典型的な例などを挙げてある。  
-Chapter 5: &quot;Installation Guide（インストールガイド）&quot;では、UNIXとWindowsでのErlang/OTPのインストールのガイドラインについて記述してある。 
-Chapter 6: &quot;System Principles（システム原理）&quot;では、Erlang/OTPを始めるのに役に立つオプションや使い方について記述してある。この章はまた、Erlang/OTPでのアプリケーションについて簡潔に記述してある。 
-Chapter 7: &quot;Embedded Systems（組み込みシステム）&quot;は、&quot;Installation Guide&quot;の補足である。組み込みシステム上でErlang/OTPを走らせることの問題点や特徴について記述してある。 
-Chapter 8: &quot;Operation and Management Principles（制御と運用の原理）&quot;では、制御のモデルやサブシステムの保守について記述してある。 
-Chapter 9: &quot;Tutorial（チュートリアル）&quot; は、別のプログラミング言語で書かれたプログラムとErlangプログラムを統一する時に使われるメカニズムのオリエンテーションである。 
*1.4.2 印刷規定
次のような印刷規定が使われている。 


Examples of typographical conventions. 規定  Where used  
コマンド  To show menu selections and equivalent command line entries.
To show keyboard entries at system prompts.  
コード
 To highlight Erlang code, module and function names, arguments, variables, and file names.  


*2. Things Left Out    </description>
    <dc:date>2007-04-15T22:33:08+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/36.html">
    <title>OTP 設計原則 (OTP Design Principles)</title>
    <link>http://www32.atwiki.jp/erlang/pages/36.html</link>
    <description>
      + [[概要(Overview)&gt;Des_Overview]]
++ Supervision Trees
++ Behaviours
++ Applications
++ Releases
++ Release Handling


+ [[Gen_Server Behaviour&gt;Des_Gen_Server]]
++ Client-Server Principles
++ Example
++ Starting a Gen_Server
++ Synchronous Requests - Call
++ Asynchronous Requests - Cast
++ Stopping
++ Handling Other Messages


+ [[Gen_Fsm Behaviour]]
++ Finite State Machines
++ Example
++ Starting a Gen_Fsm
++ Notifying About Events
++ Timeouts
++ All State Events
++ Stopping
++ Handling Other Messages


+ [[Gen_Event Behaviour]]
++ Event Handling Principles
++ Example
++ Starting an Event Manager
++ Adding an Event Handler
++ Notifying About Events
++ Deleting an Event Handler
++ Stopping


+ [[Supervisor Behaviour]]
++ Supervision Principles
++ Example
++ Restart Strategy
++ Maximum Restart Frequency
++ Child Specification
++ Starting a Supervisor
++ Adding a Child Process
++ Stopping a Child Process
++ Simple-One-For-One Supervisors
++ Stopping


+ [[Sys and Proc_Lib]]
++ Simple Debugging
++ Special Processes
++ User-Defined Behaviours


+ [[Applications]]
++ Application Concept
++ Application Callback Module
++ Application Resource File
++ Directory Structure
++ Application Controller
++ Loading and Unloading Applications
++ Starting and Stopping Applications
++ Configuring an Application
++ Application Start Types


+ [[Included Applications]]
++ Definition
++ Specifying Included Applications
++ Synchronizing Processes During Startup


+ [[Distributed Applications]]
++ Definition
++ Specifying Distributed Applications
++ Starting and Stopping Distributed Applications
++ Failover
++ Takeover


+ [[Releases]]
++ Release Concept
++ Release Resource File
++ Generating Boot Scripts
++ Creating a Release Package
++ Directory Structure


+ [[Release Handling]]
++ Release Handling Principles
++ Requirements
++ Distributed Systems
++ Release Handling Instructions
++ Application Upgrade File
++ Release Upgrade File
++ Installing a Release
++ Updating Application Specifications


+ [[Appup Cookbook]]
++ Changing a Functional Module
++ Changing a Residence Module
++ Changing a Callback Module
++ Changing Internal State
++ Module Dependencies
++ Changing Code For a Special Process
++ Changing a Supervisor
++ Adding or Deleting a Module
++ Starting or Terminating a Process
++ Adding or Removing an Application
++ Restarting an Application
++ Changing an Application Specification
++ Changing Application Configuration
++ Changing Included Applications
++ Changing Non-Erlang Code
++ Emulator Restart    </description>
    <dc:date>2007-04-15T18:40:05+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/28.html">
    <title>Macros</title>
    <link>http://www32.atwiki.jp/erlang/pages/28.html</link>
    <description>
      *1. Defining and Using Macros

A macro is defined the following way: 
マクロの定義は以下のようにします:

 -define(Const, Replacement).
 -define(Func(Var1,...,VarN), Replacement).
   
A macro definition can be placed anyhere among the attributes and function declarations of a module, but the definition must come before any usage of the macro. 
マクロ定義はモジュールの属性と関数が出来るみたいな。しかし、定義はマクロを使う前に必要だってかんじ。

If a macro is used in several modules, it is recommended that the macro definition is placed in an include file. 

もしも、マクロがseveralモジュール内でつかうなら、これはマクロ定義はインクルードファイルないにあるとrecomendされる。

A macro is used the following way: 
マクロは以下のように使われる:

 ?Const
 ?Func(Arg1,...,ArgN)
    

Macros are expanded during compilation. A simple macro ?Const will be replaced with Replacement. Example: 
マクロはコンパイル時に展開される。シンプルなマクロ?Constは置き換えられるだろう。例:

 -define(TIMEOUT, 200).
 ...
 call(Request) -&gt;
     server:call(refserver, Request, ?TIMEOUT).
    

This will be expanded to: 
これは以下のように展開されるでしょう:
 call(Request) -&gt;
     server:call(refserver, Request, 200).
    

A macro ?Func(Arg1,...,ArgN) will be replaced with Replacement, where all occurences of a variable Var from the macro definition are replaced with the corresponding argument Arg. Example: 
マクロ?Func(Arg1,...,ArgN)はバリアブルVarのマクロ定義からoccurencesの全ては置き換えられたcorresponding引数Argである、ところのReplacementによって置き換えられる。


 -define(MACRO1(X, Y), {a, X, b, Y}).
 ...
 bar(X) -&gt;
     ?MACRO1(a, b),
     ?MACRO1(X, 123)
    

This will be expanded to: 
これはこう展開されるでしょう:

 bar(X) -&gt;
     {a,a,b,b},
     {a,X,b,123}.


It is good programming practice, but not mandatory, to ensure that a macro definition is a valid Erlang syntactic form. 
このことはよいプログラミングの練習です、しかし、mandatoryではなく、to ensure that a マクロ定義がvalid な Erlang シンタックスから。


To view the result of macro expansion, a module can be compiled with the &#039;P&#039; option. compile:file(File, [&#039;P&#039;]). This produces a listing of the parsed code after preprocessing and parse transforms, in the file File.P. 
マクロexpansionの結果を見る、モジュールはPオプションによりコンパイルできる。
compile:file(File,[&#039;P&#039;]). このproduces　パースされたコードのリスニング　わからん。



*2. Predefined Macros
The following macros are predefined: 
以下のようなマクロがさいっしょっから定義されてる:

?MODULE 
The name of the current module. 
カレントモジュールの名前。
?MODULE_STRING. 
The name of the current module, as a string. 
カレントモジュールの名前の文字列。
?FILE. 
The file name of the current module. 
カレントモジュールのファイルの名前
?LINE. 
The current line number.
カレント行番号。 
?MACHINE. 
The machine name, &#039;BEAM&#039;. 
マシン名、&#039;BEAM&#039;。

*3. Flow Control in Macros
The following macro directives are supplied: 
マクロディレクティブは以下のようなサプリード:

-undef(Macro). 
Causes the macro to behave as if it had never been defined. 
Causes マクロ to behave as もしこれが定義されてなかったら。
-ifdef(Macro). 
Evaluate the following lines only if Macro is defined. 
もしもマクロが定義されていれば以下の行が計算される。

-ifndef(Macro). 
Evaluate the following lines only if Macro is not defined. 
マクロが定義されてなかったら以下の行が計算される。

-else. 
Only allowed after an ifdef or ifndef directive. If that condition was false, the lines following else are evaluated instead. 
elseだよ。
-endif. 
Specifies the end of an ifdef or ifndef directive. 
endifだろ。

Example: 
例：
 -module(m).
 ...

 -ifdef(debug).
 -define(LOG(X), io:format(&quot;{~p,~p}: ~p~n&quot;, [?MODULE,?LINE,X])).
 -else.
 -define(LOG(X), true).
 -endif.
 
 ...


When trace output is desired, debug should be defined when the module m is compiled: 
トレースしたいときー、debug should be 定義された モジュールmがコンパイルされたときー:
トレースしたいときは コンパイル時にdebugを定義しろってこった:
 % erlc -Ddebug m.erl

or
とか

 1&gt; c(m, {d, debug}).
 {ok,m}

なかんじで。

?LOG(Arg) will then expand to a call to io:format/2 and provide the user with some simple trace output. 
?LOG(Arg)はまぁ、アレだ。io:format/2とシンプルなユーザーのトレース出力を含んだものに展開できるだろうと。

*4. Stringifying Macro Arguments

The construction ??Arg, where Arg is a macro argument, will be expanded to a string containing the tokens of the argument. This is similar to the #arg stringifying construction in C. 
??Argはなんかつくる。Argがマクロ引数のところ。展開　文字列を含む。引数トークン。これはシミュラーです。#arg文字列うんたらのCのなかみたいな。

The feature was added in Erlang 5.0/OTP R7. 
未来は君のためにある。
Erlang 5.0/OTP R7から追加されたフューチャ

Example: 
例:

 -define(TESTCALL(Call), io:format(&quot;Call ~s: ~w~n&quot;, [??Call, Call])).
 
 ?TESTCALL(myfunction(1,2)),
 ?TESTCALL(you:function(2,1)).
    

results in 
結果

io:format(&quot;Call ~s: ~w~n&quot;,[&quot;myfunction ( 1 , 2 )&quot;,m:myfunction(1,2)]),
io:format(&quot;Call ~s: ~w~n&quot;,[&quot;you : function ( 2 , 1 )&quot;,you:function(2,1)]).
    

That is, a trace output with both the function called and the resulting value.
このように、トレース出力は関数呼び出しのようにして結果をえられるとかそんなかんじ。    </description>
    <dc:date>2007-04-15T18:06:57+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/16.html">
    <title>インストールガイド (Installation Guide)</title>
    <link>http://www32.atwiki.jp/erlang/pages/16.html</link>
    <description>
          http://www.erlang.org/
から入手可能です。

Emacsの設定
erl5.5.3\lib\tools-2.5.3\emacs
にErlang Emacs modeがあります。    </description>
    <dc:date>2007-04-13T15:45:01+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/34.html">
    <title>Ports and Port Drivers</title>
    <link>http://www32.atwiki.jp/erlang/pages/34.html</link>
    <description>
         1.  Ports
   2. Port Drivers
   3. Port BIFs    </description>
    <dc:date>2007-04-13T15:13:13+09:00</dc:date>
  </item>
    <item rdf:about="http://www32.atwiki.jp/erlang/pages/33.html">
    <title>Compilation and Code Loading</title>
    <link>http://www32.atwiki.jp/erlang/pages/33.html</link>
    <description>
         1.  Compilation
   2. Code Loading
   3. Code Replacement    </description>
    <dc:date>2007-04-13T15:13:01+09:00</dc:date>
  </item>
  </rdf:RDF>

