2016-03-12

zsh: グロッビング・パターンを含むパラメータを持つコマンドを「eval」で実行する

zsh: グロッビング・パターンが含まれたパラメータの有るコマンドを「eval」で実行するには  ««« 日本語
zsh: To execute "eval" on a command with globbing pattern. ««« English

はじめに



zshの関数に配列をパラメータとして渡す方法をトライしたが、失敗した。次善の策として「eval」に興味を持ったので調べてみた。初めには、参考資料1のp298に示されている「パラメータ展開フラグ;: ${(e)cmd}」を触ってみたが上手くいかなかった。


Google 検索で参考資料2を拝見すると,凄い記述、Figure  2、に衝突した。「${=cmd}」という簡潔で「eval」を体験できたのです。

Figure 1.

  • 参考資料2: zshとbashでは変数の単語の分割ルールが違う。http://qiita.com/mollifier/items/7fdbf15765ccf37f4881
    • zshとbashでは変数の単語の分割ルールが違う
      • zshでbashと同じようにスペースで区切る → 方法2: % ${=Cmd}

常用している参考資料3のPDFで「${=cmd}」を検索すると、如何にもな「${~cmd}」があった,Figure 2,ので試行錯誤した。

Figure 2.


 何はともかく試行錯誤したら上手くできたので、具体例をご紹介します。


結果



テストディレクトリには3つのファイル:aaa, bb, ccbaa:があります。
% ls
aaa    bb    ccbaa

次のコマンドを投入すると;
% cmd="ls -dF"
% prm="*a*"  
% ${=cmd} ${~prm}
aaa    ccbaa


確かに、目的が実行できました;



検討


結果で使った$cmdでグロッビング・パターン(*a*)を入れた場合を示します;
% cmd="ls -dF *a*"
% ${=cmd}
ls: *a*: No such file or directory

  • グロッビング・パターン(*a*)が解釈されずにファイル「*a*」としてパラメータに追加されたようです。


ところが、この$cmdにevalを作用させると、上手くいきます。
% eval $cmd
aaa    ccba

しかし、zsh製作者さん達が${~val}を製作した以上、evalのzsh版を探しました;
% ${=${~cmd}}
aaa    ccba
  • 最初に、${~cmd}でグロッビング・パターン(*a*)が解釈し、
  • ${=...}で、 全体を分割してshellに渡して、
  • Shellがそれを実行。
要するに、,zsh製作者さん達の真意は下記だったのでしょうか;
  • 「eval $cmd」=「${=${~cmd}}」
    • 此処まで来ると、evalの方がシンプルか。
    • 私が製作者なら、 「${=~cmd}」を許すかな。


参照資料

  • Reference 1: From Bash to Z Shell,  Oliver Kiddle et. al., Apress, ISBN-13:978-1-59059-379-9.
    • p298, ${(e)cmd}: Perform shell expansions on the value.
      • cmd="ls" works well! but unfortunately cmd="ls -l" not work.
  • Reference 2: "The variable splitting rules to words" differs between zsh and bash. 
    • http://qiita.com/mollifier/items/7fdbf15765ccf37f4881
      • To get same result of "Word splitting by space" in bash, a elegant way in zsh is :  % ${=cmd}.
  • Reference 3: "Zsh Referrence Card.pdf"
    • http://www.bash2zsh.com/zsh_refcard/refcard.pdf
      • Search "${=" in pdf.


この記事の履歴
  • 開始 2016-03-12(土) 01:33
  • 追加 2016-03-13(日) 23:21 検討
  • 追加 2016-03-14(月) 15:17 検討: ${=${~cmd}}

2015-12-30

iPhoneと顕微鏡レンズの組み合わせ評価

前々回の記事で、ディスプレイ上に表示した色文字を「正三角形のプリズム」で屈曲・分散させると「赤い色」が「青い色」よりも強く屈曲するような不思議なデータとなった;

これの関連を追うために、昔から持っていた小型マイクロスコープ(National製, BF-959: x10..x30)で観察したが、視力の弱った私には明確な結果がでないし、画像データの記録がとれない。そこで、Amazonで調べると「USB 顕微鏡」と言うジャンルがあるが、Macで使えるものは少ないし、高い。そのうちに、iPhoneのレンズの前に装着して顕微鏡とか望遠鏡にするジャンル があるので、一番安い顕微鏡を購入してみた;

この顕微鏡の性能がどれくらいかをテストしたので、以下に説明します。測定対象は;
  1. アルミのスケール(新潟精機製、AS-45): 1目盛 = 1mm.
  2. iMac (21.5", Late 2009)のモニタ表面: 100dpi = 4dot/mm.
    • 「光沢液晶」のまま。
撮影に用いたのは;
  • カメラ: iPhone 6s plus, iOS9.1 +  COM-SHOT装着
  •  アプリケーション: SQUARE mode
    1. スケール撮影: 組み込み "Camera"
    2. iMac撮影: "Camera+" :下記パラメータを独立して設定できるので購入
      1. 焦点設定場所
      2. 露出設定場所
      3. 電子ズーム設定

アルミのスケール

iPhoneの電子倍率=最小。
大目盛間隔=5mm ↔︎ 26mm@iPhone画面。


iPhoneの電子倍率=最大。
小目盛間隔=1mm ↔︎ 25mm@iPhone画面。

  • 「測定倍率」の定義: 「iPhone画面での長さ」/「実際の長さ」
    • 図1:  26mm/5mm = x5.2 ~ x5.
    • 図2:  25mm/1mm = x25.


iMacの液晶での「I」の字

iPhoneの電子倍率=最小。
「I」の実の幅~1mm。

iPhoneの電子倍率=最大。
Magenta = Blue + Red。

  • 図3では、4本のマゼンタ色の縦線にしか見えないが、
  • 図4では、4対の青色セルと赤色セルに分離して見えている、
    • 光の加色の性質:「magenta = blue + red」に一致している。
    • 右に行くにつれてフォーカスが低下している理由はまだ分からない。



検討


図1や図3の「iPhoneの電子倍率=最小」をレンズだけの倍率と考えるのが自然だろう。とすると、図2や図4の「iPhoneの電子倍率=最大」も含めて考えると、次のようになる;
  • レンズ倍率 = x5、電子倍率 = x1、合成倍率 = x5 * x1 = x5。
  • レンズ倍率 = x5、電子倍率 = x5、合成倍率 = x5 * x5 = x25。
合成倍率 = レンズ倍率 * 電子倍率

図4のフォーカス低下の理由は、幾つかの複合した結果かもしれない;
  • 液晶面とレンズの垂直性
  • 固定の剛性
  • Camera+のFocus•Stabilizerの処理能力

レンズの最終的な性能を見極めるには「iPhone 6s plus」の分解能(400dpi ~ 16dot/mm)がどれくらいに見えるかで判定できそうだ。


この記事の履歴
  1.  開始 2015-12-30(水) 01:08  
  2.  追加 2015-12-30(水) 10:05 合成倍率 = レンズ倍率 * 電子倍率

2015-12-29

プリズムによる太陽光の分散

前回の記事で、ディスプレイ上に表示した色文字を「正三角形のプリズム」で屈曲・分散させると「赤い色」が「青い色」よりも強く屈曲するような不思議なデータとなった;

念のために「太陽光」について、同様の実験をした。結論を先に言えば;
  • 太陽光では、「青い色」が「赤い色」よりも強く屈曲する」という通常のデータとなった。

今後の説明のために、簡単に設定を図に纏めました。



図1 全体

図1 全体像:三脚の上部にプリズムを設置。
後方左側にパネル。
  • 太陽光は、写真機(iPhone 6s plus)とプリズムの延長後方から入射している。
  • プリズムの一つの頂角が太陽に向かうようにした。
  • プリズムの右側面から太陽光は入射(30°)し、左後方のパネル方向に出射する。


図2 プリズムとパネル

図2 プリズムとパネルの延長線上からの写真。
  • 図1より右側に移動して、プリズムとパネルの延長線上ちかくから撮影。
  • プリズムの入射面を「X」マークで表示。


図3 パネルの拡大


図3 パネル拡大。



図4 パネルにアルミ製スケール

図4 パネルにアルミのスケールを配置。




図4 アルミ製スケールに露光を合わせた


図5 :  図4と同じ撮影ですが、
スケール部分に、iPhoneの露出(Exposure)を合わせた。
  • 写真では分かりにくいが、肉眼では;
    • 「5cm」の数ミリ左から、
    • 「40cm」の数ミリ右まで、
    • 「全幅〜6cm」までの連続スペクトルと見える。
  • 屈曲の度合い;
    • 青い光ほど左側で、強く屈曲し、
    • 赤い光ほど右側で、弱く屈曲している。
  • プリズムの幅は3cmで、そこからの屈曲光が208cmの距離で、6cm分散された訳だ。


この記事の履歴
  1. 開始 2015-12-29(火) 20:15

2015-12-16

 三角柱プリズムの分散実験用データと測定画像

 測定用サンプル


◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼︎◼
◼            A         
                       
           C        

           |           
           |          
           |          
            |          
            |         
            |            
 ◼            |          
◼ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎
           |           
           |          
           |          
            |          
            |         
            |            
 ◼            |         
◼ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎


三角柱プリズムの分散画像

Figure 1.   Photo of the sample whichi is bent and dispersed in the triangular prism(Fig.2)
  • 図1 三角柱プリズム(Fig. 2)で屈曲・分散したサンプルのカメラ画像。


実験のレイアウト 


Figure 2.  Side view.


Figure 3. Top view.

図1の謎

図1の「黒地に白い文字」部分の拡大をを図4に示す;

Figure 4 Enlarged part of the "white text on a black background" in Fig. 1.



この記事の履歴
  1. 開始 2015-12-16(水) 00:19:05
  2. 修正 2015-12-16(水) 07:42:43  タイトル変更  「三角柱プリズムの分散実験用データ」→「三角柱プリズムの分散実験用データと測定画像」

2015-10-28

Chromebookに装着された外部キーボート上のFn-Keysの操作表

Chromebookに装着された外部キーボート上のFn-Keysの操作表
  • Operation Table of Fn-Keys on the external keyboard attached to the Chromebook

 表1.  ファンクション・キーの操作


Fn
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
Symbol
-D
+D
_S
-S
+S
Action
previous
Page
next
Page
reload
Page
toggle
Frame
show
Desktops
darker
Display
brighter
Display
stop Sound
smaller Sound
larger Sound

表2. Google日本語入力での操作


Fn
F6
F7
F8
F9
F10
Symbol
-D
+D
_S
-S
+S
Action
かな
変換
カタカナ
変換
半角カタカナ
変換
全角英数
変換
英数
変換

  • 外部キーボード: 脳内で指動作がリンクされているので、この表は不要。
  • 内部部キーボード:「Action --> Symbol」が必要でしょう。
  • でも、Google日本語入力ではタブ補完が強力なのでいらないかも。

背景


私と私のMacは、高齢になっている。私は「iMac (21.5" Late 2009)」と 「Mac mini (Mid 2011)」とを使っています。これらのマシンのチューニング中に不都合が生じた時にsshを確保したいと思いました。「小型で安価なLinuxマシ ン」をAmazon日本で検索すると、Chromebookが目にとまりました。

「Chrome OS」はちらほら拝見したことがあるものの、Chromebookは私にとって未知の物でした。Google検索によると、shellが動作するのが判明 した、素晴らしい。この分野では、AcerやASUSなどの台湾勢が評判がいいようだ。2000年に、私はマザー・ボード(ASUS)を使って Windowsマシンを組み立てたが、それは10年間も稼働した。そこで、ASUS製のChromebookの資料を探した。「ASUS Chromebook Flip C100PA」が浮上した;

  • RAMには2/4GBがある。日本での4GB版は極端に高価である。
  • 日本ASUSはUSキーボードが付いたChromebookを取り扱いが無い。
  • 日本Amazonでは、複数の方々がUSキーボードが付いたChromebookを米国Amazonから取り寄せているとリポートしている。
  • 米国Amazonでは;
    • 妥当な価格がついている。
    • 代理店経由せずに直接送付する。
私は「ASUS Chromebook Flip C100PA-DB02, RAM4GB」を発注してから2日で入手できました、UPSに感謝!念のためにASUS日本には直ぐにユーザ登録をしました。
  • IPS液晶ディスプレイは視野角が広いので、Macとの連携作業に適している。
    • Croshでの感触はいい。
    • 色も綺麗なので、静止画が主なウェブ検索にも役にたつ。
  • タブレット・モードが可能なので、外付けキーボードとの最適配置を見出せそうです。
    • 思った以上に遊べそうだ。
  • Google Driveを経由して、Macとのデータ共有もできるか?

私はこのマシンに少し慣れてきた。テント・モードで外付けUSBキーボード を接続して、最適配置を見出すべくテストを始めました。
  •  外付けUSBキーボード::  SANWA: SKB-E3U (USB)

このようなセッティングでは、内部キーボードの最上段行に描かれている操作マークが見えなくなってしまう。その代わりに、外部キーボードのファンクション・キーに対応した操作表(Table 1,2)を作りました。



____
この記事の履歴
  1. 原稿 2015-10-25(日) 17:03:21  
  2. 公開 2015-10-28(水) 19:50:28 
  3. 追加 2015-10-29(木) 09:35:23 表2: 説明  

2015-09-28

Yosemiteで、ClipMenuからConsoleに向けたデータのコピーが直ぐにできない。

経緯


Console画面で「CGSConnectionByID」を検索したくなったので、常用の「ClipMenu 1.0.0 alpha (Build 1)」からペーストしようとしたところ単純にはペースト出来なかった。
色々トライしたけれど、この奇妙な現象は他のアプリケーションでは起こらなかった。ClipMenuの製作者さんにメールで連絡を取ろうと探したのですが、見当たりませんでした。
同じような現象で驚かれる方のために報告しておきます。

現象の図示

Figure 1. (1) Click serchi box at Consele, (2) Select Clipmenu and confirm 1. as searching word.
Figure 2. (3) A black box appearred when I push-down mouse at  "CGSConnectionByID" on ClipMenu.
Figure 3. No word apeared when I push-out.
Figure 5. The word is pasted correctly when I clicked the search window and type ⌘•V.

検討

  • ステップ(5)でペースト出来たという事は、ステップ(4)でClipMenuのクリックされた部分が正しくペースト・バファにコピーされた。しかし、ペースト・バッファからは検索窓にペーストされなかった。
  • 試しに「黒い箱」からConsole画面を遠くに置いたが、改善しなかった。
  • またその他のアプリケーションでは問題が生じていない。

____
この記事の履歴
  1. 開始 2015-09-28(月) 18:58:11

2015-09-19

Yosemiteでの、SSDReporterの導入とデータ状況

最近は"Yosemite 10.10.5"の観察に時間が取られて、このbloggerへの投稿が滞っています。

さて、私の主マシンは"Mac mini (Mid 2011)"ですが、2013年の初頭に内臓HDD*1を内臓SSD*2に換装しました。そのときに「Apple サポート コミュニティ」で有用な論議を頂きました。改めて感謝いたします。

それ以来;
  • 2つのSSDは正常に動作していますし、
  •  "Disk Utility"も "SMART Status: Verified" を示しています。
"Disk Utility"の出力を示します、図1a, 図1b,;
Figure 1a. System drive at Disk Utility

Figure 1b. Data drive at Disk Utility


"Yosemite 10.10.5"は安定した動作を始めたので、内臓ドライブの"SMART Status" を定量的に示すアプリケーションを検索しました。その結果、「SSDReporter」を見つけ、「App Store」から「¥ 480.」で入手しました。2台のSSD情報を下図2に示します;


Figure 2. SSDReporter output


これらのドライブの利用状況は、ターミナルで「df -H」 というコマンドにより得ることが可能です。このコマンド出力の最右列「Mounted on」を付けると見やすくなります。

Figure 3. "df -H / / Volumes / SS2 "


今後、上に示した情報を、長期に渡って計測すると、SSDの経時的劣化の挙動が解るかもしれません。素人予測では「Health: 70%」位を閾値として観察しようかと思います。



(追記)図2から4ヶ月経過のレポート

Figure 4.  SSDReporter output after four months.

図4と図2を比較しても変化が見られません。図2では、初期不良のセグメントが数パーセントもあって 驚きましたが、4ヶ月経過で1%以下ならば安定していると思われます。


この記事の履歴
  1. 開始 2015-09-19(土) 17:25:00
  2. 追記 2015-12-30(水) 12:09:25 図4 4ヶ月経過しても変化無い




注目の投稿

Terminalでの、なんちゃってViモドキ

近頃、ようやくKarabiner-Elementsに慣れてきたので、 Terminalで動作する「擬似Vi-Mode」を作って見たので、ご紹介します。 『概要』 「擬似Vi-Mode」の所以は、方向キー「←↓↑→」を通常の「hjkl」ではなくて「jkil」としました。これ...