ワテのブログ

The fundamental things apply As time goes by.

2013年12月22日日曜日

Vagrantを使ってみた

スポンサーリンク

vagrantは仮想環境をコマンド一発で構築できる便利なツールである。

仮想環境を構築するにはインストール用CDイメージの用意、仮想マシンの設定、インストール作業が必要である。面倒である。

vagrantはこの作業を軽減してくれる。

vagrantをインストールして以下のコマンドを打つだけでubuntu 12.04の32bit版が起動して仮想マシンにsshでログインできてしまう。(VirtualBoxがインストールされているのが前提)

$ mkdir vagrant
$ cd vagrant
$ vagrant init add precise32 http://files.vagrantup.com/precise32.box
$ vagrant up
$ vagrant ssh

しかもゲストOSの/vagrantフォルダがホスト側のvagrantフォルダ(上のコマンドで作成したフォルダ)が同期されるのでホスト側でコードを書きゲスト側で処理することができる。 このように非常に簡単に仮想環境を構築できる。

さらにVagrantfileを作成すれば必要とするツールをインストールした仮想環境を簡単に構築できる。

具体例を一つ

texlive2012環境の入ったUbuntu 12.04 LTSの仮想環境を構築する。 まず適当にフォルダを作成しそこにVagrantfileを作成する。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"
  config.vm.provider "virtualbox" do |vb, override|
    override.vm.provision :shell, :inline => "apt-get update && apt-get -y install python-software-properties && add-apt-repository ppa:texlive-backports && apt-get update && apt-get -y install texlive-lang-cjk"
  end
end

そして、おもむろに

$ vagrant up

と打ち込む。

まず、config.vm.box_urlで指定されたURLからboxのダウンロードがはじまる。 ダウンロード完了後、仮想マシンが実行され、override.vm.provisionで指定したコマンドが実行される。 このコマンドはパッケージをアップデートしtexliveのbackportsを設定に必要なadd-apt-repositoryコマンドを含むパッケージをインストール。その後、texliveのbackportsを設定しアップデート。texlive-lang-cjkをインストールする。

その後

$ vagrant ssh

で仮想マシンに接続してplatexコマンドを実行すると

vagrant@precise32:~$ platex
This is e-pTeX, Version 3.1415926-p3.3-110825-2.4 (utf8.euc) (TeX Live 2012/Debian)
 restricted \write18 enabled.
**

という具合にplatexが見事に実行される。

まとめ

Vagrantfileを用意すればコマンド一つで好みの仮想環境を超簡単に構築できてみんな超ハッピー

以上

スポンサーリンク

2013年12月19日木曜日

[続報]dvipdfmxでepsの画像がずれる件について

スポンサーリンク

以前、dvipdfmxでeps画像がずれる件についてBoundingBoxを修正するように書いたがどうやらもっと簡単に解決できるようだ。 グラフィックスのパッケージを読み込む時にdvipdfmxをオプションに指定すればよいようである。

\usepackage[dvipdfmx]{graphicx}

追記(2014/01/26)

こちらでより詳細な検証がなされています。→ dvipdfmx での EPS 画像挿入が最近アレな話 - マクロツイーター

検証

testデータを作成して検証してみた。

方法

簡単なepsファイルを作成しバウンディングボックスを指定。TeXからインクルードする。 グラフィックパッケージのオプションにdvipdfmxを指定した時としなかった時に生成されたpdfを比較する。

結果

[dvipdfmx]がある時

[dvipdfmx]が無い時

なるほどですね!

テスト用のファイル

test.eps

\documentclass{jarticle}
\usepackage[dvipdfmx]{graphicx}
%%\usepackage{graphicx}
\begin{document}
This is test.

\includegraphics{test.eps}

This is test.
\end{document}

test.eps

%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 100 100 200 200
newpath
100 100 moveto
200 100 lineto
200 200 lineto
100 200 lineto
100 100 lineto
stroke

newpath
0 0 moveto
300 300 lineto
300 0 moveto
0 300 lineto
stroke

使用したdvipdfmxのVersion=dvipdfmx-20130405

スポンサーリンク

2013年12月14日土曜日

IFTTTの位置情報トリガー

スポンサーリンク

概要

IFTTTに位置情報トリガーが 追加された 。 これで

  • 指定した領域に入ったときにアクションを実行する
  • 指定した領域から出たときにアクションを実行する
  • 指定した領域から出たり入ったりしたときにアクションを実行する
ことができるらしい。

レシピの作成

レシピの追加をタップしトリガーの追加をタップする

トリガーの中からiOS Locationを選択。You enter an areaを選択。指定した領域に入ったときにアクションが実行される。

地図が表示される。指定したい領域に移動する。円形の領域が範囲となる。+/-ボタンで領域の大きさを調整する

領域を確定したらContinueボタンをタップする

次にアクションを選択する。ここではGmailを選択する。

メールの宛先を指定して、Continueをタップ

Finishをタップするとレシピについかされる

これで指定した領域に入ったときにGmailが指定した宛先に送信される。

感想

ちょっと近所でためしてみたが、メールも通知もこなかった。 どうやらトリガーが発火していないようだ。 おそらく位置情報の取得に携帯基地局の位置情報をつかっているぽい。 それなりの距離を移動をしなければ情報が更新されずトリガーが不発になる感じである。

スポンサーリンク

Raspberry Piで無線LANを使う

スポンサーリンク

概要

Raspberry Piには有線LANが搭載されていないがUSBに無線LAN子機を挿すことによって無線に対応させることができる。 LANケーブルが不要になり設置場所が自由になる。

USB無線子機にはBuffaloのWLI-UC-GNMを用いた。 リーズナブルな割りに高性能かつコンパクトでお買い得感があふれている。 そして、青色LEDが未来的である。

設定

WLI-UC-GNMをUSBに挿入。 ifconfigコマンドでwlan0が存在することを確認する。

/etc/network/interfacesを以下のように書き換える。 IPアドレスはDHCPで割り振る。

auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto wlan0
allow-hotplug wlan0
#iface wlan0 inet manual #コメントアウト
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf #コメントアウト
iface wlan0 inet dhcp #追加
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf #追加
iface default inet dhcp

無線LANの認証設定を行なう。 設定はwpa_passphraseコマンドを使用し、/etc/wpa_supplicant/wpa_supplicant.confに追記する。

$ sudo wpa_passphrase <SSID> <PASSPHRASE> >> /etc/wpa_supplicant/wpa_supplicant.conf

うちでは認証にWPA2 パーソナル(WPA2-PSK)を使っている。 /etc/wpa_supplicant/wpa_supplicant.conf を以下のように書き換える。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
 proto=RSN
 key_mgmt=WPA-PSK
 pairwise=CCMP
 group=CCMP
 priority=2
 ssid="****"
 psk=**************************************************************************
}

その後、 sudo reboot で再起動。 設定に問題がなければ ifconfigでwlan0にIPアドレスが割り振らていることが確認できるはずである。

スポンサーリンク

2013年12月12日木曜日

Windows PowerShellでファイルのバージョンを確認する

スポンサーリンク

PowerShellを用いてファイルのバージョンを確認する。バージョン番号に基づいたファイル名など自動生成するときに便利。 Win32 APIを使って取得できるが面倒である。PowerShellなら一行ですぱっと書けるのがすばらしい。

powershell -Command "(dir <Path>).VersionInfo.FileVersion"

シェルスクリプトにするのなら以下のような感じ。

#!/bin/sh
powershell -Command "(dir $1).VersionFile.Version"
スポンサーリンク

2013年12月11日水曜日

WIndows PowerShellでクリップボードの内容を標準出力に書き出す方法

スポンサーリンク

クリップボードにコピーした文字列をささっとgrepでフィルタしたいことがある。 Windowsにはクリップボードを標準出力に書き出すコマンドがない。 そこでPowerShellを使って作った。

# pclip
powershell -Command "add-type -an system.windows.forms;[System.Windows.Forms.Clipboard]::GetText()"

こんな感じで利用する。

$ pclip | grep hoge
スポンサーリンク