Linux Mint(Ubuntu)で Logicool のマウスを使う

Linux その他で使おうと、Logicool のマウスを買いました。


ワイヤレスマウスなので、小さい受信機を USB ポートにつなげば、即使用できると思い込んでいましたが、Linux ではそんなアマイことはなかったです。マジで初期不良かと思いましたが、もしかしたらドライバが自動的にインストールされないのだと思い、ぐぐってみました。Logicool日本語サポートを見ると、「Linux Kernel 2.6.x以降」とあるので、確かに Linux でも使えるようです。けれども、ドライバのダウンロードなど、どこにもない。というので再度ぐぐってみたところ、このような記事をみつけました。どうやらこれが求めていたもののようです。

あとは書かれているとおりに実行します。自分の環境は Linux Mint 17.2 Cinnamon です。Ubuntu 同等なので、PPA が使えるようです。

$ sudo add-apt-repository ppa:daniel.pavel/solaar

そして、Solaar という GUI をインストール。なお、Solaar を使うには Linux Kernel 3.2 以降が必要なようです。

$ sudo apt-get update
$ sudo apt-get install solaar


これで Solaar を起動します。Cinnamon ならパネルの「アクセサリ」に入っています。あとは立ち上げた GUI を使って、マウスとペアリング(受信機を USB ポートに差し込んで、マウスの電源を OFF から ON に)すれば OK です。

しかし、もう少しラクに使えるようにしてくれないものですかねえ。いかに Linux を使うユーザーが少数派だとは云え。

ちなみに、Ubuntu など Gnome 3 を使っているディストリビューションの場合は、Solaar のインストールに

$ sudo apt-get install solaar-gnome3

を使ってください。Ubuntu 16.04 で確認しました。


※追記
いまでは Solaar は Ubuntu の公式リポジトリに入っています。例えば Ubuntu ならソフトウェアセンター、Linux Mint なら「ソフトウェアの管理」から簡単にダウンロードできます。(11/30)

Linux Mint 17.2 に Docker を導入

ここの情報が有用でした。以下、同じことを書きます。

Linuxカーネルのバージョンが 3.10 以上であることを確認。

$ uname -r

wget を使って Docker をインストールする。apt-get でやると古いバージョンがインストールされるのでダメ。

$ wget -qO- https://get.docker.com/ | sh

正しくインストールされてるか確認。

$ sudo docker run hello-world

Docker に root 権限を付与。

$ sudo usermod -aG docker [user]

ログアウト、ログイン後に確認。今度は sudo を付けない。

$ docker run hello-world

これでおしまい。

Linux Mint 17.2 で IRuby と jupyter notebook(IRuby notebook)を使う

IRuby を使おうと思ったのですが、できるまでにかなり苦労したのでメモ。
環境は Linux Mint 17.2. Ruby 2.2.3.

まず、iPython を入れないといけないので、Python のインストールが必要です。僕は既に virtualenv を使って Python 3.4 をインストールしていました。
pip で jupyteriPython を入れます。

$ pip install jupyter
$ pip install ipython



次に RubyGem を入れなければなりません。入れるのは rbczmqiruby です。Bundler を使います。まず、rbczmq のために

$ sudo apt-get install libtool pkg-config build-essential autoconf automake uuid-dev

をやらないといけません。そうして Bundler で rbczmq と iruby をインストールします。

これでお終いではありませんでした。$ iruby とすると、

/home/***/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/iruby-0.2.9/lib/iruby/command.rb:78:in ``': No such file or directory - ipython (Errno::ENOENT)

と ipython が見つからないというエラーが出ます。どうも virtualenv で ipython を入れたせいのようです。なので、ipython の位置を探して、PATH を通してやります。自分の場合は /home/***/Documents/Python/python34/binに ありました。

これで

$ iruby
$ jupyter notebook

でそれぞれが立ち上がる筈です。

.ipynbファイルをGist経由で見る

jupyter で作った .ipynb ファイルを Gist 経由で公開することができます。例えば Gist にこんな風にアップロードします。
https://gist.github.com/obelisk68/a8d271a84f2bf48f8bc6e9b7b21d81cf
nbviewer でこんな風に見ることができます。
http://nbviewer.jupyter.org/gist/obelisk68/a8d271a84f2bf48f8bc6e9b7b21d81cf

じつは Docker から nbviewer を使おうと思ったのですが、どうもうまくいきませんでした。またやってみます。


※追記
わかりました。単純なことでした。端末で

$ docker pull jupyter/nbviewer

をすると nbviewer が使えるようになるので、

$ docker run -p 8080:8080 jupyter/nbviewer
[I 160509 03:28:08 app:122] Not indexing notebooks
[I 160509 03:28:08 app:142] Using in-memory cache
[I 160509 03:28:08 app:294] Listening on port 8080

として表示が停止します。ここでブラウザで http://localhost:8080 にアクセスしてやると、nbviewer が立ち上がります。あとは入力窓に Gist の ID その他をいれてやれば、.ipynb ファイルを見ることができます。


なお、Ruby で jupyter notebook(IRuby notebook)を使うのは、Ruby 用の超強力なプロットライブラリ Nyaplot を利用したい人が多いのではないかと思います。僕のようにアカデミズムとは関係ない人間には高級すぎるのですが、これはすごいです。暇人は試しに Nyaplot で遊んでみて下さい。作者はリンク先のブログ主で、まだ若い日本人の方のようです。優秀ですねえ。

例えば下の URL を nbviewer で見てみて下さい。三次元図がマウスでぐりぐりなめらかに動きますよ。
https://github.com/chezou/iruby-example/blob/master/nyaplot-example.ipynb


それから、IRuby notebook を使うなら、

  • gem 'pry'
  • gem 'pry-doc'
  • gem 'awesome_print'
  • gem 'rubyvis'
  • gem 'gnuplot'
  • gem 'nyaplot'

あたりの Gem も入れておくとよいそうです。nbviewer のサイトの Ruby のところを見ると、これらの Gem を IRuby notebook で直接使う例が紹介されています。また、MathJax を使って LaTex の数式も書くことができるようですね。端末で irb を使うのに比べ、自動的に記録されますし、見栄えのよさは段違いです。nbviewer で公開もできますし。jupyter notebook は Python を使って書かれているのですが、これを Ruby でも使ってしまえるというのはおもしろい。何だか不思議な世界ですね。

GreenShoes を使って画像ファイルの変換 GUI を作ってみる

RubyGUI ツールである GreenShoes を使ってみました。
Linux mint 17.2 で確認しました。ImageMagick のインストールが必要です(Gem 'RMagick' は必要ありません)。

$ sudo apt-get install imagemagick

GreenShoes についてはこちらも。


単独のファイル変換と、フォルダの中の特定の画像形式のファイルを一括変換('converted' フォルダを作ってその中に出力します)する機能を付けました。

require 'bundler/setup'
require 'green_shoes'

Suffix = %w(png PNG jpg jpeg JPG JPEG gif GIF bmp BMP)

class String
  def imgfile?
    return false unless m = /\.(.+)$/.match(self)
    return m[1] if Suffix.include?(m[1])
    false
  end

  def imgsuffix
    Suffix.each do |sf|
      a = "." + sf
      return a if include?(a)
    end
    ""
  end
end

Shoes.app width: 500, height: 480 do
  background lavender
  title "画像変換"
  
  fname1 = fname2 = ""
  
  stack height: 120 do
    background azure
    b = button "変換されるファイルを選択" do
      fname1 = ask_open_file
    end
    a = para ""
    b.click {a.clear; a = para fname1}
  end
  
  para "変換先のファイル名"
  edit_line(width: 300) {|e| fname2 = e.text}
  button "変換" do
    if fname1.imgfile? and fname2.imgfile?
      Dir.chdir(File.dirname(fname1))
      `convert #{fname1} #{fname2}`
      puts "converted"
      exit
    end
  end
  
  fname3 = ""
  sf1 = sf2 = ""
  para "\n"
  
  stack height: 120 do
    background moccasin
    para "一括変換するフォルダ"
    b = button "選択" do
      fname3 = ask_open_folder
    end
    a = para ""
    b.click {a.clear; a = para fname3}
  end
  
  para "画像形式を選択して下さい(変換前/変換後)"
  list_box items: ["jpg", "png", "bmp", "gif"] {|t| sf1 = t.text}
  list_box items: ["jpg", "png", "bmp", "gif"] {|t| sf2 = t.text}
  button "変換" do
    if sf1 != sf2
      Dir.chdir(fname3)
      unless File.exist?("converted") and File.directory?("converted")
        Dir.mkdir("converted")
      end
      
      Dir.glob("*").each do |fn1|
        a = fn1.imgsuffix.downcase
        a = ".jpg" if a == ".jpeg"
        if File.file?(fn1) and a == "." + sf1
          fn2 = /(.+)\..+$/.match(fn1)[1] + "." + sf2
          `convert #{fn1} ./converted/#{fn2}`
        end
      end
      
      puts "converted"
      exit
    end
  end
end

こんな感じ。

まあ自分のはあんまりカッコいいデザインではないのですが、GreenShoes を使うのはとにかく簡単です。どんどん GUI が作れそう。


Windows

Windows でも可能です(Windows 8.1 で確認)。ImageMagick と Gem 'GreenShoes' をインストールして下さい。

上のコードそのままでは動きません。まず、エンコードの関係で、文字列リテラルにすべて .encode("utf-8") を付加します。
それから、驚いたことに Ruby の Bug(参照)というのが出ます。それを避けるコードにするために、多少の改変が必要です。具体的には、`convert #{fname1} #{fname2}` のところで「バグ」が出ます。


以上を fix したコードはこれです。Windows ではこんな感じ。

Linux Mint 17.2 で Wine を使ってみた

Wine とは LinuxWindows のソフトを使えるようにするものです。情報はぐぐればたくさん出てくるので、ここで書くことはあまりない。ちょっとしたことだけ。

まずインストールだけれども、僕は「ソフトウェアの管理」で入れました。最新版が欲しい人はぐぐってみて下さい。
その際、wine-mono と wine-gecko も入れておいた方が確実です(追記: Wine のインストールで両者とも入る場合もあるようです)。

ソフトの起動ですが、ぐぐると「.exe ファイルをダブルクリック」すればいいと書いてあることが多いです。しかし、それでは起動しないことがあって、その際は .exe ファイルのアイコンを右クリックし、「別のアプリで開く」→「Wine Windows プログラムローダー」を選択して起動できる場合があります。それから、パネルに Wine という項目が追加されるので、そこから起動できる場合は簡単です。もちろん、端末から wine コマンド(wine /media/***/***/autorun.exe など)で起動することもできます。この場合は端末に色いろな情報が出るので、これがいちばん融通が利くと思います。

Wine ですべての Windows ソフトが使えるわけではありません。さほど複雑でないソフトなら、動くことが多いようです。しかし、音が出なかったりとかフォントがダサいとかはあります。

LinuxWindows ソフトが実際に走っているのを見ると、何だか不思議な感じですね。

Linux Mint(Ubuntu)で CoffeeScript を使う

面倒くさい人向けです。最新のバージョンを使おうとか、スキルがある人は別のやり方でやって下さい。
Linux mint 17.2 で確認しました。

コンパイルNode.js でやるので、インストールが必要です。面倒なので、バージョンが古いですが「ソフトウェアの管理」で入れました。
ただしこれだと、Node.js の実行コマンドが $ nodejs となってマズいので、

$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

を実行します。これでコマンドが node になります(ここを参考にしました)。

次に Node.js のパッケージ管理ソフトである「npm」もインストールします。これも面倒なので、同じく「ソフトウェアの管理」から入れました。これもバージョンが古い筈です。

次に CoffeeScriptコンパイラを入れます。

$ sudo npm install -g coffee-script

で OK です。


おなじみ HelloWorld はここを参考にしました。

hello = ->
    console.log("Hello World!")

hello()

を helloworld.coffee というファイル名で保存します。で、コンパイル

$ coffee -c helloworld.coffee

を実行すると、helloworld.js というファイルができるので、$ node helloworld.js で "Hello World!" が端末に表示されれば OK です。

また、-c オプションを付けずに $ coffee helloworld.coffee とやると、コンパイルされずにインタプリタで実行されます。


CoffeeScript のサイトは下です。
CoffeeScript