マウスを使わない作戦

孫さんが英国の知恵ARMを買収するってんで、びっくりしてます。まあ、この時期に 買わないと、絶対に買えませんから、借金作ってでも買っておくっていう博打に 打って出た訳だな。

ロボットのペパーだかは、人工知能が流行った時のI/Oにするってんで、赤字覚悟で 種を撒いてるし、、こういう元気印の人大好き。

そう言えば、彼は昔、白装束でモデムを配りまくっていたね。今回のARM買収を記念 して、ARMな石を無料で配らんかね。IoTの種でっせ。

ああ、石だけ配っても、何も出来ないから、ラズパイなんてどうでっしゃろ。 最近、日経Linuxは日経ラズパイの感がしてるんで、ジョイントビジネスね。

幾ら安いと言うラズパイと言えども、不自由なく使おうと思うと、 ラズパイ ( Raspberry Pi ) を始めるときに用意したいもの ぐらいは必要になるので、将来の投資と思って、宜しく。技術立国、日本に貢献した って事で、陛下から勲章貰えますよ。

ARMもv8で、64Bitっていう具合に、カバーレンジを広げつつある。先輩格の インテル界隈は、とっくに64Bit世代にシフトしちゃってて、最近では、 i386アーキテクチャを捨てる時期に入ったLinux なんてのが、話題に上ってる。

こうして、オイラーは追い詰められるのさ。でも、さすがに128Bitってのは聞こえて こないな。ノイマンのボトルネックを意識して、新しいアーキテクチャにシフトを 目論んでいるのかな。

量子コンピュータとか言うやつね。冷却装置が必要になるんで、今からダイキンに 投資しておけ。そのうちに、大儲けできるぞ。

それまで待てないって人は、手っ取り早く、ポケモンGoと連携するって言う、 ジャンク食屋だな。

大丈夫、歩き回れば、シャンク食をたらふく食べても、脂肪は溜まりませんから。 ああ、砂糖水メーカーも狙い目かもよ。

ニンテンドーも、国民の体力増強及び、引きこもりを外へ引っ張り出したって 名目で、勲章を貰えるカモ?

マウスを使わない作戦

暫く前から始まった、Windowsでマウス撲滅作戦(マウスを使わない)が佳境に 入ってきた。

最後の大物は、この駄文を書くのに使ってる、Windows上のeditor。これの採用理由は UTF-8が扱える事と、行末文字指定がWin風、Mac風、Unix風と自在に指定出来る事。 ポインターの移動は、マウスを 使うか、矢印キーだけ。推敲に使う、切った貼ったは、マウスのお世話にならざるを 得ず、ちょいむかつくようになった。

だったら、vimを使うか? でも、あれはモードが有るから、ちょっと煩わしい。 ならば、emacsか。一応日本語入力は出来るんだけど、変換ウィンドウがとんでもない 所に出てきて不便。

unixには、日本語版のPuTTYを使って接続してるんだけど、この端末で emacsを起動すると、日本語がその場入力出来る。これなら、 Windows7のIMEが、そのまま使えるから、ウブみたいな悩みは不要ですだ。

一つ問題が。それは、色々なunixを渡り歩いて、実験結果を貼り付ける事が多い。 だから、原稿は特定なunix上に置くのではなく、Windows上に置きたい。

すなわち、unix上から、Windows上にある原稿を編集したいのだ。そんなの簡単。 VMWARE Playerに、共有設定が有ったろうに、それを使えばいいんでないかい。

調べてみると、共有を使うには、VMWARE Toolsとかを入れないと駄目みたい。 VM上のCentOSとホストOS(Windows7)とでファイル共有したメモ

FreeBSDとかOpenBSDとかの物は、勿論無い。ひょっとして、最新のPlayerならと 思い、新しいのを貰いに行った。そしたら、時代は64Bitつう事で、32Bitは 見放されていました。残念至極。

次なる手は? って、考えたら、sambaが有るじゃん。これでWindows側で共有許可 したのを、unix側でマウントして使うって手を思い付いた。

LinuxでWindows側ファイル編集

Windows上のファイルにLinuxからアクセスするには(mount.cifs編) 最近は、sambaも新しくなって、上記のようにするらしい。

samba-clientを入れて

sakae@ub:~$ sudo mount -t cifs //winip/piki /mnt/win -o username=sakae
mount: mount //winip/piki on /mnt/win failed: Connection refused

こんなエラーを喰らった。ならばFedoraではどうか?色々調べていくうちに、入れる 物は、cifs-utils も必要って分かった。節操もなく仕様が変更されるな。

[sakae@fedora ~]$ sudo mount -t cifs -o user=foo,password=hoge //winip/piki /mnt/hgfs
Unable to find suitable address.

状況が変わったな。そんなアドレス駄目ってさ。どうも間違ったアドレスを指定 してるっぽい。それならばと、lastコマンドで表示されるアドレスを使ってみよう。

[sakae@fedora ~]$ sudo mount -t cifs -o user=foo,password=hoge //xxx/piki /mnt/win

これでやっと、マウント出来た。やれやれって、お前ネットワークの事すっかり忘れて いるだろう。VMWAREを入れると、仮想ネットワークがWIndowsに用意され、その 仮想の方にunixがぶら下がるのよ。だからそっちのアドレスxxxを使わないと、 Windowsには到達出来ないのよ。

Windowsが本来使ってるリアルなアドレスwinipへ、全てをルーチン愚してくれない 限りはね。そんな事を、ほのかに思い出したのさ。

で、それはいいんだけど、/mnt/winの中のファイル類は全てrootさんの持ち物。 これは困った。何とかしたい。調べてみたら、 CentOS 6.4 から Windows共有フォルダをマウントしたいなんてのが見つかった。

その例を参考にしたけど、やはりrootの持ち物になってしまう。これはもう、 uidとか直指定だな。

sudo mount -t cifs -o uid=1234,gid=1234,user=foo,password=hoge //xxx/piki /mnt/win

これで、何とか目的を達した。振り返ると、

sudo apt-get install cifs-utils samba-client

これが、一つの山。もう一つは、VMWAREが用意したアドレス系を使う事。 これで、リナ系はOK。

[sakae@fedora ~]$ df
ファイルシス            1K-ブロック      使用    使用可 使用% マウント位置
/dev/mapper/fedora-root    10795008   6508372   4286636   61% /
  :
//XXX/piki                232727548 123623424 109104124   54% /mnt/win

FreeBSDでWindows側ファイルの編集

次は、FreeBSD系なんだけど、こんな設定をするみたい。

mount_start()
{
    while :
    do
    /sbin/ping -c 10 10.8.0.1 > /dev/null
    status=$?
        if [ $status -eq 0 ] ; then
            /usr/sbin/mount_smbfs -N -I 10.8.0.1 -g (ユーザのGID) -u (ユーザのUID) //(Sambaユーザ名)@10.8.0.1/workgroup /mnt/(マウントポイント)
            break
        fi
    done   
}

実際にやってみると、接続が拒否されましたってなる。どうも産婆の認証方法に 差が有るようだ。調べてみたらWinなさーバーは、名前じゃないと駄目みたい。

mount_smbfs -I xxx -u 1234 //foo@xxx/piki /mnt/win

これで、動いた。dot.nsmbrcにパスワードも書いておけるようだけど、そうすると 認証失敗してしまうので、取りあえず諦めた。

$ cat .nsmbrc
[default]
workgroup=WORKGROUP

[FSERVER]
charsets=ja_JP.UTF-8:cp932
addr=xxx

[FSERVER:FOO]
password=hoge

このドットファイルは、見よう見まねなやつ。最初サボって、charsetsを設定 しなかったら、iconvのテーブルがどううたらこーたらって文句言われたの。 ファイル名の変換に使ってるんでしょうか。オイラーは、おじいちゃんの 言いつけで、ファイル名は英数字のみを固く守ってるから、どうでもいいん ですが。

そして、最後の最後で、上記のマウントコマンドに、-Nを追加して、 パスワードをファイルから読むように指定したら、下記のエラー

mount_smbfs: unable to open connection: syserr = Authentication error

一説によると、passwordは、下記のようにして、出てくるものを設定する そうなんだが、だめだったよ。

$ smbutil crypt hoge
$$16e4a4130

取りあえず、諦めモードで、パスワードは手打ちする。

$ df
Filesystem       1K-blocks      Used     Avail Capacity  Mounted on
/dev/ada0s1a      13188572   6776184   5357304    56%    /
devfs                    1         1         0   100%    /dev
fdescfs                  1         1         0   100%    /dev/fd
//FOO@XXX/PIKI   232727548 123353872 109373676    53%    /mnt/win

もうこれぐらいでいいか。ああ、emacsを使う時はLANGをきちんと合わせて おかないと、漢字が入力出来ないという特性がFreeBSDにはありましたよ。

悔しいので、再チャレンジ。ドットファイルは誰が使う? sudoしてrootに 化けるんだから、そりゃ/rootに置くのが本筋。設定は、いろいろぐぐって

[default]
workgroup=WORKGROUP

[XXX]
#charsets=ja_JP.UTF-8:cp932
addr=ip-address

[XXX:FOO:PIKI]
password=$$16e4a4130

設定ファイルの例からだけじゃ、読み取れなかったぞ。鍵括弧の中は、大文字なんて そんな暗黙の了承事項なんて、知るかい。と思ったら、節穴な眼をしてた。

# SMB library uses next forms of section names (please note that the section
# name should be in upper case when it refers to server, user or share):
# A) [default]
# B) [SERVER]
# C) [SERVER:USER]
# D) [SERVER:USER:SHARE]

コメント部分は読み飛ばして、実例の部分を評価してたんです。これぞ、オイラー風 のコンパイラーですだ。こうするとスピードアップ出来るでしょ。(と、言い訳)

$ smbutil lc
SMB connections:
VC: \\XXX\FOO
(root:wheel) 711
    Share:    PIKI(root:wheel) 711

ほー、なる程ね。711ってのは、パーミション? ソース嫁。

OpenBSDでWindows側ファイルの編集

OpenBSDではどうする? 調べてみたら、 Sharity-Light ってのがある 事が分かった。早速pkg_addしたよ。

IPアドレス直の指定は怒られるので、/etc/hostsにxxxを登録しておいて

# shlight //xxx/piki /mnt/win -U foo -P hoge -D0xFF
psitable_insert(): inserting inode 449722290: -><-
Kernel: smb_proc_connect: Passed SESSION REQUEST.
Kernel: len: 105, wct: 17, bcc: 36
Kernel: smb_proc_connect: Request SMBnegprot..Kernel: Verified!
Kernel: smb_proc_connect: Server wants NT LM 0.12 protocol.
Kernel: smb_proc_connect: password = HOGE
Kernel: smb_proc_connect: usernam = foo
Kernel: smb_proc_connect: blkmode = 0
Kernel: smb_proc_connect: workgroup = WORKGROUP
Kernel: len: 35, wct: 0, bcc: 0
Kernel: smb_errno: Kernel: ERRDOS - ERRnoaccess (Access denied.)Kernel:
Kernel: smb_proc_connect: SMBsessetupX failed
error connecting to server: [13] Permission denied

南中エラーだ。LM 0.12とか言うのをしゃべらないと拒否するんか。M$って何様だ、 偉そうに気取るんじゃねぇ。ぷんぷん。

あらら、# sysctl kern.usermount=1 とか やってから使う、usmbなんてのも有るぞ。/dev/fuseが必要とな。 ユーザーランドでマウントするって、離れ業をやるらしい。

/dev/fuse0がrootの持ち物で、fuseのマウントが失敗した。また、homeに置いておく usmbな設定ファイルのパーミションをちゃんとしないと、怒られる。そりゃそうだわ。 大事なパスワードが入っているんですから。

ってな事で、.usmb.conf

<usmbconfig>

  <credentials id="cred1">
    <domain>WORKGROUP</domain>
    <username>foo</username>
    <password>hoge</password>
  </credentials>

  <mount id="win" credentials="cred1">
    <server>xxx</server>
    <share>piki</share>
    <mountpoint>/tmp/win</mountpoint>
  </mount>

</usmbconfig>

こんな方法で、マウント出来る。本当は、マウントポイントを、FreeBSD等と同じに しようと思ったんだけど、

[ob: ~]$ usmb win
usmb - mount SMB shares via FUSE and Samba
 :
[ob: ~]$ fuse_mount on /mnt/win: Operation not permitted

こんなエラーを喰らってしまうのさ。オイラーのかすかな記憶では、マウントポイントって、 全てのdirにおいて、そのユーザーの持ち物の必要性が有ったような。

usmbは、ユーザーレベルでマウント出来るような特殊なマウント方法の支援をfuseってので 受けている。でも、その神通力も、/mntの牙城では役に立たなかったって訳だ。そんな 事で、ゆるやかな所をマウントポイントに選んでる。

[ob: ~]$ usmb win
usmb - mount SMB shares via FUSE and Samba

Copyright (C) 2006-2013 Geoff Johnstone.
Licensed under the GNU General Public License.
usmb comes with ABSOLUTELY NO WARRANTY; for details please see
http://www.gnu.org/licenses/gpl.txt

Please send bug reports, patches etc. to geoffjohnstone@acm.org
[ob: ~]$ df
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/wd0a      7731068   4840800   2503716    66%    /
fusefs          909091    479908         0   100%    /tmp/win

わーい、やったね。 ああ、usmbは、sysutilisに入っていたよ。

[ob: ~]$ usmb -v
usmb version: 20130204 (stable)
FUSE version: 2.6
Samba version: 4.1.22
[ob: ~]$ usmb -u win
Failed to execute fusermount: No such file or directory

fusermountってどのパッケージが提供してるの? fuse-utilisには入っていない ようだし。fuseってエミュレータのカテゴリに置いてあるってのも不思議な感じだ。

[ob: ports]$ find . -name PLIST -exec grep fusermount -l {} \;
./shells/zsh/pkg/PLIST

とかやって、梱包リストから探してみたけど、zshのそれは見当違いだったよ。 後は、usmbのメンテナに事情を聞いてみるぐらいしかないかな。

そんなまどろっこしい事しなくても、umountでいいんちゃう? FreeBSDでは そういう主義っぽい。リナとは違う主義ですからね。

何とか使えるようなレベルになったけど、usmbを起動すると、プロセスがずっと 存在してる。多分unmount出来れば、usmbのプロセスも終了すると思うんだけど、 ずっとプロセスが生きていないと、Windows側が見えないと言う事は、不慮な 事故で、プロセスが死ぬと、良からぬ事が起きそう。ご試用はビクビクモード、 夏の肝試しモードでどうぞっぽいな。

fusermountは、 Linuxだと標準で入っている。manから引っ張ってきた一部

DESCRIPTION
       Filesystem in Userspace (FUSE) is a simple interface for userspace pro‐
       grams to export a virtual filesystem to the Linux kernel. It also  aims
       to provide a secure method for non privileged users to create and mount
       their own filesystem implementations.

       fusermount is a program to unmount FUSE filesystems.

HOMEPAGE
       More information about fusermount and the FUSE project can be found  at
       <http://fuse.sourceforge.net/>.

ああ、Windows側の共有設定は、簡単だった。共有提供したいdirを右クリックして、共有の その他から、ユーザーfooを選んだだけ。NFSのWindows流マウスオペレーションって 所か。余りNFSは好きになれないんだよな。過去に痛い目に遭っているんで。

こうしてemacsの恩恵を最大に受けられるようになった。 emacsで普通の文書を書くなら、 Org Mode マニュアル を見て、使ってみてって事らしい。色々な人がorg-modeを推薦してるぞ。

usmbを使ってみて

fusermountが何処にあるかパッキングリストを探す時、findのオプションでgrepを 起動したけど、xargを使った方が速いのかな? やってミレ。

[ob: ports]$ time find . -name PLIST | xargs grep fusermount
./shells/zsh/pkg/PLIST:share/zsh/${V}/functions/_fusermount
    3m19.41s real     0m04.34s user     0m16.52s system
[ob: ports]$ time find . -name PLIST -exec grep fusermount {} \;
share/zsh/${V}/functions/_fusermount
    3m43.32s real     0m17.83s user     0m47.60s system

有意な差が有るって事で、宜しいかな。

と、DISKアクセスをガンガンやっていると (sudo sh /etc/weeklyとかもその類)、usmbでマウントしたものが、自然に umountされるっていう恐ろしい事が起こった。たまにマウントポイントも 見えなくなるって事も怒り、オイラーも怒っております。やっぱりホラーだな。

自分から積極的にumount出来るかと思ったら、root権限無しでumount出来ちゃった。 不思議な感覚だな。

それと、emacsを使っていると、

[ob: win]$ ls .#*
.#-emacs0trPFB* .#-emacs2YKDWO* .#-emacsFfc6vO* .#-emacsuf2RUG*
[ob: win]$ cat .\#-emacs2YKDWO
sakae@ob.bar.bas.jp.7110[ob: win]$

こんなのが出来てる。これって、usmbの仕業かな? それともemacsが身の危険を 察知して、遺書を書いてる? emacsしか、今の所使う予定が無いので、 他のアプリはどうか、分からん。まあ、考えてみれば、ntfsをずっと玩ぶ なんて、オイラーには編集作業しかないけどね。

あれ?何気にnfts、Windows側のファイルシステムを相手にしてるけど、 OpenBSDにそんな機能が組み込まれているの? /sysの下を覗くと、ntfsなんてソースツリーも見えるし、 miscfsの中には、fusefsもちゃんと用意されてる。親分の公認を受けた建材を 使って、usmbは建っていると思うんだけど。。。

[ob: ~]$ ldd /usr/local/bin/usmb | awk '{ print $7}'| wc
     102     101    3533

随分色々な物を取り込んでいるな。sambaが使われている事は納得なんだけど、 それ以外もオイラーの知らないものが沢山。ここに開陳しようと思ったけど ページの無駄になりそうなので自粛。

glibcなんてのが見えているので、超Linux依存症に罹患してる事は間違い ありません。こういう物だと思って、OpenBSDを便利に使えるemacsと思って 使いましょうかね。

今、OpenBSDには256Mを割り当てているけど、まだメモリーは半分以上残って いる。もっと割り当てを絞ってもいいな。150Mぐらい有れば、swapもせずに 安全に使えるだろう。エコなOSですよ。何処かの肥大OSとは違うわい。

MCP3002

日経Linuxを読んでいると、11ページに、ラズパイ電子工作の新ライブラリ紹介 なんて記事が出ていた。

SPIとか言う通信路のサポートが、今までの1本から2本に増えたそうな。 ドライバーがアップデートしたって事だな。Pythonで書かれているの?

まあ、そんな事より例に出てた MCP3002 というADコンバータとLM35DZとか言う 温度センサーの方に興味があるな。

ADの方は、定番っぽい。 10ビット2ch ADコンバータが、1個180円とは、良い時代ですな。

ひょっとして、デルタシグマ方式のADかな? と思って、資料を見ると、典型的は 逐次比較型のADでした。どうせ入出力はシリアルラインなんだから、デルタシグマ でも良さそうと思うけど、どうなんだろう?

そんな事は無いな。H8とかで実績のある逐次比較方式の方が、全体的に見て 使い勝手が良いのでしょうな。

Raspberry Pi でADC MCP3002 を使ってみる こちらは、rubyからドライブされてた。入力は、0VからVDDまでって事だけど、 端っこの方は、いいかげんな測定結果になるはずって予測して、実験されてる。 この方は、普段トラ技を見ているのでしょうか? それとも、職業病に冒されて いる? なかなか眼の付け所が良いと感心。

ついでに、温度センサーも見ておく。 高精度IC温度センサ LM35DZ 天麩羅の油の温度は測れないけど、普通の温度なら大丈夫。但し、寒冷地では 使わないで下さいって仕様で、1個120円か。

作ってるのがナショセミなのに、温度は摂氏で扱い易いようになってる。米の連中は 電子工作しないのか。それとも、華氏の世界を摂氏の世界に導くように政府の 息がかかってる?

ああ、ゲームでも圧力がかかってるな。ポケモンGoで表示される距離の単位がKmって なってるそうな。マイルの連中がまいるの必須。一生懸命、ググルの電卓を 叩いてるらしい。

いいぞ、もっとやれ。ニンテンドー。湧き水を1合飲んでくださいって、やって やれよ。古式ゆかしい、日本の計量単位を拡げるのだ。これぞ、国際侵略だ。

LM34 Precision Fahrenheit Temperature Sensors なんだ、華氏直読の温度センサーも有るじゃん。

SPIってのが出てきたけど、これは何? ぐぐれかす。

SPI通信の使い方

シリアル・ペリフェラル・インタフェース

ふーん、USB以下RS232C以上っていう趣なのね。みんな、俺様規格が大好きなのさ。 これからも頑張って、車輪の大発明をしてください。

DC-DC コンバータとは

前回だかの記事で、DC-DCコンバータに興味を抱いたので、調べてみた。

チョッパ型DC-DCコンバーター(昇圧/降圧)なんてのもあるんだな。PowerMOSの 独壇場っぽい。実験してみろ。http://news.mynavi.jp/series/volt/001/

DC-DCコンバータの回路技術(TDK)

スイッチングレギュレータの基礎(rohm)

DC-DCコンバータの動作原理

チョッパ型スイッチングレギュレータを作る(pdf)