2015年10月
DATE
.vimrc
2015.10.20 Tue
新学期始まって完全に忘却の彼方に押しやってしまう前にvimの設定を残しておきたいと思います。
といってもこれ貼るだけですが…
細かいコト省いて要点だけまとめると、
1. パッケージ管理はNeoBundle
多分殆どの人はこれなのでは?必要なくなったプラグインは削除してから:NeoBundleCleanして消しましょう。プラグインのアップデートは:NeoBundleUpdate
2. pyenvにパスを通すこと
vimが+python/+python3かつ+luaとかでコンパイルされているのが望ましいです。MacはMacVim-Kaoriyaを使えばよいかと。Ubuntu等ではえ?君せっかく Python のバージョン管理に pyenv 使ってるのに Vim の補完はシステムライブラリ参照してるの?を参考にがんばってください。
3. jediとneocompleteの設定をうまく書いて競合させないようにすること
*.pyのときの処理を変えることで上手くできます。→ここ参照[vim]python補完プラグイン「jedi-vim」を快適にする方法(jedi-vim+neocomplete)
4. LightlineにSyntaxErrorなどを表示させる
作者が教える! lightline.vimの導入・設定方法! 〜 初級編 - インストールしよう
作者が教える! lightline.vimの設定方法! 〜 中級編 - 展開コンポーネントを理解しよう
この2つを見てそのままコピペするだけです。むずかしいこと考えるのはやめました。
5. jediやflake8などをきっちりとpipで導入しておくこと
jedi-vimに必要なjediやsyntasticで使っているflake8はpip installで導入することができます。普通にgit cloneしてpyenvを入れた人はpipが元から入っているので、それを使うと~/.pyenv/shims以下にこれらが展開されます。また、パスもそこに通っているので普通に動く…はずです(割と動かなくて困ることがある
6. vim-autocloseとtcomment_vimは相当便利なので推奨
面倒な作業が減ります
pythonしか今のところかく予定がないのでこう言った感じの.vimrcになりました…まだまだ使いこなせてないので精進します…
Tweet
といってもこれ貼るだけですが…
細かいコト省いて要点だけまとめると、
1. パッケージ管理はNeoBundle
多分殆どの人はこれなのでは?必要なくなったプラグインは削除してから:NeoBundleCleanして消しましょう。プラグインのアップデートは:NeoBundleUpdate
2. pyenvにパスを通すこと
vimが+python/+python3かつ+luaとかでコンパイルされているのが望ましいです。MacはMacVim-Kaoriyaを使えばよいかと。Ubuntu等ではえ?君せっかく Python のバージョン管理に pyenv 使ってるのに Vim の補完はシステムライブラリ参照してるの?を参考にがんばってください。
3. jediとneocompleteの設定をうまく書いて競合させないようにすること
*.pyのときの処理を変えることで上手くできます。→ここ参照[vim]python補完プラグイン「jedi-vim」を快適にする方法(jedi-vim+neocomplete)
4. LightlineにSyntaxErrorなどを表示させる
作者が教える! lightline.vimの導入・設定方法! 〜 初級編 - インストールしよう
作者が教える! lightline.vimの設定方法! 〜 中級編 - 展開コンポーネントを理解しよう
この2つを見てそのままコピペするだけです。むずかしいこと考えるのはやめました。
5. jediやflake8などをきっちりとpipで導入しておくこと
jedi-vimに必要なjediやsyntasticで使っているflake8はpip installで導入することができます。普通にgit cloneしてpyenvを入れた人はpipが元から入っているので、それを使うと~/.pyenv/shims以下にこれらが展開されます。また、パスもそこに通っているので普通に動く…はずです(割と動かなくて困ることがある
6. vim-autocloseとtcomment_vimは相当便利なので推奨
面倒な作業が減ります
pythonしか今のところかく予定がないのでこう言った感じの.vimrcになりました…まだまだ使いこなせてないので精進します…
スポンサーサイト
カテゴリー:ぷよぐやみんぐ
Tweet
貴船倶楽部
2015.10.13 Tue
夏休み最終日、京都は貴船神社まで足を運んできました。
叡山電鉄に揺られ(結構電車賃が高い…)、自然の風景を楽しみながら向かいます。
貴船口についてからも更にバスに乗ります(歩いてもいけます)。
階段両脇に立っている灯籠の朱色が非常に映え、綺麗なところでした。

階段をあがると貴船神社の本宮が。

「水占い」という面白い占いをしていたのでついやってみたくなり、200円払っておみくじを購入。
水に浮かべると文字が浮き出る仕様がなんだか神秘的な雰囲気を出していて好きです。

他にも結社や奥院などがあり、しばらく見て回り都会の喧騒と離れた静かな境内を楽しみました。
あちらこちらに高そうな料亭が「川床いかがですか」と勧誘しているのを見かけますが、貧乏学生なのでちょっとご勘弁して…
「貴船倶楽部」という喫茶店に入りました。明るい店内はログハウス調と言った感じ(?
木製のナイフとフォークが大変可愛らしかったです。
抹茶パンケーキを頂きました。ドリンク込1200円。

他にも抹茶パフェ等があり、小休止には良さそうです。
貴船はどうしても敷居の高そうなお店が多く、休憩もままならないのでこういった手軽なカフェはありがたいですね。
けっこう涼しいのでこれからの季節もし行かれるようであれば防寒の方はしっかりと。
ウッ…レポートが溜まっている………
Tweet
叡山電鉄に揺られ(結構電車賃が高い…)、自然の風景を楽しみながら向かいます。
貴船口についてからも更にバスに乗ります(歩いてもいけます)。
階段両脇に立っている灯籠の朱色が非常に映え、綺麗なところでした。

階段をあがると貴船神社の本宮が。

「水占い」という面白い占いをしていたのでついやってみたくなり、200円払っておみくじを購入。
水に浮かべると文字が浮き出る仕様がなんだか神秘的な雰囲気を出していて好きです。

他にも結社や奥院などがあり、しばらく見て回り都会の喧騒と離れた静かな境内を楽しみました。
あちらこちらに高そうな料亭が「川床いかがですか」と勧誘しているのを見かけますが、貧乏学生なのでちょっとご勘弁して…
「貴船倶楽部」という喫茶店に入りました。明るい店内はログハウス調と言った感じ(?
木製のナイフとフォークが大変可愛らしかったです。
抹茶パンケーキを頂きました。ドリンク込1200円。

他にも抹茶パフェ等があり、小休止には良さそうです。
貴船はどうしても敷居の高そうなお店が多く、休憩もままならないのでこういった手軽なカフェはありがたいですね。
けっこう涼しいのでこれからの季節もし行かれるようであれば防寒の方はしっかりと。
ウッ…レポートが溜まっている………
カテゴリー:Food
Tweet
sudoとpyenv
2015.10.12 Mon
さっきの記事「RasPiで室温を計測する」の最後に書きましたが、通常pyenvを使っている人の環境ではシステム側のpythonと、pyenv側のpythonが入っていると思います。
このとき何もせずpyenvをインストールしていると
sudoしたときにどうやってpyenv側のpythonを呼び出すかですが、/etc/sudoersのDefaultにpyenvディレクトリのパスを追加してやることで可能になります。
su -してrootにログインしてから以下の操作を行ってください。
これでひとまずsudo pythonしたときにpyenv側から呼びだされます。
しかし、python-smbusはシステム側のpythonに依存し、pyenv側に入れることができません。
試しにsudo python tmp102.pyをするとわかりますが、python-smbusはシステム側のpythonにいるので、sudoコマンドでpyenv側のpythonを呼び出してもNo module named smbusと怒られてしまいます。
そこでsmbus-cffiを使います。
これ、システム側を完全に切り捨てて運用することが前提となっている感じがすごくアレですが…他に対処法が見つからなかったので…
Tweet
このとき何もせずpyenvをインストールしていると
$ sudo python hoge.pyしたとき、勝手にシステム側のpythonが呼ばれてしまいます。
sudoしたときにどうやってpyenv側のpythonを呼び出すかですが、/etc/sudoersのDefaultにpyenvディレクトリのパスを追加してやることで可能になります。
su -してrootにログインしてから以下の操作を行ってください。
$ vim /etc/sudoers保存時に怒られます。:wq!しましょう。
#初期 Default secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
#/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:を追記
Default secure_path="/home/pi/.pyenv/shims:/home/pi/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
これでひとまずsudo pythonしたときにpyenv側から呼びだされます。
しかし、python-smbusはシステム側のpythonに依存し、pyenv側に入れることができません。
試しにsudo python tmp102.pyをするとわかりますが、python-smbusはシステム側のpythonにいるので、sudoコマンドでpyenv側のpythonを呼び出してもNo module named smbusと怒られてしまいます。
そこでsmbus-cffiを使います。
$ sudo apt-get install libi2c-dev libffi-devこれでもう一度試してみましょう。
$ pip install cffi
$ pip install smbus-cffi
$ sudo python tmp102.pyできました。
22.375
これ、システム側を完全に切り捨てて運用することが前提となっている感じがすごくアレですが…他に対処法が見つからなかったので…
カテゴリー:ぷよぐやみんぐ
Tweet
RasPiで室温を計測する
2015.10.12 Mon
最近ずっとbotの方にかかりきりでRaspberryPiを放置していた(サーバとしてしか使っていなかった)のですが、先輩が温度センサーとブレッドボード、ジャンパワイヤをお土産でくださったので使ってみることに。
今回用いるのはaitendoのI2C温度センサー、TMP102です。

以下のサイトを参考にしました。
raspberry piで温度計測(TMP102)
まずI2Cデバイスを扱えるようにします。
/etc/moduesに以下を追加(後述するがもしかしたら必要ない?
以下のように該当行をコメントアウト
しかし僕のRaspberryPi2にはraspi-blacklist.confが存在しませんでした。ググったところこの部分は仕様変更があったようで、次のサイトを参考にしました。→Raspberry PiでI2Cを使う。raspi-blacklist.confが無い時
もしかしたらこれですべて自動で使えるようになって、/etc/modulesに書き込む必要は無かったかもしれませんが、これは検証していません。
なにはともあれここまで終わったら一旦RasPiをシャットダウンし、電源を抜きます。
RaspberryPiを買った時に初期でついてきたGPIOカードを参考にしてジャンパワイヤを刺していきます。

TMP102の回路図はaitendoのサイトのリンクから見ることができます。
[tmp102] >> [RasPi]
V+ >> 3.3V
SDA >> GPIO2(I2C_SDA1)
SCL >> GPIO3(I2C_SCL1)
GND >> GND
ADD0 >> GND

まぁこんな感じで接続します。
このときADD0をどこにつなぐかで0x48か0x49になるかが決まるらしいです。今回のようにGNDに接続すると0x48になります。
i2c-toolsをインストール。

もしi2cdetect 1でエラーが返ってくるようならi2cdetect 0で試してみてください。また、ADD0をGND以外につなぐとここで49が表示されます。
次にこれを温度に変えるスクリプトを組みます。僕にもよくわかんないですがこういうことらしいです。tmp102.shとか適当な名前で保存してください。
ついでなのでpythonでもこいつから温度を取得してみたいと思います。
また、pyenv環境の人はこのやり方では上手く行きません。次の記事で書きます。
Tweet
今回用いるのはaitendoのI2C温度センサー、TMP102です。

以下のサイトを参考にしました。
raspberry piで温度計測(TMP102)
まずI2Cデバイスを扱えるようにします。
/etc/moduesに以下を追加(後述するがもしかしたら必要ない?
$ sudo vim /etv/modules
i2c-dev
以下のように該当行をコメントアウト
$ sudo vim /etc/modprobe.d/raspi-blacklist.conf
#i2c-bcm2708
しかし僕のRaspberryPi2にはraspi-blacklist.confが存在しませんでした。ググったところこの部分は仕様変更があったようで、次のサイトを参考にしました。→Raspberry PiでI2Cを使う。raspi-blacklist.confが無い時
$ sudo raspi-configして設定するだけなのでむしろ簡単になったといえるかもしれません。
もしかしたらこれですべて自動で使えるようになって、/etc/modulesに書き込む必要は無かったかもしれませんが、これは検証していません。
なにはともあれここまで終わったら一旦RasPiをシャットダウンし、電源を抜きます。
$ sudo shutdown -h now
RaspberryPiを買った時に初期でついてきたGPIOカードを参考にしてジャンパワイヤを刺していきます。

TMP102の回路図はaitendoのサイトのリンクから見ることができます。
[tmp102] >> [RasPi]
V+ >> 3.3V
SDA >> GPIO2(I2C_SDA1)
SCL >> GPIO3(I2C_SCL1)
GND >> GND
ADD0 >> GND

まぁこんな感じで接続します。
このときADD0をどこにつなぐかで0x48か0x49になるかが決まるらしいです。今回のようにGNDに接続すると0x48になります。
i2c-toolsをインストール。
$ sudo apt-get install i2c-tools
$ sudo i2cdetect 1すると以下の様な結果を得ます。

もしi2cdetect 1でエラーが返ってくるようならi2cdetect 0で試してみてください。また、ADD0をGND以外につなぐとここで49が表示されます。
$ sudo i2cget -y 1 0x48 0x00 wとして何か値が返ってくるのを確認してください。これでダメだったら温度センサーが死んでるのでは…
次にこれを温度に変えるスクリプトを組みます。僕にもよくわかんないですがこういうことらしいです。tmp102.shとか適当な名前で保存してください。
#!/bin/bashこの計算スクリプトではbcという計算ソフトを利用しているらしいのでこれもインストールシておきます。
hexraw=$(sudo i2cget -y 0 0x48 0x00 w)
while [ "$hexraw" == "" ]; do
hexraw=$(sudo i2cget -y 0 0x48 0x00 w)
done
msb=$(echo ${hexraw:4:2})
lsb=$(echo ${hexraw:2:1})
dec=$(printf "%d\n" "0x$msb$lsb")
echo "scale=4; $dec*0.0625" | bc
$ sudo apt-get install bcここまでくれば後は実行するだけです。
$ ./tmp102.sh無事値が帰ってきたら成功です。また、たまにError: Read failedが出ます。原因が不明で困っています。
22.3125
ついでなのでpythonでもこいつから温度を取得してみたいと思います。
$ sudo apt-get install python-smbuspython-smbusをインストールし、以下の様なスクリプトを組みます。
import smbusあとは実行するだけです。
import time
bus = smbus.SMBus(1)
data = bus.read_i2c_block_data(0x48, 0)
msb = data[0]
lsb = data[1]
print (((msb << 8) | lsb) >> 4) * 0.0625
$ sudo python tmp102.pysudoつけてないとエラーが出ます。また、Read failedの時の例外処理をしてないのでその時もエラーが出ます()
22.375
また、pyenv環境の人はこのやり方では上手く行きません。次の記事で書きます。
カテゴリー:RaspberryPi
Tweet