fc2ブログ

ぽよメモ

2015年10月

DATE

  • このページのトップへ

.vimrc


新学期始まって完全に忘却の彼方に押しやってしまう前に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になりました…まだまだ使いこなせてないので精進します…
スポンサーサイト



カテゴリー:ぷよぐやみんぐ


貴船倶楽部


夏休み最終日、京都は貴船神社まで足を運んできました。
叡山電鉄に揺られ(結構電車賃が高い…)、自然の風景を楽しみながら向かいます。

貴船口についてからも更にバスに乗ります(歩いてもいけます)。
階段両脇に立っている灯籠の朱色が非常に映え、綺麗なところでした。


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


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


他にも結社や奥院などがあり、しばらく見て回り都会の喧騒と離れた静かな境内を楽しみました。

あちらこちらに高そうな料亭が「川床いかがですか」と勧誘しているのを見かけますが、貧乏学生なのでちょっとご勘弁して…
「貴船倶楽部」という喫茶店に入りました。明るい店内はログハウス調と言った感じ(?
木製のナイフとフォークが大変可愛らしかったです。

抹茶パンケーキを頂きました。ドリンク込1200円。


他にも抹茶パフェ等があり、小休止には良さそうです。

貴船はどうしても敷居の高そうなお店が多く、休憩もままならないのでこういった手軽なカフェはありがたいですね。
けっこう涼しいのでこれからの季節もし行かれるようであれば防寒の方はしっかりと。

ウッ…レポートが溜まっている………

カテゴリー:Food


sudoとpyenv


さっきの記事「RasPiで室温を計測する」の最後に書きましたが、通常pyenvを使っている人の環境ではシステム側のpythonと、pyenv側のpythonが入っていると思います。

このとき何もせずpyenvをインストールしていると
$ sudo python hoge.py
したとき、勝手にシステム側のpythonが呼ばれてしまいます。

sudoしたときにどうやってpyenv側のpythonを呼び出すかですが、/etc/sudoersのDefaultにpyenvディレクトリのパスを追加してやることで可能になります。

su -してrootにログインしてから以下の操作を行ってください。
$ vim /etc/sudoers

#初期 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
保存時に怒られます。:wq!しましょう。

これでひとまず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
できました。

これ、システム側を完全に切り捨てて運用することが前提となっている感じがすごくアレですが…他に対処法が見つからなかったので…

カテゴリー:ぷよぐやみんぐ


RasPiで室温を計測する


最近ずっとbotの方にかかりきりでRaspberryPiを放置していた(サーバとしてしか使っていなかった)のですが、先輩が温度センサーとブレッドボード、ジャンパワイヤをお土産でくださったので使ってみることに。

今回用いるのは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

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
この計算スクリプトではbcという計算ソフトを利用しているらしいのでこれもインストールシておきます。
$ sudo apt-get install bc
ここまでくれば後は実行するだけです。
$ ./tmp102.sh
22.3125
無事値が帰ってきたら成功です。また、たまにError: Read failedが出ます。原因が不明で困っています。

ついでなのでpythonでもこいつから温度を取得してみたいと思います。
$ sudo apt-get install python-smbus
python-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.py
22.375
sudoつけてないとエラーが出ます。また、Read failedの時の例外処理をしてないのでその時もエラーが出ます()

また、pyenv環境の人はこのやり方では上手く行きません。次の記事で書きます。


カテゴリー:RaspberryPi