mieki256's diary



2016/08/06() [n年前の日記]

#1 [nitijyou] 今日も暑かった

福島市のあたりは37度になるよ、と朝のニュースで流れてたけど…。今日も暑かった…。エアコンを動かしてるけど、部屋の温度が下がらない…。

エアコンスーツを作れないものか。 :

それにしても…。エアコンの、部屋全体を冷やすという仕組みが、なんだかもったいないなと。人間が居る所だけ冷やせれば、損失が少ないだろうに…。

寝袋みたいな冷却スーツって作れないものかな…。たしか、映画「ロボコップ」のスーツって最初は暑かったけど、2作目で水冷システムを導入できてちょっとは楽になったという話を聞いたような記憶もあるので、そういう感じのスーツを作って…。

街のあちこちで、そういうスーツを見かける光景が実現したら、なんだかちょっとSF。

#2 [python] Pythonで1文字だけキー入力ってどうやるんだろう

Raspberry Pi上のPythonスクリプトで、例えばカーソルキーを押すと、数字が増えたり減ったりするようなことをしたいなと。Windows上でも、Linux上でも、同じスクリプトで動作するなら尚嬉しい。

ググってみたら一般的には getch() なるものを使うようで、 _getch にそれらしいパッケージが。しかしコレは、pip install getch と打ってもインストールできない。なんだか大量にエラーが出る。

_py-getch なるパッケージもあった。 _joeyespo/py-getch: Portable getch() for Python. によると、pip install py-getch でインストールできて、以下のような感じで使えるらしい。
from getch import getch, pause

key = getch()
print 'You pressed:', key
pause()

py-getch なら Windows10 x64 + Python 2.7.11上でインストールできたし、動作も確認できた。また、VMware + Ubuntu 16.04上でもインストールできた。

しかし、「1」「a」等のフツーのキーならともかく、カーソルキーを叩いた際に、妙な表示になる…。

_windows - Python method for reading keypress? - Stack Overflow でそれらしい記述が。コピペして動作確認。
from getch import getch, pause

print "Push any key. (ESC : exit)"

while True:
    key = ord(getch())
    if key == 27: # ESC
        print "ESC : exit."
        break
    elif key == 13: # Enter
        print "Enter"
        pass
    elif key == 224: # Special keys
        key = ord(getch())
        if key == 80:
            print "Down Arrow"
        elif key == 72:
            print "Up Arrow"
        elif key == 75:
            print "Left Arrow"
        elif key == 77:
            print "Right Arrow"
    else:
        print "You pressed: %s (%d)" % (chr(key), key)
        if key == "x":
            print "exit."
            break

pause()
要するに、カーソルキー等の特殊なキーを叩いた場合は、「コレは特殊なキーだよ」と示すコードがまず1個届いて、その直後に「押されたキーは○○だよ」と示すコードが届くのだろうと。少なくとも Windows上では、このスクリプトでカーソルキーが押されてることを判別できた。

ところが、このスクリプトを VMware + Ubuntu 16.04 LTS 上に持っていって動かすと、カーソルキーを押した瞬間に終了してしまう…。

おそらく、Windows上では 224,xxx という数字が返ってくるけど、Linux上では 27,xxx という数字が返ってきている、ような気がする。どちらかに特化した書き方をしないとダメなのだろうか…。

以下のようなスクリプトを書いて確認してみたり。
from getch import getch, pause

for i in range(20):
    key = getch()
    print "%d : 0x%02x" % (len(key), ord(key))

Windows10 x64 + cmd.exe上で、カーソルキーの、↑、↓、→、←を押すと、こうなる。
1 : 0xe0
1 : 0x48
1 : 0xe0
1 : 0x50
1 : 0xe0
1 : 0x4d
1 : 0xe0
1 : 0x4b

Ubuntu + bash上で、カーソルキーの、↑、↓、→、←を押すと、こうなる。
1 : 0x1b
1 : 0x5b
1 : 0x41
1 : 0x1b
1 : 0x5b
1 : 0x42
1 : 0x1b
1 : 0x5b
1 : 0x43
1 : 0x1b
1 : 0x5b
1 : 0x44

以下のような関係になってるのかな。

Windows0xe0 0x480xe0 0x500xe0 0x4d0xe0 0x4b
Linux0x1b 0x5b 0x410x1b 0x5b 0x420x1b 0x5b 0x430x1b 0x5b 0x44

Windows は、0xe0 が届いた後、カーソルキーの種類を示すコードが届くけど、Linux では、0x1b,0x5b が届いた後、カーソルキーの種類を示すコードが届く、ということなのかなと。ただ、カーソルキーの種類を示すコードは、Windows と Linux では一致してないようで。

やはりどちらかに特化して書かないとダメかしらん。

#3 [linux] MobaXtermを試用

_Windowsに採用されたBash (Ubuntu)を試してみる という記事経由で、MobaXterm なるソフトがあると知ったので試してみたり。sshクライアントにもなるし、Xサーバにもなる、らしい。

要するに、WindowsからLinux機にsshでアクセスしたり、Linux + X WindowアプリをWindows上で使えるソフト、という説明で合ってるのかどうかちょっと分からんけど大体そんな感じのことができるソフトだそうで。

_MobaXterm free Xserver and tabbed SSH client for Windows
_MobaXterm を ssh/mosh/X11 クライアントとして使う(Windows) - Qiita
_MobaXtermによるCADツールの利用
_MobaXterm: Windowsでのcygwinに代わるターミナル環境

Portable版、MobaXterm_v9.1.zip をDLして解凍。中には、 の3つのファイルが入ってた。任意の場所にコピーして、MobaXterm_Personal_9.1.exe を実行。

色んなファイルが圧縮してまとめてあるようで、起動するまで結構時間がかかった。 _MobaXtermでMoshクライアント機能が利用できない問題について によると、Windowsのテンポラリフォルダだか、アプリ別設定保存フォルダだかに、ごっそり解凍してから起動してる、という話が。

ちなみにポータブル版ではなくインストーラ版もインストールしてみたけど、そちらも exe を1つだけ置いといて、起動時にごっそり解凍してるようで。インストーラ版を使えば起動が速くなるというわけでもないらしい。

色々触ってみたけれど…。Raspberry Pi3 にsshでアクセスした状態で…

xclock & と打ってみたら例の時計が表示されたり、
xeyes & と打ってみたら例の目玉が表示されたり、
oneko -sakura と打ってみたら「はにゃーん」「ほえ〜」のアレが表示されたりで、

なんだかちょっと感動。

ちなみに、Raspberry Pi上で xclock だの xeyes だのをインストールするのは…。sudo apt-get install x11-apps と打ったような。違ったかな。たしかそのはず。oneko は、sudo apt-get install oneko でインストールできた。

_Debian -- wheezy の x11-apps パッケージに関する詳細
_Linuxだからできないなんて言わないよ 猫がマウスカーソルを追いかけるソフト oneko

ただ、MobaXterm を使っていて気になったけど、sftp だか scp だかの転送速度が遅いなと。MobaXterm に限った話ではなく、暗号化して転送してるから当たり前だろうけど。

暗号化方式をもっと弱いものに変えればCPU負荷が減って転送速度も多少は改善するのだろうけど。

_winSCPを使って高速にデータ転送する技 - Qiita
_WinSCPの暗号化方式による転送速度の違い パソコン鳥のブログ/ウェブリブログ

しかし、MobaXterm が暗号化形式を変更できるのか、そこからして分からず。どこかにオプション項目がありそうな気もするのだけど…。

#4 [pc] VMware Player上で Ubuntu 16.04LTSをインストールしてみたり

今まで VMware Player上で Ubuntu 14.04LTSをインストールして時々起動して実験してたけど。「Ubuntu 16.04にアップグレードできるよ」と言ってきたのでついアップグレード、してみたものの、どうせならクリーンインストールして環境を作ったほうがいいのかなと思えてきたわけで。

ということで、別途 16.04LTSをクリーンインストールしてから、14.04LTSのイメージは削除。

環境設定は以下を参考にして作業。

_Ubuntu 16.04 LTSをインストールした直後に行う設定 & インストールするソフト

VMware Tools は…。今回から、open-vm-tools (open-vm-tools-desktop)をインストールしてみる方向で。

_ubuntu 16.04 インストール(2) vmware tools - kashiの日記
_VMwarePlayer上のArchLinuxとホストOSとフォルダ共有をする失敗談 - みちのいに!!
_VMware による open-vm-tools のサポート (2074713) | VMware KB

共有フォルダの設定を別途しないといけないのがちと面倒。

以上、1 日分です。

過去ログ表示

Prev - 2016/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project