何か

Windows10でRe:VIEWでPDFを作成するまでの環境構築

Re:VIEWというツールがある。シンプルな構文で文書を書いておいて、それをTeX経由でPDFに変換してくれるものだ。

主に某技術系壁サークルの界隈でさかんに使われているようで、今回私が技術書典2に出す同人誌はこれを使って書くことにしたのであった。(低温調理器自作本出すから来てくれ!!!!)

で、Re:VIEWで調べるがどいつもこいつもmacばっかり使っていてWindowsで動かした話があんまりない。まして入稿までとなると絶望的である。

今回、一応入稿に使えそうなPDF/Xファイルへ変換するところまで全てできたのでやり方をまとめておく(真に入稿OKとなるかどうかはあと1-2週間のうちにわかるだろう)。

Continue reading

ミクロフの歩き方

チェコの南東部、モラヴィアという地域にミクロフ(Mikulov)という街がある。最近どうも景色がきれいということで有名になりつつあるっぽいので、これ幸いと訪ねることにしたのであった。

ミクロフ、プラハ、ブジェツラフの位置 ©2016 Google

ミクロフ遠景

モラヴィア地方はワインの名産地でもあるとのことで、景色もすばらしいとなるとますます行くしかない。ただひとつ、問題は地球の歩き方に載っていないことである。地上にそんな街あるの……?

インターネットを駆使して観光に挑み、無事満喫して(2泊しかしてないけど)帰ってきたので一通りのことを書いておく。

Continue reading

ブジェツラフでVodafoneのSIMを買う

なぜ?

ウィーンからミクロフに行きたいが、ミクロフにVodafoneのショップがないため、途中の乗換駅で調達したい。この町は地球の歩き方にもLonely planetにも全く載っていないので、(特に丸腰(インターネット通信が出来ない状態))で歩くために事前の調査が不可欠である。

どこ?

ミクロフ、プラハ、ブジェツラフの位置 ©2016 Google

ここ。チェコとオーストリア国境近くの田舎町。いま書いてるもう一つの記事からの画像流用なのがばればれで恐縮だが、赤いピンが立っているのはミクロフ。

Continue reading

SKAGEN Hagen Connected を買った

もともとSKAGENの時計が好きで2つほど持っていて、そろそろ買い足したいなーと思っていたところにスマートウォッチを出すというので早速購入した。ほんとうは数週間前にSKAGENのwebサイトで注文可能になっていたのだが、配送先を日本にするとエラーで購入できなかったので(今は知らないが)、直営店にいって買ってきたのであった。

dsc04054

ということで2日間使っただけだが軽くレビューを書いておく。アプリの機能追加もあるので、随時更新中。

Continue reading

Windows 10 Anniversary Updateを適用後、短時間のフリーズが頻発する件

Updateしてからというもの、ちょっと何かする(アプリを立ち上げるとか、その程度)と30秒くらいOSまるごとフリーズするプチフリっぽい現象が頻発していた。かなり厳しい。

イベントビューワを見るとstorahciとかいうのが死んでいるらしい。

storahci

Level: Warning
Source: storahci
Event ID: 129

General:
Reset to device, \Device\RaidPort0, was issued.

Continue reading

Domke J-1を個人輸入した

Domke J-1

なぜうっかり買ってしまったのか

先月末、新月の夜に天体観測に出かけていった。そのときは前日の天気が悪かったせいか、夜露というか霧が濃かったせいか、地面がわりとぬかるんでいて、直接バッグを地面に置くのが憚られたのであった。またかねてから機材の増加(赤道儀, 雲台, サブカメラ, リモコンなどの小物)によって普段使いのカメラバッグに到底収まらないという状態になっていた。

普段使いの:

ミラーレス1,2台  + 広角レンズ2, 3本 + 三脚が持ち運べて気に入っているが、赤道儀が出てくるとこれではどうにもならない。また、撥水加工(で、いろんな遺跡の砂地に持ってって地面に直接置いてきた)とはいえ、さすがにぬかるんだ土の上に置くと気も滅入る。まあ言い訳はいい、買ったものは買ったのだ。

Continue reading

Goでバイナリを固定長で読んでいくときのメモ

バイナリの先頭nバイトを読みたいときというのがあると思う。先頭4バイトを読むとデータのサイズが入ってて、その後nバイトがデータとか、そういうやつ。固定長で読む良い方法があんまりなくて(あったらおしえてくれ)、自分でsliceを所望のサイズでmakeして、そこにio.Readする。ちょっとはまったのでメモ。

 

  file, _ := os.Open("test.bin")

  // 例1
  buf := make([]byte, 256)
  read_size, _ := file.Read(buf)
  fmt.Println(read_size, "bytes read.", string(buf))

  // 例2
  buf2 := make([]byte, 256)
  read_size2, _ := io.ReadFull(file, buf2)
  fmt.Println(read_size2, "bytes read.", string(buf2))

 

何も考えずにやると上の例1みたいになると思うが、これだとバッファが埋まるまで読んでくれないことがあってはまる(read_sizeが256にならない場合がある)。

そもそも、io.Readは1回呼ばれたときの読み出しサイズが保証されていないので、io.Readで読み出されるサイズはなんかよくわからないけど読み出し元の種類とか状況によるっぽい。数バイトくらいなら問題ないことが多いが、サイズが大きくなってくると1回のio.Readでバッファを埋められないことがでてくる。なので、io.ReadFullを使う(例2)。これならバッファが埋まるまでio.Readを繰り返し呼んでくれる。テキストファイルの読み込みとかだとio.Readを直接使うことはほとんどないが、バイナリを扱うときもできるだけ使わないのがよさそう。

ちなみに[]byteをstringにcastできるらしい。ASCII専用だろうが。

 

あと、2/4/8バイトを読んで数値として解釈するのはもっと簡単で、encoding/binaryをimportして、

  var num uint16
  binary.Read(file, binary.LittleEndian, &num)

とすればnumの型の分(この場合は2バイト)だけ読み出してreaderを進めてくれる。楽。

追記(2016/04/16):

encoding/binary/binary.goを読むと、io.ReadFullを使っていることがわかる。なるほど。

あと、binary.Readは各整数型以外にもそれぞれのスライスに対応しているらしい。

  num := make([]uint16, 3)
  binary.Read(file, binary.LittleEndian, &num)
  fmt.Println(num)
  // => [14648 24880 25442]

Windows 10 Insider preview build 14316でsubsystem for linuxを試す

タイトルが長い。

まずInsider previewのfast ringに入り、build 14316のアップデートを適用する。すると、Windowsの機能?のところにWindows Subsystem for Linux (Beta)という超かっこいい項目があるので、有効にする。

Windows-features

起動したところ

起動してunameを打ったところ

あとは普通にBash on Ubuntu on Windowsとかいうプログラムが追加されているので、起動して適当にあそぶ。

試した範囲では、build-essentialをはじめとする各種パッケージは普通にaptで入るし、それでzsh, emacs, gitあたりは普通にconfigure/makeできて動いた。emacsをちょっと使ったら表示がぶっ壊れたりしてたし、動作はだいぶ怪しいところが当然あるが、普通にうごくのがすごい。

 

Zsh

sudo apt-get install -y git-core gcc make autoconf yodl libncursesw5-dev texinfo
ls
mkdir zsh-build
cd zsh-build/
git clone git://zsh.git.sf.net/gitroot/zsh/zsh
cd zsh/
./Util/preconfig
./configure
make
make install

emacs 24.5

curl -O http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-24.5.tar.gz
tar xzf emacs-24.5.tar.gz
cd emacs-24.5
./configure --without-x
make
make install
emacs
emacs -version

git

git clone https://github.com/git/git.git --depth 1
cd git/
make configure
./configure --with-curl --prefix=$HOME/local
make
make install

まるでubuntuのように動く。ただデフォルトのリポジトリがクソ重いので、riken様のリポジトリに変えておくとよい。普通にubuntuと同じように/etc/apt/sources.listを変えるだけ。

root@localhost:~# cat /etc/apt/sources.list
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ trusty main restricted universe multiverse
deb http://ftp.jaist.ac.jp/pub/Linux/ubuntu/ trusty-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

emacsが入ると自分のinit.elを試したくなるのが人情というものだろう。私のはこれ: https://github.com/naotaco/emacs.d

いつも通りel-getを~/.emacs.d/以下にcloneして、このinit.elを置いて起動したら普通に動いた(ただしgit1.9.5以上が必要なので、自分でビルドする必要がある)。すごい。

emacs

emacs

すぐ表示が壊れる

すぐ表示が壊れる

Auto completionもHelmも動く。

Auto completionもHelmも動く。

なにがなんだかわからないが、本当に動いててすごい。使ってて頭が混乱する。あと、Ctrl+Aがどっかにキーを奪われているのかbash/emacsで使えないのが厳しい。まあそれを言えば、コマンドプロンプト並の機能しかないターミナル自体がそもそも相当厳しいが、まあさすがにこの辺はそのうちなんとかなるだろう。とりあえず無限の可能性を感じる。

2015年に読んで最高だった本

去年はいろいろと本を読んで、かつ記録をつけたので、そういう意味では真面目な1年だったと思う。

http://booklog.jp/users/naotaco?reviewed=1

その中でも最高だったのはメイヤーのオブジェクト指向入門。

上下巻?に別れている。方法論・実践の方は手に入らなかったのでまだ読んでいない。

Continue reading