某求人サイトに掲載するにあたって、社内で撮影が行われた。営業の募集なので、とりあえず僕は関係なし。はしっこに背中が映っている可能性はあるが。
いや、別にマズイとかキライだとかって訳じゃないんだけど(笑)。例えば、メニューにアボカドサンドとかアボカドサラダとかあった場合、喜々として注文するのは女の子に多いような気がする。男が「おー、アボカドサラダあるじゃん!」と喜んでる姿にはお目にかかったことがないんだけど、これは僕が持ってるサンプル数が少なすぎるのか?
今日はなんだか朝からやる気がなく、ずっとダウナー。仕事もろくにせず、日記ブラウズしてたりして過ごした。なんだかなー。
au が始めたチクリシステムが効果を出しているのか、今日は ezweb.ne.jp からの迷惑メールは2通のみ。早速チクリ。代わりに docomo.ne.jp からやってくるようになった。なんだかなー。
PHP + MySQL による CMS ソフトウェア「Manbo Open Source (MOS)」の日本語化などを行っているのだとか。PHP で CMS だと、XOOPSが有名なのだけど、MOS は存在すら知らなかった。。。
ネタ元は「Webコンテンツの管理,もっと楽をしたいと思いませんか?」(ITPro)。
昨日までは「7/15 出荷予定」となっていたので、「もしかして今日、届いちゃったりするんかな?」と期待していたのだけれど、さっき AppleStore の Order Status を確認したら、出荷予定日が 7/30 になっていた。
なんだよー、そんなことなら Amazon で買った方が速かったか? 1000円引きだしな>Amazon
HPのタワー型サーバ。29,925円〜って、メチャクチャ安いんじゃない?
母親から電話があった。先日、祖父の3周忌があったそうで、その時に叔父から「たまには顔を出すように伝えておけ」という話が出たから連絡してきたらしい。だったら、3周忌をやるときに連絡をよこせと思うのだが。
母親と最後に話したのは祖父の告別式だから、2年ぶりか。いろいろな理由があって、関係がうまくいっていないから、この程度の期間が開くのはしょっちゅうだ。
実はケータイのキャリアを変えようかどうしようか迷った時に「電話でしか連絡できない相手(カード会社とかもだ)に対して、全て連絡しなくちゃならんことを考えたら、キャリア変更の道は萎え。」と書いた「電話でしか連絡できない相手」には母親も含まれていた。こちらから電話をする行為すらイヤなのだ。
こんな風に肉親とさえうまくいかないのに、そうでない人との関係がうまく行く訳が無い。対人関係に難ありのオレ。それまでの人間ってことだ。どうしようもないな。
カシオのCMを見ていてふと気がついたのだが、「水に濡れても大丈夫!」なケータイの表現方法が各社で違っている。
ソニーエリクソンのDoCoMo向け「SO902iwp+」はその名の通り「ウォータープルーフ(water-proof)とサイトで言っている。
一方、カシオのau向け「W42CA」では、CMで「ウォーターレジスタント(water-registant)」と表現していた。
英和辞書を引いてみるとどっちも「防水・耐水」で、似たような意味に見える。でも「proof」だけを調べてみると「耐えられる」で、「resistant」だけだと「抵抗者」と言う意味。
耐えるのと抵抗するのじゃ、後者の方がより強いような気がするけど、製品としてはどっちも「IPX7(旧JIS保護等級7)」という規格に相当するらしい。
ということで、防水・耐水性性能はどっちでも一緒みたい。なーんだ。
昨日に引き続き、今週は2回め。いろいろあって結果的に丸ごとサボった結果になってしまったので、今週はコンスタントに体を動かしたい。
「バラエティ」コースを選択して、ランニングマシンの傾斜がランダムに変わるところをほんの少しだけ早足気味にしてみている。傾斜の角度(だと思う)が、7.0〜9.0 くらいになることもあって、その時は手の振りを大きくして坂を上っている。
夜寝る前と朝起きた直後に(最近はサボらずに)血圧を測っているんだけど、運動した日とその翌日は血圧がいつもより落ち着いているんだよね。笑っちゃうくらいに直接の影響が出てる感じ。
セブンイレブンのサラダチキンを夕飯の中心にしたりもしていて、摂取カロリーも減らし気味にしてたら体重も減ってきた。
いまは効果が目に見えて出ているので、すごく楽しい。継続したい。
Pebble アプリにカスタムフォントを追加するときに、正規表現によって「文字を限定」できる機能がある。
どういうときに「文字を限定」したいかというと、Pebble アプリの容量を小さく抑えたいとき。Pebble アプリの最大容量はキロバイト単位なので、余計なものはそぎ落としたい気持ち。アプリの内容にもよるけど、基本的にはアプリ内で利用している文字だけに限定できればサイズが落とせる。
具体的な方法は Pebble 公式のガイドの「Font Resources」にその方法が書かれている。characterRegex
というキーの値に正規表現を記入できるってことらしい。
正規表現の部分とは直接関係ないけど、この(2015/07/15現在の)ドキュメントに書いてある「"type": "ttf"
」というのは「"type": "font"
」の間違いだと思う。そんな type は存在しないのでエラーが出る。ここでは正しいはずの「"type": "font"
」として書いておく(Pebble 公式にはあとで報告するよ)。
"media": [
{
"characterRegex": "[:0-9]",
"type": "font",
"name": "EXAMPLE_FONT",
"file": "fonts/example_font.ttf"
}
]
この書き方を真似して、M+ OUTLINE FONTS の中から、[:0-9]
だけを対象にしてみる。
"media": [
{
"characterRegex": "[:0-9]",
"type": "font",
"name": "MPLUS_FONT_14",
"file": "fonts/mplus-1c-light.ttf"
}
}
そして pebble build
してみると、、、エラーが出る。
% pebble build
[snip]
[ 7/38] mplus-1c-light.ttf.MPLUS_FONT_14.pfo: resources/fonts/mplus-1c-light.ttf ../../../../../usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py -> build/resources/basalt/fonts/mplus-1c-light.ttf.MPLUS_FONT_14.pfo
[snip]
Build failed
-> task in 'mplus-1c-light.ttf.MPLUS_FONT_14.pfo' failed (exit status 1):
{task 4387118992: mplus-1c-light.ttf.MPLUS_FONT_14.pfo mplus-1c-light.ttf,fontgen.py -> mplus-1c-light.ttf.MPLUS_FONT_14.pfo}
' python \'/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py\' pfo 14 --filter "[:0-9]" \'/Users/suzuki/work/pebble/resources/fonts/mplus-1c-light.ttf\' \'/Users/suzuki/work/pebble/build/resources/basalt/fonts/mplus-1c-light.ttf.MPLUS_FONT_14.pfo\' '
マルチバイト関係でなんかあるのかなーと思って、OS X に同梱されている Arial.ttf
を使って試してみる。
"media": [
{
"characterRegex": "[:0-9]",
"type": "font",
"name": "ARIAL_FONT_14",
"file": "fonts/Arial.ttf"
}
}
これで build すると、何事もなく成功する。
% pebble build
[snip]
[ 7/38] Arial.ttf.ARIAL_FONT_14.pfo: resources/fonts/Arial.ttf ../../../../../usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py -> build/resources/basalt/fonts/Arial.ttf.ARIAL_FONT_14.pfo
[snip]
'build' finished successfully (0.962s)
問題を特定するために、pebble build
ではなく、フォントの加工をしている Python スクリプト( fontgen.py
)を直接叩いてみる。スクリプトの引数は先程のエラーメッセージに出ていたので基本的にはそれをそのまま使うけど、input / output 用のパスは長くなるので相対パスに変えた。
% python /usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py pfo 14 --filter "[:0-9]" ./resources/fonts/mplus-1c-light.ttf ./build/resources/basalt/fonts/mplus-1c-light.ttf.MPLUS_FONT_14.pfo
Traceback (most recent call last):
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 367, in <module>
main()
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 363, in main
process_cmd_line_args()
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 355, in process_cmd_line_args
args.func(args)
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 300, in cmd_pfo
f.convert_to_pfo(args.output_pfo)
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 287, in convert_to_pfo
self.build_tables()
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 252, in build_tables
if (codepoint_is_in_subset(codepoint)):
File "/usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py", line 222, in codepoint_is_in_subset
if self.regex.match(unichr(codepoint)) is None:
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
最後の行に unichr() arg not in range(0x10000)
というメッセージがある。unichr()
が何かというと、ドキュメントには次のように書かれている(強調はオレが勝手に入れている)。
Unicode におけるコードが整数 i になるような文字 1 文字からなる Unicode 文字列を返します。
[snip]
この関数は Unicode 文字列に対する ord() の逆です。引数の正当な範囲は Python がどのように構成されているかに依存しています — UCS2 ならば [0..0xFFFF] であり UCS4 ならば [0..0x10FFFF] であり、このどちらかです。それ以外の値に対しては ValueError が送出されます。
「Python がどのように構成されているかに依存」ってなんだー!?と調べ始めたら、どうやら Python の Unicode には UCS-2 と UCS-4 の違いがあるようだ。
そんな話、知らなかったぞ?と「How to find out if Python is compiled with UCS-2 or UCS-4?」での検証方法で「pebble build を実行している Python 環境」をチェックしてみた。
% python
Python 2.7.10 (default, Jun 24 2015, 17:00:45)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.maxunicode
65535
オレが使っているのは UCS-2 の python だったので、もしかすると UCS-4 の python なら成功するんじゃないか?と考えた。
UCS-4 の python をビルドするには、configure
で次のように指定すれば良いとのこと。
% ./configure --enable-unicode=UCS4
手元の Python 環境は、pyenv でインストールしていたので、pyenv で --enable-unicode=UCS4
を指定する方法がないものか?と思って探してみると、pyenv の Issue にヒントがあった。
PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4" pyenv install 2.7.4
環境変数 PYTHON_CONFIGURE_OPTS
に指定すれば良さげなのが分かったので、手元でもこれを使ってみた。UCS-2 の python 2.7.10 は比較用にそのまま残しておきたかったので、一番近いバージョンの 2.7.9 で試した。
% PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4" pyenv install 2.7.9
インストール終了後、手元の Python 環境を 2.7.9 に切り替えて、先ほどの sys.maxunicode
の値をチェックしてみると、UCS-4 になっていることが確認できた。
% python
Python 2.7.9 (default, Jul 15 2015, 13:56:57)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.maxunicode
1114111
この 2.7.9 で pebble build
を実行してみると、、、
% pebble build
[snip]
[ 7/38] mplus-1c-light.ttf.MPLUS_FONT_14.pfo: resources/fonts/mplus-1c-light.ttf ../../../../../usr/local/Cellar/pebble-sdk/3.1/Pebble/common/tools/font/fontgen.py -> build/resources/basalt/fonts/mplus-1c-light.ttf.MPLUS_FONT_14.pfo
[snip]
'build' finished successfully (1.053s)
ビルドが成功した!!
だいぶ長くなったので簡単にまとめる。
unichr()
のエラーが発生するunichr()
のエラーが出て、実行時の Python 環境が UCS-2 なら UCS-4 にすれば解決するはー、トラブルシュートをするのも、この日記を書くのにも時間がかかってしまった。。。じゃあ Pebble アプリ作りに戻ろうっと。
Before...
▽ はづき [だってうまいじゃん(笑)>アボカド]
▽ トモコ [アボカドはイモクリナンキンに近いような気がするのでやはり女子は好きなような気がします。ちなみに私がへちっていたのも女..]
▽ すずき [イモ・クリはわかるけど、ナンキンってナンキンマメじゃないよね?あ!、もしかして南瓜か!?]
▽ トモコ [女性の好物と言えば「芋栗南瓜(いもくりなんきん)」。んもう、すーさんともあろう人が…]
▽ すずき [トモコさんにまでダメ出しされた。。。]