2015年6月30日火曜日

大発見。仕事しながらハニーローストピーナッツを食う方法。

プログラムを書くなんてことを仕事にしている人は、たいがい夜型人間で、真夜中あたりに調子が出てきたりということも多々あると思います。

ちょっと小腹が空いたりして、でもやはりこういう場合、スカした健康食みたいなものではなくて、ジャンクな何かをつまみながら、安いコーヒーか、炭酸飲料、もし許される状況なら軽いアルコールなどを啜りながら無心にコーディングするのが乙なものです。

そんなわけで、私はしばしば「STRIKE EAGLE  ハニーローストピーナッツ」というのを食べながら仕事をすることがあります。これ自体は実はカルディなどのちょっと小洒落た食材店で売ってることが多いのですが、F15ストライクイーグルをパッケージにデザインしてしまう頭の悪そうな感じ(どうせ創業者が元パイロットとかなんではないかと想像)と、軽い蜂蜜風味に塩分控えめとかそういうくだらないことは一切考えない高濃度の塩が、なかなか美味いのです。

ただ、豆が調味料で非常に粉っぽくなっており、食べると指がベタベタになるのでタイピングに支障をきたすのが問題でした。ティッシュ片手に拭きながらやるのですが、粉というのはティッシュでは拭き取りにくく、始末が悪い。

ところが昨日、デスク上を見渡してはたと閃いて試した方法がこれです。

手に塩がつかない!

正方形のポストイットを使ってるのですが、こいつを1枚、半分に折るとちょうどいい感じのスプーンになりました。一度に豆が3〜4粒ほどすくえます。

口に入れる時は紙を舐めないように流し込みます。で、食べ終わったらポストイットは丸めて捨てます。非常に衛生的であり、使い捨て食器の中ではトップクラスに低コストだと思われます。

仕事中以外では、ポストイットが手元にないのでわざわざこうする必要はないのですが、仕事中ならポストイットはたいがいあるので、便利な方法となります。


みなさんも是非、お試しください。

2015年6月25日木曜日

数字を3桁で区切るのが愚かしいというバカバカしい話

金額を書くとき、1,000,000みたいに3桁ずつカンマを打つじゃないですか。

ちょっと作ってたプログラムにユーティリティ関数を用意してやろうと思って、文字列の"1000"を"1,000"に変換するのを作ったのです。で、名前をつけようとして、はて、こういうの何て言うんだろう?と思いまして。

tri-ナントカ、とか、気の利いた単語があるのではと思って検索したら、「日本語は4桁ずつ(万、億、兆・・・)で区切るのに、英語の表記に毒されて3桁で区切るのはわかりにくいし、英語にあこがれて思考停止する愚かな行為だ、的な雰囲気の話がいくつも見当たりました。

検索結果のプレビュー程度しか見てないのでいちいちどこのブログだとか言わないけど、わりと多くの人が思いつくネタのようでぱっと見ていくつもの記事が見当たったので、特定の誰かの意見というよりは、まあある程度一般的な意見(一部ではあるけど稀ではない)ということでいいかなと思います。書いてる本人は目から鱗の有難い話と思っているかどうかは別に知らないけど・・・。

で、思うに、すげえどうでもいいですね。こういう話。どうでもいいから気にしなきゃいいんだけど、あまりにバカバカしくてつい。

数字の書き方なんかでナショナリズムを主張するこたないと思うのです。つうか、そこまで言うなら「10,000ではなく1,0000とすべきだ」ではなく「一万とすべきだ」と言えばいいじゃない。

アラビア数字を使って発展した科学の成果の恩恵に生まれてから死ぬまで24時間365日もれなく与って暮らし、その最たるものであるインターネッツなどで言論人を気取りながら、「日本語がー」とかってのは・・・まあ、昔の酔っ払い頑固親父の薀蓄話みたいで何ともくだらないな、と思いました。ネットなんてやってないで自分の家族か飲み友達にでも語ってりゃいいのに。

だいたい、「実は3桁区切りは英語の表記(thousand, million, billion..)には良くなじむ」みたいな話も書いてあったりするのだけど、実はもクソもないというか、そんなことは並の勉強をした中学生以上なら誰でも知ってるけど当然過ぎるのでイチイチ何かの発見かのように言ったりはしない、という類のことであって・・・。まあ、どうでもいいのですかね。

ちなみに、3桁区切りはthousand separatorと言うとWeblioには出てたけど、それじゃ長いので関数は単に"digit"という名前にしました。あんまり処理内容を表してないのだけど、数字に使うということはわかるだろうし、まあ、ともかく利用場面を考えると短い名前であることが優先だったので。

2015年6月11日木曜日

AWS S3にAWS SDK (Java)でファイルを送る

表題の通り。

SDK自体は、Gradleのbuild.gradleに
 runtime 'com.amazonaws:aws-java-sdk-iam:1.9.39'
 runtime 'com.amazonaws:aws-java-sdk-s3:1.9.40'
と書いて取得。SDK全部なら1行で済むが、1行で済んで楽なのは書いてる人だけで、ほぼ使わない100MB以上のファイルをいちいち取得したりビルドさせたりというのはコンピュータが可哀想と感じます。

ファイル送るのはこんなで出来た。


public void store(File file){
final String accessKey = "XXXXXXXXXXXXXXXX";
final String secretKey = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
s3.putObject("sampleBucketName", file.getName(), file);
}

ポイントとして、

  1. IAMでユーザーを作って、acceccKeyとsecretKeyを払い出しておく
  2. バケットのアクセス 権限(バケットポリシー)で、ユーザーにアクセス許可しておく(今回は特定バケットを特定ユーザーに許可したかった)
    1. バケットポリシーの編集は、手でやる場合にインデントに全角空白があったりするとJSONパースエラーになる(くだらないが、AWSの画面では空白見えないので一瞬はまった。エディタにコピーした方がいいな)
    2. Principalに、IAMのURIを指定する(複数の場合、{"AWS":["uri 1","uri2"]}。たぶん)

2015年6月4日木曜日

MacBook AirでSafariが起動しない件

数日前から、自分のMacBook AirのSafariがうんともすんとも言わない。

Safari 起動しない とかで検索すると、iOSの話がよく出てきて、設定アプリからリセットしろとか書いてあるが、何せ俺はYosemiteなので。そしてSafariは落ちるとかじゃなくて、そもそもアイコンをクリックしてもぴょんぴょんすらしないので、リセットも出来ない。

困ったなあ、なんて検索していたら

 ~/Library/Preferenecs/com.apple.Safari.plist
 ~/Library/Caches/com.apple.Safari

を削除すればいい的な話を見かけたので、ターミナルを開きrm -rfなんかしてガツっと削除してやった。

するとどうだろう!

やっぱり全然起動しない!

ちなみにゲストユーザでも起動しない。どうしたものか。

と、そこでふとOSを再起動してみたら、治りました。めでたしめでたし。

* ファイル削除前にも再起動はしたけど、それではダメだった。削除→再起動で治ったみたい。