<

![endif]-->

fc2ブログ

偶数か奇数かで引用符を切り替える

※引用符はASCII コードで指定すれば、下のようなことをする必要はありません。
アホとハサミは使いようというか、アホにハサミを持たせてはいけませんね!
というわけでTTLメーカーサンプルを見てください。



複数の引用符が連なる行をTTLマクロで自動送信するの続き。

1重引用符と2重引用符の両方を含むこのようなコマンド行。
echo "$MJ" |grep 'we' |egrep "[MJ]"

まず、先に来ない方の引用符(この例では「'」)で区切った配列にするとこうなる。 *1
0| echo "$MJ" |grep 
1| we
2| |egrep "[MJ]"
 *1: ふつうsplit関数やメソッドは区切り文字は削除して返すので、we の左右の引用符はなくなる。

それらを、配列の区切り文字に使ったその引用符で囲むとこうなる。
0| 'echo "$MJ" |grep '
1| 'we'
2| ' |egrep "[MJ]"'
この時点で、重複しない引用符で囲っての文字列リテラルとなっている。
ただし、もとの文字列の 'we' の「'」はつけ直す必要がある。あとは、配列インデックスが奇数のときに、そのさらに外側を「'」には「"」で、「"」には「'」で囲んでやればいい! *2

先頭にteratermマクロ関数の「send」と、最後にLFの#10も加えてTTLマクロになった結果は、
send 'echo "$MJ" |grep '
send "'we'"
send ' |egrep "[MJ]"'
send #10

デモはTTLマクロメーカー
ソースのサンプル。先にあるのが「'」なら「"」を、「"」なら「'」を返すような関数を用意しておいて、
function qType(s){
var sq = s.indexOf("'");
var dq = s.indexOf('"');
if((sq == -1)&&(dq == -1)) return "'";
if(sq == -1) return "'";
if(dq == -1) return '"';
if(sq < dq) return '"';
}
配列で回す。
var q = qType(s);
var array_s = s.split(q);
var qq = (q =="'") ? '"' : "'";
for(var k=0; k < array_s ; k++){
if(!array_s[k]) continue;
if(k % 2 == 0) rep +='send '+q+ array_s[k] +q+"\r\n";
else rep +='send '+qq+q+ array_s[k] +q+qq+"\r\n";
}
rep += 'send #10;


*2: シェルでそういう使い方が必要な時があるとするならば、行の最初に見つかった引用符が後ろでネストして使われているとだめ。たとえば、「echo "$MJ" |grep 'a"$b"c'」


複数の引用符が連なる行をTTLマクロで自動送信する

※引用符はASCII コードで指定すれば、下のようなことをする必要はありません。
アホとハサミは使いようというか、アホにハサミを持たせてはいけませんね!
というわけでTTLメーカーサンプルを見てください。



シェルコマンド行をTeratermマクロで自動実行するには、sendln関数に文字列を渡して記述する。
echo "Michael Jackson knows we sad. but we can not heal him"

であれば、マクロファイルには次のように書く。
sendln 'echo "Michael Jackson knows we sad. but we can not heal him"'

ここで気をつけるのは引用符だ。
sendln "echo "Michael Jackson knows we sad. but we can not heal him""
と書くと、マクロは"echo "の後ろの二重引用符を文字列リテラルの終了と解釈するので、それに続くMichael~はマクロソースとして解釈できませんという構文エラーになる。

リテラルとはソースコード中の定数のことで、多くの言語では文字列を引用符で囲んで範囲を指定する。TTLマクロも「'」と「"」を使用するので、上の問題が起こらないように使用する。

しかし、下のように1行内に両方の引用符が使われているケースでは、
MJ="Michael Jackson knows we sad. but we can not heal him"
echo "$MJ" |grep 'we' |egrep "[MJ]"
sendln 'echo "$MJ" |grep 'we' |egrep "[MJ]"'
sendlnに渡す文字列の範囲を指定しようがなくなるので使えなくなってしまう。

こういうときは、文字列に改行文字を付加しないもう一つの関数、sendを使って下のように書けば大丈夫だ。
send 'echo "$MJ" |grep '
send "'we'"
send ' |egrep "[MJ]"'
send #10
最後の#10は改行のLFで、TeraTerm画面上では元のコマンドそのままに
echo "$MJ" |grep 'we' |egrep "[MJ]"
と実行される。
しかし、こんなことを手でシコシコやっていては日が暮れてしまう。自動化する方法はないか?ということで作ってみた。面白かったのは、文字列を引用符ごとに切った配列のインデックスが偶数か奇数かどうかでsendで使うべき引用符が「'」と「"」のどっちを使うのか処理できてしまうところだった。というわけで続きは次回




Window7 テクニカルセミナー


場所は秋葉原駅前UDXビル。参加者はベクターの登録開発者限定だ。これはなにかプレミアムなのだろうか?

ベクターとマイクロソフトの共催でWindowsアプリ開発に積極的な人が200人以上収容できる部屋の後ろまで埋まっていた。

しかし、Windowsもデビューして20年弱。写真のとおり平均年齢は30代以上、前の方の席は40代以上。Windowsとともに年を重ねてきた人達なのだろう。「トッププログラマーである皆さん」ってマイクでおっしゃるけども、目をギラギラさせた人はいなかったし、全体の加齢臭はどうしても否めない。
「この業界は20年かけて大きな会社に成長しても、MSのように激しい競争にさらされ続けています。私はそんなところも好きなんです」と、MSの方が話されていて印象に残った。

考えてみれば、Windowsアプリにiphoneアプリと同じだけの金額を払う人は多くないだろう。コード量はずっと多く、機能がリッチだったとしてもである。

解説されるWindows7の新しいUI、タッチパネル対応にしても、連想するのはiphoneのそれであり、ちぐはぐな感じがしたのは僕だけだろうか。JavaScript2とHTML5+CSSで何でもできるようになるんじゃないかというご時勢である。そこに触れられることがほとんどなかったのが、僕としては残念だ。

MicroSoftは強力な武器を持っている。世界中のオフィスの重要なファイルはMicroSoftのフォーマットによって管理されているのだ。たとえそれらがどんどんクラウド化されていこうと(MS自身、オフィスをWEBバージョンで無料公開するといっている)、アプリケーションをJavaScript2とHTML5で作成しようというときのアドバンテージは大きいのではないか?なぜWindowsでアプリというとき、コーディング負荷のあるC++やC#でなければならないのか?僕には分からない。なぜガジェットという足かせを外さないのか?powershellとかsilverlightもいいけども。クリーンインストールされた職場のPCで威力を発揮するのはやっぱり、今は見向きもされないHTAだ。




『 脳のなかの水分子』 - 意識が創られるとき - 中田 力

脳のなかの水分子―意識が創られるとき

局所麻酔のように神経伝達をブロックするのではなく、麻薬や覚せい剤のように脳内のある受容体に作用するのでもなく、全身麻酔薬はどのようにして意識を消すのか。
普段飲んでいるアルコールにも似たような作用があるらしい。これも特異な受容体が存在しないが、へべれけに飲めば意識を失う。

飛行機の中で酒に酔いにくいのは、気圧が低いとアルコールが作用しにくいからである。全身麻酔薬にも、同じように大気圧依存性があるらしい。著者の理論では、

全身麻酔薬は脳の中で水分氏のクラスター形成を安定化させ結晶水和物とする。それが、恒温動物の脳で起こる水動態に変化を与える。


読み終わってもまだピンとこないのだが、言わんとするところには非常に興味がそそられる。(先端的な研究者が集まって日夜議論が行われたサンタフェ研究所が、もしかして人類に啓示をもたらすのではないかと思われた、あの複雑系が華やかだった頃を思い出す)

脳はビン漬けの食材のように、頭蓋の中で水に浮かんで活動している。どうやらその水に満たされた状態が、脳が単なるコンピュータ以上の機能を持つための条件のようである。

松岡正剛氏といえば、僕が大学生だったころに情報学の本をばんばん出していて、出るたびに啓示を受けようと図書館でかじりついていた記憶がある。それで『脳のなかの水分子』中田力 松岡正剛の千夜千冊・遊蕩篇を見て思わず読んだ次第だ。詳しい説明はこちらを見るとして、液体の水は物質として他に類を見ないユニークな性質をもっている。

ようは、水素原子2つと酸素原子1つの水分子は絶えずくっついたり離れたりしてイオン化したり、少し大きな塊(クラスター化)になったりしている動的な複合体で、これは物質として他に類を見ない性質であり、全身麻酔薬やアルコールも脳細胞の特定の受容体ではなく、この動的な状態に作用を及ぼすことで、人はへべれけに酔ったり、意識を失ったりしているのだという実証である。本の中ではもっとその神秘性がもっと説明されているが、それは読んでのお楽しみだ。

人間の意識は脳が高度に発達したがゆえのものであることに間違いはないが、物事を一瞬で総合的に判断したり、いわゆる直感で答えを導き出したりするのは、言われたことを言われた手順でやることしかできないコンピューターとの大きな違いである。
しかしそれは、脳神経の細胞構造がいくら膨大な数のネットワークで機能しているといっても、数の力でどうにかなるものではない。それでは単純な脳しかない昆虫やネズミの行動を計ることはできないし、またその意識レベルを認められなければ、花を愛でたり動物をかわいがったりすることもできないだろう。人に見つかったゴキブリが実際「うわー!ヤバス!」と叫んでいるわけではないが、その状態で逃亡を図っているのだということは、崖の上のポニョが人面魚であることと同じように間違いないことなのだ。

つまり(何が「つまり」だが)、水がまさに渦を巻いて熱対流するように、脳も渦を巻いていわば全体が常に発火しているような状態が我々の「意識」であるという結論である。p163の一節を少し手前から引用しよう。

脳には乾いた空間がある。それは、グリアのマトリックス構造と相まって、ニューロンネットワークを保護する緩衝材を作り上げている。ラジアル線維が消失したあとの空間を乾いた空間として保つことによって、最も効果的な冷却装置を保証し、かつ、実質的な球形を保つことによって、脳皮質全体に、熱放射による等価のノイズを与える。意識とは、実質的なエントロピー空間である大脳皮質に起こる最もエントロピーの高い状態、つまりは、等価のノイズが作り出す現象である。現象論的にいえば、大脳皮質のニューロンがランダムに発火している状態である。脳が情報を受け入れる準備のできている、覚醒した状態である。


これが一般人向けの説明ということであれば、まずこの息つく間もなしのたたみかけっぷりからその内容まで、さま~ずの三村並みに突っ込みたくなる。エスタブリッシュな脳科学分野ではこの理論は「おかしな話」でもあるそうで、とはいうものの著者はノーベル賞に最も近い研究者なんちゃらにも選ばれていて、MRIの権威でもあるらしい。そんな人がこんなロマンチックな話を前のめりになって聞かせてくれたので、僕はうれしくなった。少なくとも女を口説くには話しの内容ではなく話し方であるということは学べる。

「神はサイコロを振ってはいないが、たくさんコインを投げているのである」という話を有名なマルコフ連鎖から説明されており、それが大脳の形をどう作っているかという仮説は、表紙の画像にも紹介されているが、そこから脳の中の意識の形成にどう結びつくのかというところが、一般向けの本としては説明不足だろうか。それができればノーベル賞なんだろうけど。



while(aho.atEndofStream)

笹部 政宏
笹部 政宏
mail




フリーソフツ
Category
はてブ
Monthly Archive
New Entry
New Comment
New Trackback
RSS
Copyright © Kittens flewby me All Rights Reserved.