2015年12月1日火曜日

LaTeX newcommand


LaTeXでの表作成の際、縦に並ぶ要素をまとめるのに、

\raisebox{0.9 em}[0cm][0cm]{Sample}

などと書いたりするが、何せ長いので、表を組むコードがぐちゃぐちゃになって見にくい。

プリアンプルに
\newcommand{\RaBo}[2]{\raisebox{#1 em}[0cm][0cm]{#2}}
 などとすると、本文中で

\RaBo{0.7}{Sample}

と、ややコードを短くできるので、コードを見やすく書きやすい。

2015年11月25日水曜日

Illustrator TeX


LaTeXで出力したPDFファイルをAdobe Illustratorで開こうとすると、
”cmmi6フォントが見つかりません。代替フォントに置き換えます”
というようなメッセージが出て、体裁が大きく変わることがある。

この場合、cmmi6.pfm
を検索して、

(Windows 7 の場合)
コントロールパネル→デスクトップのカスタマイズ→フォント
として出てきたフォルダに、上記ファイルをドラッグ&ドロップしてインストールしてやればよい。

2015年11月23日月曜日

バラ


バラは、2月頃に、根元の接いである部分から20 cm程度のところで切り戻してやると良い高さにバランスよく花を咲かせることができる。

NHK 趣味の園芸より

2015年11月20日金曜日

requests で InsecurePlatformWarning、の解消方法


Rasberry Pi B+上のPythonでTweetプログラムを走らせていたが、いつしか以下のエラーが出るようになった。

InsecurePlatformWarning: A true SSLContext object is not available. 
This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning

Twitterのアカウントは非公開にしているので、SSL通信が保たれていないと困る。

参考URL
http://imagawa.hatenadiary.jp/entry/2015/07/22/183000http://stackoverflow.com/questions/29134512/insecureplatformwarning-a-true-sslcontext-object-is-not-available-this-prevent
ここによると、

Pythonのバージョンを 2.7.9 以降にするか、
$ sudo pip install --upgrade requests[security]

とすれば良いとのこと。
迷わず後者にトライ。しかしrequests upgrade 中に、cryptographyのインストールのところでエラーが発生。

cryptography python.h  そのようなファイルやディレクトリはありません

これは、
$ sudo apt-get install python2.7-dev
とすることで解決した。
参考URL
http://zashikiro.hateblo.jp/entry/2012/10/02/130031





改めて
$ sudo pip install --upgrade requests[security]
としたら、今度は
setuptoolsがない、というエラーが出てうまくインストールが終わらない。

これは、
$ sudo wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
とすることで解決した。
参考URL
http://stackoverflow.com/questions/22531360/no-module-named-setuptools
https://pypi.python.org/pypi/setuptools





またまた改めて
$ sudo pip install --upgrade requests[security]
として、Successfully installed の表示が出たらOK。

上記のInsecurePlatformWarningは出なくなり安心。

'str' object is not callable


Pythonスクリプト中で、
str(Tave)
としてfloatを文字列に変換しようとしたら、

'str' object is not callable

とか言われ、ハマった。

検索すると、strを変数名に使用していたらこのエラーが出ると。
「そんなアホちゃうわ」と思って違う原因を探していたけど、やはりよくわからないので、スクリプト内を検索してみたら、

str = con.readline()

アホだった。
バッチリ関数を変数として使っていた。

2015年10月16日金曜日

Raspberry Pi リモートデスクトップ


Raspberry PiにWindows 8.1から接続するための方法。

RasPiに固定IPを設定した後に、

$ sudo apt-get install xrdp

として、
Windows機からリモートデスクトップで固定IPを入力して接続するだけ。
とても簡単に接続できた。
(接続時にすでに走っている温度制御プログラムが再起動されるが)


参考URL
株式会社インデペンデンスシステムズ横浜
http://independence-sys.net/main/?p=993



Raspberry Pi にて温度制御装置を作成。安定度は±1 mK程度である。
(4 mmφ、250 mmの白金抵抗温度計で測定)
確認した温度範囲は18 ℃~26 ℃である。
恒温槽はmKオーダーの安定度のものがGuildlineやMeasurement Internationalなどから出ているが、これらは湿度が安定ではない。
密閉性が高く湿度が安定(1 %以下)で、温度安定もmKオーダーの物は今のところ自作するしか無い様に思う。
湿度は飽和塩で調整。離散値だしややツンとするにおいもあるが1 %以下で安定する。

2015年10月8日木曜日

音声入力 誤認識


買い物リストを作ろうと、音声認識機能を使用。
Androidに「シェービングジェル」と話しかけたところ、

「シャイニングチワワ」

と表示された。

2015年10月7日水曜日

ねじ式薪割り機


先日のタモリ倶楽部にてねじ式薪割り機の存在を知った。
検索してみると、

 ドリル式薪割り機
 コーン スプリッタ
 ユニコーン ログ スプリッタ Unicorn Log Splitter
 スクリュー ログ スプリッタ Screw Log Splitter

などの呼び方があるようだ。
ドリルを自作している人までいる、すごい。

4, 5年前くらいから盛り上がっているようだが知らなかった。
今のところ斧で割っているが、そのうち乗り換えたい。
しかしいかんせんスペースが必要だな。

2015年9月30日水曜日

Raspberry Pi 起動時に Python スクリプトを自動実行させる


/home/pi/.config/lxsession/LXDE-pi

フォルダに行く。
.configフォルダが見えないときは [Ctrl]+[H] とすると隠しフォルダが現れる。
はじめは空フォルダだが、
なかに

autostart

という名前のファイルを作成し、中に

**************
@lxterminal -e "python /home/pi/scripts/test.py"
**************

と記述。
再起動させると自動的にターミナルの画面が立上り、Pythonのプログラムが実行されていることがわかる。

2015年9月4日金曜日

MCP4726 DAC 制御 Python script

Raspberry Pi から、I2C接続にて
12 bit DAC MCP4726
を制御するPython script を書いた。

**************************
import smbus, time
bus = smbus.SMBus(1)

def MCP4726(Vout):
    data1 = (Vout >> 4)
    data2 = ((Vout & 15) << 4
    data0 = [data1, data2]
    print "Vout = ", Vout
    bus.write_i2c_block_data(0x60, 0x40, data0)

for i in range(0, 4095, 500):
    MCP4726(i)
    time.sleep(3)
**************************

MCP4726(Vout) 関数を用いて、Vout に0から4000まで500刻みで
3 sec 間を置いて出力するプログラム。

bus.write_i2c_block_dataの
0x60はI2Cアドレス、
0x40は通常設定、
data0 で12 bit のデータを送る。

12 bit なので、最大で 1111 1111 1111b = 0xFFF = 4095
で、最初の8 bit と、後ろの4 bitのブロックに分けて送信する。

data1 = (Vout >> 4)
data1は最初の8 bitで、入力されたVoutを右に4 bitシフトして後ろの4 bitを消している。

data2 = ((Vout & 15) << 4
data2は後ろの4 bitで、Voutと15(0000 0000 1111b)とANDを取って下位4 bitを取り出し、上に4 bit シフトさせている。

これで、4095 (0xFFF) を送ると、
0xFF, 0xF0
の2ブロックデータが送信される。

MCP4726 DAC を Rapsberry Pi I2C で使う


秋月電子通商で購入した12bit DAC, MCP4726をRaspberry Piに接続してI2C通信して電圧を出力する方法。


MCP4726搭載12ビットD/A変換モジュール
http://akizukidenshi.com/catalog/g/gK-07995/
MCP47X6 (X = 0, 8 bit; X = 1, 10 bit; X = 2, 12 bit)


Raspberry Piのコンソールで、

$ sudo i2cset -y 1 0x60 0x40 0xff 0xf0 i

とすると、0xFFF(12 bit 最大値)が出る。
0x60はI2Cアドレスで、

$ sudo i2cdetect 1

で得られたアドレス。
0x40は通常設定ということのよう。以下URLを参照。
http://www.bitwizard.nl/wiki/index.php/I2C_DAC
というよりデータシートをちゃんと読んだほうが良いかもしれないが、面倒なので読んでない。

あとの0xff 0xf0
のはじめの3 byteがデータ。

最後の i は i2cset でブロックデータを送るときに必要なやつ。


Pythonでやるときは、
*******************************
import smbus

bus = smbus.SMBus(1)

s= [0xff, 0xf0]
bus.write_i2c_block_data(0x60, 0x40, s)
*******************************

などとすると動作してくれる。

参考URL
http://wiki.erazor-zone.de/wiki:linux:python:smbus:doc

Python 16進数 桁数


Pythonにて、

>> hex(0)

とすると、
0x0
と表示される。これを0x00とするには、

>> "0x%02x" % 0

とすれば良い。

参考URL
http://stackoverflow.com/questions/12969188/invalid-hex-values?answertab=votes#tab-top

2015年8月21日金曜日

OneDrive

MicrosoftのOneDriveというサービスがある。

オンラインストレージサービスであり、これにより様々なPCから同一のファイルを編集できるというメリットがある。

先日、PC1よりファイルを編集し、
その後PC2からファイルを開いたところ、先日の編集が繁栄されていない。

PC1はOFFになっており、同時に開いているなどということは無い。

参照ファイルは同じパスになっており、同じファイルである。

PC1を立ち上げ、同じファイルにアクセスしたところ、先日の編集が反映されたファイルが現れた。
復元不可能な多くのデータを追加していたため、安堵したが、

PC2ではいくら開いてもその新しいデータが見えない。

そうこうしているうちにPC1でも見えなくなってしまった。

おいおい。最悪。


オンラインストレージサービスを使用する際はちゃんとローカルにデータを残さないと駄目だと時々思い知らされる。

2015年1月3日土曜日

bib 文字化け対処法

文献管理ソフトMendeleyが吐いたbibファイルを、pbibtexで処理してbblファイルを作成時、先ほどまではちゃんと処理できていたのに、なぜか日本語が文字化けしておかしくなることがある。

bibファイルをテキストエディタで開き、名前をつけて保存で、ANSIなどのutf8以外の文字コードで保存した後に、またutf8で保存しなおしたら、何にもなかったようにうまく処理されるようになった。

一旦違う文字コードで保存することが肝心かどうかはわからない。もしかするとutf8で保存するだけでうまくいくかもしれない。でももともとutf8だったけど。

ちなみにWinshell のコマンドは、sjisになってるけど、うまくいっている。
pbibtex -kanji=sjis "%s"

Windows 7 Pro, 32 bit, Winshell 3.3.2.6