- 追加された行はこの色です。
- 削除された行はこの色です。
ATOM SHELL理論
*目次 [#x281bf05]
#contents
*ATOM SHELL理論 [#p823e34b]
全ての言語のコードをパイプラインで結びつけるという理論です。
パイプラインで通過するデータは基本XML形式にしようという理論でもあります。
いろいろな言語で作ったコードを共通の仕様のインターフェースで通してしまえば、いいじゃん。という感じです。
ATOM SHELL 理論は、自分が提唱する理論の名前です。
Yahoo pipsにインスパイアされ、
Yahoo pipsにインスパイアされました。
URL
http://pipes.yahoo.com/pipes/
いろいろな言語で、パイプ処理用のインタフェースをそろえ、
iPhoneのAppストアのように、ライブラリを一元管理し、バージョン、評判のインタフェースを提供することで
車輪の再発明を押さえながら発展していくための理論、哲学をまとめていこうとおもっています。
現在データは全てRSSでいうところのATOMで表現する等が流行っているが、これはパーサが比較的用意しやすいからである。むしろパーサを用意するには、javascriptのほうが適していたりする場合がある。
これは、各処理言語の既存のモジュールに依存しているだけの話である。
パイプとは関数言語的な仕組みであるから、これに含まれるデータはデータのみならず、関数自信も含んでいたほうがよい。関数とはフィルタであり、パラメータによって可変であれば、yamlの定義ファイルで置き換えることができる。
で、極力フィルタは一元管理して、再発名を防ぎたいから、単機能のフィルタになる。
それらは、一元管理されているべきである。有用なものには、値段がついていたほうが、開発者のモチベーションはあがると考えられるので、ますますAppStoreのようになるかもしれない。
いろいろな言語をつなぐには、UNIXのパイプ処理に焦点をあててみてもいいかもしれない。
でも、結局人間が見やすいのはExcelやOpenOfficeのスプレッドシートであるから、最終的にはこれらのファイルに変換するマクロを用意するようにする。
*ネットワークからATOM記事を得る方法 [#aab564c9]
例えば、技術評論社のATOMフィードは下記のアドレスです
http://rss.rssad.jp/rss/gihyo/feed/atom
これを取得する方法は
*エクセルマクロ(VBA)をコマンドラインから呼び出す [#b1f7bbf2]
http://d.hatena.ne.jp/GARAPON/20090120/1232449513
*たのしいXML: RubyでXMLデータを扱う (1) [#g4ef98aa]
http://www6.airnet.ne.jp/manyo/xml/ruby/home.html
*2009-10-19 [Ruby] 標準入力を処理するプログラムを書く [#z7ee0c3f]
http://d.hatena.ne.jp/unageanu/20091019
*javaで標準入力を処理する例 [#wb78da7c]
**コード [#iddf4670]
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ReadLineSample {
public static void main(String[] args) {
try {
BufferedReader stdReader = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = stdReader.readLine()) != null) {
System.out.println("java:" + line);
}
stdReader.close();
} catch (Exception e) {
e.getStackTrace();
System.exit(-1);
}
}
}
**コンパイル [#f7916ea1]
javac ReadLineSample.java
**実行 [#kc10509a]
例cat ReadLineSample.java | java ReadLineSample
*wshで標準入力を得る [#wb7c2ba1]
'WScript.Echo "hello"
'Set regexp = CreateObject("VBScript.RegExp")
'regexp.pattern = "a+"
'regexp.Global = True
Do Until WScript.StdIn.AtEndOfLine
strInput = WScript.StdIn.ReadLine
WScript.StdOut.Write strInput
Loop
これを保存しておき、たとえば、filter.vbsというファイル名で保存したとすると、
cscript filter.vbs
で実行できます。
*標準入力の数式を計算する例 [#c1702255]
'////////////////////////////////////////////////////////////////////////
' 簡易計算VBScript
' 2004/07/13 うっちー
'////////////////////////////////////////////////////////////////////////
Option Explicit
Dim objRE, wExpr
' 正規表現オブジェクト初期化
Set objRE = New RegExp
objRE.Pattern = "[^ a-z0-9.+\-*/^()\\]"
objRE.IgnoreCase = True
objRE.Global = True
On Error Resume Next
Do Until WScript.StdIn.AtEndOfStream
wExpr = objRE.Replace(WScript.StdIn.ReadLine, "")
WScript.StdOut.WriteLine eval(wExpr)
Loop
Set objRE = Nothing
WScript.Quit
*Charu3のプラグインから入力を得ることができます。 [#rfb88d05]
[[このサイトでの紹介記事>WindowsTool#w032b432]]
*PerlでSJISをUTF-8に変換するフィルタプログラム [#zaa6bde2]
**目的 [#o8c163b8]
まずcygwinでvbaから出力されたテキストをtailコマンドで閲覧するのが目的でした。
変換のnkfは、標準入力をいったん読み終えてから変換する仕組みであり、tailコマンドと組み合わせるには不向きなので、却下
qkcはutf8が使えないとかいうので却下
いろいろ試してみた結果、vbaからはsjisで出力して、
下記のperlで作ったシェルをパイプで連結することで目的が達成できることが判明した。
**コード [#w77fa348]
#!/usr/local/bin/perl
use strict;
use warnings;
use Jcode;
while(<>){
print Jcode::convert( $_ , "utf8", "sjis" );
}