/var/log/soymsk

id:soy_msk


Logictec Bluetooth[LBT-UAN04C1]をWindows10で使う

どこにも情報がなかったのでメモ

Windows7からWindows10にアップグレードしたところLogitecのBluethoothアダプタが使えなくなった。

どうやらドライバがうまく認識されていないらしいが、Logitecでも対応ドライバはないようだ。

要はCSRのドライバを削除してWindowsのデフォルトのドライバを使えばいいが、 そのままではインストールできない。

  1. CSR Harmony Wireless Software Stackの削除
  2. アプリ削除からCSRで検索して上記プログラムを削除
  3. アダプタを抜き差しして標準ドライバがインストールされることを確認

以降普通にBluetoothが使えるので、必要であれば新たにペアリングするなど。

この記事もペアリングしたキーボードでかけている!

centos7にdockerをインストール

手順

Centos7用のrpmを使った手順もある(https://docs.docker.com/installation/centos/)が、 以下の公式ドキュメントの方法を使うほうが楽そう。

http://docs.docker.com/linux/started/

この手順でもrpmがインストールされるので、管理も楽。

# 公式の手順ではsudoはいらないとされているが、実際失敗したのでsudo指定
$ wget -qO- https://get.docker.com/ | sudo sh

無事インストールできたかテスト用のコマンドを実行

$ docker run hello-world  
Post http:///var/run/docker.sock/v1.19/containers/create: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?

あれ?これもsudoが必要か

$ sudo docker run hello-world
Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

どうやらdocker daemonを起動しないといけないらしい。

$ sudo systemctl start docker

$ sudo docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from hello-world
a8219747be10: Pull complete 
91c95931e552: Already exists 
hello-world:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:aa03e5d0d5553b4c3473e89c8619cf79df368babd18681cf5daeb82aab55838d
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
~~~~~~

成功!

# 再起動後もdockerサービスを有効にする
$ sudo systemctl enable docker

$ docker -$ docker --version
Docker version 1.7.1, build 786b29d

$ rpm -qa docker*
docker-engine-1.7.1-1.el7.centos.x86_64

最新版がインストールされている。

Pythonにおける仮想環境構築ツール

Pythonの仮想環境ツールがいろいろありすぎて混乱するので、整理目的で調査してみる。 ざっと調べた感じでは以下のとおり。

Pyenv

複数バージョンのPythonバイナリを管理するもの。プロジェクト(ディレクトリ)単位での異なるバージョンのPythonが使用できるようになる。 ただし、コレ単体だとバージョンごとのsite-packagesは同じなので、例えばプロジェクトAとプロジェクトBで同じバージョンのPythonを使っていると、ライブラリも共有せざるを得ない。

Virtualenv

Pythonの仮想環境を作成するもの。プロジェクトごとにsite-packagesを分けることができる。Pyenvと違い、コレ単体ではPythonバイナリのバージョンは分けられないが、ライブラリは分けることができる。

pyenv-virtualenv

Pyenvのvirtualenvプラグイン。PyenvでPython本体のバージョン管理をしつつ、Virtualenvでライブラリの管理もできる。だいたいこれが使われているらしい。

Pyvenv

python3.3で追加された。これ自体は単なるvenvのラッパーらしい。venvではPythonバイナリのバージョンとsite-packagesディレクトリの管理ができる。ただし、バイナリの管理はすでにインストールされているバイナリに固定されているだけなので、バイナリのバージョン管理ができると言えるかどうか。。これ単体で使うくらいならpyenv-virtualenvをつかっておいた方がいいかも。ツール自体もPython3に依存しているのでPyvenvを使う場合は、まずはPython3.4を入れる必要がある。

まとめ

とりあえずpyenv-virtualenvをつかっておけば問題なさそう。 Python3.3以降を使う、かつバイナリのバージョンにはそれほど細かい管理は不要というのであれば、Pyvenvもいいかもしれない。

更新(2016/02/04)

記事を書いてからいくつかPythonで開発をしているけど、今のところpyenv-virtualenvでpython2も3も問題なし!

Unite.vimのfile source挙動の変更について

file sourceを開いた時に、これまではデフォルトでカレントディレクトリが入力された状態であったが、下記のコミットでこれができなくなってしまった。

どうすればいいんだろう

https://github.com/Shougo/unite.vim/commit/0d8336a4e6036f6100050fa0455896ac58ed833f?diff=split

Homebrewで"failed to download"が頻発する件

Homebrewでいろいろインストールできない

homebrewで"failed to download"なエラーが頻発しており、lvすらもインストールできない始末。

これの原因がわかったのでメモ。 ついでにChromewikipediaを見ると"ERR_EMPTY_RESPONSE"になる件も原因は一緒だった。

解決

ESETのver5を使っているのだけどこれが原因だったらしい。ver6にアップデートしたら解決した。 ver6には無料でアップデートできる。

これは気づかない。。。

【Pythonでネットワーク可視化】graph-toolのインストール

graph-tool

前回NetworkXを使ってグラフを描画したが、主に使用目的がpythonでのデータの可視化であったので、それに特化したライブラリを探していた。

そこで見つけたのがgraph-tool。graph-toolはデータビジュアライゼーションに特化したライブラリとのことで、早速使ってみる。 今回はインストールと簡単なグラフ描画まで。

インストール for Ubuntu(14.04)

/etc/apt/sources.listに以下の文を追加

deb http://downloads.skewed.de/apt/trusty trusty universe
deb-src http://downloads.skewed.de/apt/trusty trusty universe

他のversionのubuntuを使用している場合はtrustyの部分を変える必要が有ることに注意。今回は(14.04, trusty)なのでtrustyと書き換える。

ところがapt-get updateした段階でpublic keyのエラーがでてしまった。 どうやらpublic keyを登録しないといけないらしい。 公式サイト からpublic keyをダウンロードし登録して解決。

apt-key add [downloadしたpublic keyのパス]
apt-key list # 確認
apt-get update # OK!

keyの登録ができれば、あとは下記コマンドでインストールできるはず。

apt-get install python-graph-tool

インストール for Mac

以前はいろいろ大変だったらしいが、今ではパッケージマネージャ経由でインストールできる。 Macportsだと簡単で

port install py-graph-tool

だけでインストール可能とのこと。

手元の環境ではHomebrewを使っているので、今回はbrewで試してみる。 かなり長いインストール手順が書いてあったが、幸いbrewのフォーミュラがあったのでそれを実行。

$ brew install homebrew/science/graph-tool

インストールはかなり時間がかかるので注意。 コマンドを実行してしばらく放置する。

必要なpythonライブラリのインストール

上記手順でnumpy, matplotlib, scipyを手動でインストールしろ、というメッセージが出たので、pipでインストール

$ pip install numpy scipy matplotlib

そして再度brewコマンドを実行。手元のMacBookPro(2014 2.4GHz)で30分ほどかかった。

>>> import graph_tool
Fatal Python error: PyThreadState_Get: no current thread

失敗orz... 調べたところどうやらbrew でboostが複数バージョンインストールされていることが原因らしいので、boostを再インストール

brew uninstall --force boost
brew install boost

再度graph_toolのインスト-ルを行ったところ、無事終了。

>>> import graph_tool
>>>

インストールが完了した。

簡単なグラフ描画

2ノードの簡単なグラフを作成してみる

import graph_tool as gt
import graph_tool.draw as gtd
g = gt.Graph()
# Add node
v1 = g.add_vertex()
v2 = g.add_vertex()

# Add edge
e = g.add_edge(v1,v2)

# Draw graph
gtd.graph_draw(g,
        vertex_text = g.vertex_index, vertex_font_size=18,
        output_size=(200, 200), output="two-nodes.png"
        )

以下のようなグラフが出力されればOK!

f:id:soy_msk:20150201204730p:plain

参考

graph-tool quick start

【Pythonでネットワーク可視化】NetworkXを使ってみる

NetworkXを使ってみる

pythonで100万オーダーのノードを持つネットワーク図を作成したいので、調べてみたところNetworkXというものが使えそう。

NetworkXの準備

Macでの実行なので、pipをインストールしていればすぐにセットアップできる

   sudo pip install networkx

簡単なサンプルの実行

まずは本家のチュートリアルを見つつ、NetworkXで簡単なグラフを描画してみる

まず空のグラフを生成

   import networkx as nx
    G = nx.Graph() # 空のグラフ

ノードの追加

空のグラフにノードを追加していく

G.add_node(1)
G.add_nodes_from([2,3]) # 複数のノードを一括追加

ハッシュ可能オブジェクトはノードとして追加できるので、数値だけじゃなく文字列、オブジェクトもノードとして扱える。 これは結構柔軟な使い方ができそう。

G.add_node((1, 2)) # tupleは追加可能
G.add_node([1, 2]) # listはhasableではないので不可

nodes関数でノードの一覧が出力される。

G.nodes() # [(1,2), 1, 2, 3]
G.number_of_ndoes() # 4
G.clear() # 全ノードのクリア

エッジ(枝)の追加

# G.clear()
G.add_edges_from([('a','b'), ('c','d')]) # a-b, c-d間のエッジを追加する。ノードも同時に追加される。
G.add_edge(('b', 'c'))
G.edges() # [('a', 'b'), ('c', 'b'), ('c', 'd')]

グラフの描画

matplotlib経由でグラフの描画が可能

pos = nx.spring_layout(G) # グラフ形式を選択。ここではスプリングモデルでやってみる
nx.draw(G, pos, with_labels=True) # グラフ描画。 オプションでノードのラベル付きにしている
plt.show() # matplotlibでグラフ表示

plt経由でグラフの保存もできる。

ここまで調べてみて、NetworkX自体は図の描画よりもグラフ計算向けのライブラリらしい。(本家ドキュメントより)

グラフ描画もできるが、凝ったことをしたい場合は最適じゃない気がする。

とりあえずここまで。