fohte.log

https://fohte.net に移行しました

2017 年の振り返り

はじめに

2017 年もいよいよ終わりですね。

今年は 5 年間通った神戸高専を卒業し、神戸の実家を離れ某社に新卒入社し、同時に上京して一人暮らしを始めるという激動の年でした。

普段は滅多に長文を投稿していませんが、流石に年に 1 つ以上は何か書いておきたいということで今年一年の振り返りを書きます。

新社会人としての生活

今年 4 月から某社 *1 にエンジニアとして新卒入社し、現在もそこで働いています。

チームとしては開発部の基盤チームに所属しており、主に生産性向上を目的とした開発基盤の整備を担当しています。

自転車で通勤する

高専時代はバスで通学していましたが、満員で座れないととにかく消耗する問題がありました。 二度とこの辛い思いはしたくないですし、東京の満員電車はこれよりも厳しいことが分かっていたため、今回は会社から 2 駅の場所に住んで自転車で通勤するという択を取りました。

自転車通勤のメリットは様々あります。

  • それなりに運動になる
  • 満員電車で消耗しない
  • 電車遅延に巻き込まれることがない
  • 終電という概念がなくなる

みなさんもぜひ自転車通勤しましょう。

作ったもの

ゲーム

IIDX / BMS

最近またやらなくなっていてリハビリしている。

Splatoon 2

いつの間にかやらなくなっていた。 チャージャーが動きやすくなる調整が入ればまたやるかもしれない。

DQ11

来年発売される MHW のために PS4 と 4K ディスプレイを買って、そのついでにやりたかったので買った。 結局 Switch 版はいつ発売されるんだろう。

ゼノブレイド 2

前作をやっていなかったことを後悔するくらいに面白かった。 来年 DLC で追加ストーリー来たらまたやります。

*1:まだ許諾を頂いていないため伏せていますが、すぐに推測できます

LaTeX で TikZ を usepackage していると PNG 画像が表示されなくなる

状況

TikZ (あるいは gnuplot-lua-tikz などの TikZ に依存しているもの) を usepackage すると PNG 画像が適切に表示されなくなる。

\documentclass{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz}

\begin{document}
\begin{figure}[htbp]
  \centering
  \includegraphics[width=10cm]{fig/ai_pet_family.png}
  \caption{ai\_pet\_family.png}
\end{figure}
\end{document}

f:id:Fohte:20170203125253p:plain

ログを見ると警告が出ている。

dvipdfmx:warning: Unparsed material at end of special ignored.

解決法

dvipdfmx が全てのパッケージで適用されるようにする必要がある。 つまり、 documentclass のオプションで dvipdfmx を指定すれば良い。

以下のような行がある。

\documentclass{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz}

これを以下のように変更する。

\documentclass[dvipdfmx]{jsarticle}
\usepackage{graphicx}
\usepackage{tikz}

正常に表示された。 f:id:Fohte:20170203125256p:plain

参考

brew cask で QuickLook プラグインを入れようとするとコケる

状況

$ brew cask install quicklook-json
==> Downloading http://www.sagtau.com/media/QuickLookJSON.qlgenerator.zip
######################################################################## 100.0%
==> No checksum defined for Cask quicklook-json, skipping verification
==> Moving QuickLook Plugin 'QuickLookJSON.qlgenerator' to '/Users/<username>/Library/QuickLook/QuickLookJSON.qlgen
Error: Permission denied - (/usr/local/Caskroom/quicklook-json/latest/QuickLookJSON.qlgenerator, /Users/<username>/Library/QuickLook/QuickLookJSON.qlgenerator)

解決法

ログを読むと、 /Users/<username>/Library/QuickLook/QuickLookJSON.qlgenerator に移動しようとしたが権限が無くて失敗してるっぽい。

$ ls -l ~/Library | grep QuickLook
drwxr-xr-x    3 root   staff    102 Feb  2 18:35 QuickLook/

所有者が root になっているために弾かれてしまっているようなので chown で自分に所有権を移す。

$ sudo chown -R $USER ~/Library/QuickLook

参考

LaTeX で TikZ を usepackage すると Missing number, treated as zero. でコケる

状況

とあるスタイルファイルを usepackage した状態で

\usepackage{tikz}

しようとするとエラーを吐かれ、TeX ファイルのコンパイルができない。

エラーログ

! Missing number, treated as zero.
<to be read again>
                   \gdef
l.33 \xdef
          \pgfmath@rnd@z{\the\c@pgfmath@counta}% The seed.

再現性のある最小構成

ディレクトリ構成

.
├── foo.sty
└── main.tex

main.tex

\documentclass{jsarticle}

\usepackage{foo}
\usepackage{tikz}

\begin{document}
\end{document}

foo.sty

\def\year#1{\gdef\@year{#1}}

原因

TikZ が内部で利用している pgfmathfunctions.random.code.tex\year を乱数のシードの生成に使用していて、TikZ をロードする前に呼び出したスタイルファイル (今回は foo.sty) で定義された \year とコンフリクトしているのが原因だった。

解決法

TikZ をロードした後にコンフリクトしていたスタイルをロードすれば良い。

\documentclass{jsarticle}

\usepackage{tikz}
\usepackage{foo}

\begin{document}
\end{document}

参考

シェルスクリプトでチルダを含む文字列をチルダ展開する

シェル上でチルダは自動的に展開されるが、文字列内のチルダは展開されない。

$ echo $HOME
/home/fohte

$ echo ~
/home/fohte

$ echo "~"
~

$ echo '~'
~

これは eval もしくは bash -c によって解決できる。

$ eval 'echo ~'
/home/fohte

$ bash -c 'echo ~'
/home/fohte

また、チルダに限らず変数やワイルドカード (*, **) も展開される。

参考

2016 年の振り返り

成人した

成人した。

卒業研究

自分が在籍している高専本科では 5 年次から卒業研究が始まる。
自分は無事に 5 年生へと進級できたため、2016 年に度々話題になった Deep Learning をテーマの一つとして掲げていた研究室に所属し、Deep Learning での画像自動生成をテーマにした。

研究とはいっても自分の学科の卒業研究は研究というよりやってみたや作ってみたのような雰囲気で、自分はのびのびと機械学習の勉強をしていた。
9 月にあった中間発表では、DCGAN と呼ばれる手法が高いクオリティーの画像を自動生成できるようになって最近盛り上がっているということで、それを Python3 + Chainer で実装して学習させてみましたよというようなことを発表した。
内容はかなり薄いしこれで大丈夫なのかという気がするが、そもそも機械学習について全く知識がなかったし、何でどう実装するべきなのか分からず、ひたすらググって何も分からんみたいな期間が長かったから仕方ないね。

2 月初旬には卒論を完成させなければならないので、今年は頭から頑張りたい。

ErgoDox を買って Dvorak 配列に移行した

今年は卒業研究があったり、5 年生になって授業数が激減し自宅で作業することが増えたりでタイピングする機会が増えた。
そこで、左右で分割されたキーボードがあれば寝転びながらタイピングできるしめっちゃ楽じゃね?ということで探していたら ErgoDox を見つけて、購入した。

ErgoDox は左右に分割されているため右側に配置されているキーを左手で押すことは難しく、QWERTY 配列で Y キーを左手で押すような独自運指が体に染み付いていたので、QWERTY 配列よりも効率的にキーが配置されている Dvorak 配列に乗り換えた。

ErgoDox が到着してから Dvorak 配列に切り替え、そこからしばらくはタイピングゲームで遊んでいた。
Dvorak 配列に慣れるのに要した期間は約 1 ヶ月ほどで、秒速 6 キー程度になった。QWERTY 配列では秒速 8 キー前後だったので遅くはなったが、そこまで不便には感じていない。
QWERTY 配列はもう完全に忘れてしまって、今 QWERTY 配列でキーボードを打とうとするとキーボードガン見しながら人差し指でタイピングすることになる。

ErgoDox + Dvorak 配列にはかなり満足していて、これから先キーボードは分割キーボード以外は購入しないし、QWERTY 配列に戻ることはないだろう。
ただ Dvorak 配列に完全に移行すると難点もあって、世の中は QWERTY 配列が標準で Dvorak 配列はまだまだ普及していないため、iOS 標準 IMEDvorak 配列が搭載されていなかったり、ゲームのソフトウェアキーボードが QWERTY 配列しか用意されていなかったりで辛い思いをすることが割と多い。

技術系のこと

今年は卒業研究がメインだったのでもっぱら Python を触っていて、簡単なスクリプトから研究室で動かしている Slackbot まで何でも Python で書くようになった。
Python は複雑な構文が特にないため分かりやすく、公式のドキュメントも充実していて、すぐに馴染んだ。
しかし、それなりに理解できて満足したのでそろそろ他の言語を学習したい気持ちになっている。今年は Ruby かな。

IIDX, BMS 復帰した

約 3 年前に家庭用環境を取っ払って一時は引退していたが、Splatoon を通じて知り合った音ゲーマーのフォロワーとゲーセンで遊んでいたときに IIDX をやってみると完全にモチベーションが復活して、気付いたときには DAO コンを購入していた。

今はほぼ毎日 1 時間以上は BMS かゲーセンで IIDX していて、BMS は発狂九段、IIDX卑弥呼ハード程度の地力になった。
まだ全盛期に比べると少しだけ劣っているので、2017 年はひとまず全盛期の自分を越えて、発狂皆伝 + IIDX ☆12 全エクハを目指しつつ頑張りたい。

qmk_firmware の keyboard ディレクトリの構成が変更されていた

Fork 元 (jackhumbert/qmk_firmware) から自分のリポジトリに pull したところ、 keyboard ディレクトリの構成に変更があった。 今年 7 月に移動したらしい。

対応としては、自分の keymap をディレクトリごと移動すればよい。
例えば ErgoDox の場合、以下のように mv する。

mv keyboard/ergodox_ez/keymaps/<your directory> keyboards/ergodox/keymaps