この記事は あひる焼き Advent Calendar 2015 – Adventar の12月05日分の記事です.
みんなでまったり #あひる焼き すればええんじゃないかなと思います。
ということで最近焼いたあひるの話を.
発端
fortune というフォーチュンクッキーのような格言をランダムに表示するプログラムがあります.様々な辞書データが存在していて自作も出来ます.
pi@raspberrypi ~ $ sudo apt install fortunes # fortuneの導入 pi@raspberrypi ~ $ fortune # fortuneの実行 Some of us are becoming the men we wanted to marry. -- Gloria Steinem pi@raspberrypi /tmp $ cat <<__EOF__> data # fortuneのデータ作成 テスト % 1行目 2行目 % __EOF__ pi@raspberrypi /tmp $ strfile data # データ変換 "data.dat" created There were 2 strings Longest string: 16 bytes Shortest string: 10 bytes pi@raspberrypi /tmp $ ls data* data data.dat pi@raspberrypi /tmp $ fortune data # 自作データを利用 1行目 2行目 pi@raspberrypi /tmp $ fortune data テスト
その辞書データに @ahiru3netさんのあひる焼きに対するmentionを使うと楽しいかもしれないと思いました.でもデータを集めるのが面倒だなとつぶやいたところ @shimadahさんにGitHub を教えてもらいました.
@matoken sourceにまとまってまっせ https://t.co/qcEKJRX2yE
— Shimada Hirofumi (@shimadah) 2015, 11月 27
それを元にコネコネして……うまくいかないところに@ahiru3netさんの助言.
@matoken どこも
strfile file file.dat
したあとに
fortune file
ってしてますね
— 燃焼のメタファー.exe (@ahiru3net) 2015, 11月 27
焼けた
てことで #あひる焼き fortune こんな感じで
https://t.co/ygpnzLoLJk
— (「ΦωΦ)「 (@matoken) 2015, 11月 28
やってることはahiru_yakunaプラグインのmentionのデータをもらってきて乱暴にfortuneで利用できる形式に変換して~/.zshrc に登録してログイン時に台詞を出すようにしています.
mkdir ~/.fortune;wget -O - https://github.com/Na0ki/ahiru_yakuna/raw/master/config.yml|grep ^\-\ \" | sed 's/^-\ \"//'| sed 's/"$/\n%/' | sed 's/\\n/\n/g' > ~/.fortune/ahiruyaki && strfile ~/.fortune/ahiruyaki ~/.fortune/ahiruyaki.dat && echo fortune ~/.fortune/ahiruyaki >> ~/.zshrc
これでログインのたびに以下のようにメッセージが表示されるようになりました :)
焼いちゃうのか?!本当に焼いちゃうのか?! pi@raspberrypi ~ $
もっと焼く
でもメッセージだけだとちょっとさみしいです.
そこで cowsay
を使ってみます.cowsay はアスキーアートで書かれた牛などのキャラクタに指定した台詞を喋らせることの出来るプログラムです.都合のいいことに選択できるキャラクタの中にあひるがいます.あひるに喋ってもらいましょう!
pi@raspberrypi ~ $ sudo apt install cowsay # cowsay 導入 pi@raspberrypi ~ $ cowsay hello cow # cowsay 実行 ___________ < hello cow > ----------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || || pi@raspberrypi ~ $ cowsay -f duck hello duck # あひるに喋らせる ____________ < hello duck > ------------ \ \ \ >()_ (__)__ _ pi@raspberrypi ~ $ cowsay -f duck あひる焼き # 日本語を喋らせる _______ < あひる焼き > ------- \ \ \ >()_ (__)__ _
日本語を喋らせると吹き出しがずれてしまいます.あひる焼きの台詞の殆どは日本語なのでこのままではまずいです.調べてみるとバグレポートされていました.
中国語?もやっぱりずれちゃうみたいです.
文字数と見た目のキャラクタの文字数のズレから起こっているようです.とりあえず日本語だけでも動くように出来ないかと euc-jp に変換して文字数を確認してといったダメな修正をしていたところGoogle+の以下の投稿のコメントで +Masakazu Takahashiさんがさくっとパッチを作ってくれました!
このパッチは報告しましたが,取り込まれてもstretch以降でしょう.ということでDebianだと以下のようにしてソースを入手してパッチを当てることが出来ます.
pi@raspberrypi ~/src $ sudo apt install libtext-charwidth-perl # 必要なパッケージの導入 pi@raspberrypi ~/src $ apt-get source cowsay # cowsay の source 入手 pi@raspberrypi ~/src $ cd cowsay-3.03+dfsg1 # ディレクトリ移動とパッチ適用 pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ wget -O - https://gist.githubusercontent.com/emasaka/639a9168c6a9ddba044f/raw/1a55ec58ded59b3181f1721dbbe814a38d5ea4cb/cowsay-mbswidth.patch | patch -i - patching file cowsay pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ ./cowsay -f duck あひる焼き ____________ < あひる焼き > ------------ \ \ \ >()_ (__)__ _
~/bin
辺りにコピーして使ったり,以下のような感じで既存のパッケージを置き換えてしまってもいいかもしれません.
pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ vi debian/control - Depends: ${misc:Depends}, ${perl:Depends} + Depends: ${misc:Depends}, ${perl:Depends}, libtext-charwidth-perl pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ dpkg-buildpackage -b pi@raspberrypi ~/src/cowsay-3.03+dfsg1 $ sudo debi
さて,fortuneのことを忘れてしまいそうですが以下のようにしてあひる焼きfortuneの結果をあひるに喋らせます.
pi@raspberrypi ~ $ cowsay -f duck `fortune ~/.fortune/ahiruyaki` ______________ < ヒッヒッヒッ > -------------- \ \ \ >()_ (__)__ _
いい感じです :)
~/.profile
辺りに登録しちゃいましょう.aliasも設定してみます.
pi@raspberrypi ~ $ echo 'alias a="fortune ~/.fortune/ahiruyaki | cowsay -f duck"' >> ~/.profile pi@raspberrypi ~ $ echo a >> ~/.profile
これでlogin時や a
と入力することで実行されます.
Last login: Fri Dec 4 23:32:05 2015 from 192.168.2.210 ________________________________________________________________________________ / あひる焼きというものには鮮度があります。焼けば焼くほどに、あひる焼きとは廃れて \ \ いくものなのです。 / -------------------------------------------------------------------------------- \ \ \ >()_ (__)__ _ pi@raspberrypi ~ $ a ________________________ < バーニング通帳!!!! > ------------------------ \ \ \ >()_ (__)__ _
Xでも焼く
GUI の X 版のcowsayも存在します.こいつも試してみましょう.
pi@raspberrypi ~ $ sudo apt install xcowsay pi@raspberrypi ~ $ xcowsay `fortune ~/.fortune/ahiruyaki`
なかなか特徴的なcowが喋りました.せっかくなのであひるに喋らせましょう.吹き出しの向きと位置を変えてあひる画像を指定しています.
pi@raspberrypi ~ $ wget https://github.com/Na0ki/ahiru_yakuna/raw/master/ahiru240.jpg -O ~/.fortune/ahiru240.jpg fortune ~/.fortune/ahiruyaki | xcowsay -l --bubble-at=0,-60 --image=$HOME/.fortune/ahiru240.jpg
背景がちょっと邪魔なので透過処理をしてみます.
いい感じです :)
例によってaliasにしておきます
pi@raspberrypi ~ $ echo alias xa='fortune ~/.fortune/ahiruyaki | xcowsay -l --bubble-at=0,-60 --image=$HOME/.fortune/ahiru240.png' >> ~/.profile
そんなこんなでみんなのおかげであひるがいい感じに焼けるようになりました.@shimadahさん, @ahiru3netさん, @emasakaさんありがとうございました!
#そうそう,以前はフレームバッファでもあひる焼きしてました.