libAlexandrina.so.octopress

前職のBBQに参加

| Comments

前職のBBQに及ばされたので参加してきました。

さすがに手ぶらで参加するのは心もとないので、ちょっと高めの肉を持っていこうと画策した。鶴来街道沿いにノボリがでていた、ミートビックさんにお願いすることにした。

「予算5,000円でこの一番高い牛バラと牛タンをくれ!」

こんなざっくり具合で提供していただけました。写真はこちら。

塩コショウに加えてワサビとかニンニクとかがいるレベルのジューシーさ。今度も何かあったら絶対ここに頼むぜ。

BBQは仕事の話は気を使っていただいたのか避けた感じで・・・。うん。

2015-8は¥-159

| Comments

2015年8月の収支を計算した。

  • 円は1$/125円
  • ドメイン自体は1000円/年ぐらいで他にとってあって未計上
  • Route53は1ドメイン分の料金で計上
項目 収益 収益(円)
Google Adsense +¥0
Amazon Affiliate +¥0
AWS Route53(DNS) -$0.510 -¥63.75
AWS S3(Storage) -$0.025 -¥3.17
AWS CloudFront(cdn) -$0.750 -¥93.75

合計 -¥159 (-¥79) となった。

赤字幅が大きく増えたのは

1
Amazon CloudFront Invalidations $0.005 per URL - over 1,000 URLs / month.    125 URL     0.63

これが大きい。これについては既に対策済みなので来月は安くすむはず。

あとPVを載せておく。

項目
atom の PV 133
GA-PV 240
GA-UU 53

アジャイルとか「◯◯開発手法」と落語「時そば」

| Comments

記者の眼 - 「アジャイル嫌い」はもうやめよう:ITpro

の記事を受けて

アジャイルを無責任に広めるのはもうやめよう | フロントライン通信

の記事がかかれたことについて。

こういう◯◯開発手法というのは、落語「時そば」と同じものを感じるのである。

時そば - Wikipediaから引用する。

ある冬の深夜0時頃、小腹が空いた男Aが通りすがりの屋台の二八そば屋を呼び止める。Aは主人と気さくに「おうッ、何ができる? 花巻にしっぽく? しっぽくひとつこしらいてくんねえ。寒いなァ」とちくわ入りのかけそばを注文する。その後は、看板を褒めたり「いや、実に良い箸だよ。素晴らしい」と割り箸をほめる。更にそばを食べながら器、汁、麺、具のちくわなどを幇間(たいこもち)よろしく、ひたすらほめてほめてほめ上げる。 食べ終わったAは、16文の料金を支払う。ここで、「おい、親父。生憎と、細けえ銭っきゃ持ってねえんだ。落としちゃいけねえ、手え出してくれ」と言って、主人の掌に1文を一枚一枚数えながら、テンポ良く乗せていく。「一(ひい)、二(ふう)、三(みい)、四(よう)、五(いつ)、六(むう)、七(なな)、八(やあ)」と数えたところで、「今何時(なんどき)でい!」と時刻を尋ねる。主人が「へい、九(ここの)つでい」と応えると間髪入れずに「十(とう)、十一、十二、十三、十四、十五、十六、御馳走様」と続けて16文を数え上げ、すぐさま店を去る。つまり、代金の1文をごまかしたのである。 この一部始終を陰で見ていた男Bは、Aの言動を振り返り、Aが勘定をごまかした事に気付く。その手口にえらく感心し、真似したくなったBは、自分も同じことを翌日に試みる事にする。そばを食べる事が目的ではなく、1文をごまかすためだけにわざわざそばを食べる。 待ちきれずに早めに繰り出したBは、Aの真似をするがことごとくうまくいかない。箸は誰かが使ったもの、器は欠け、汁は辛過ぎ、そばは伸び切り、ちくわは紛い物の麩。とうとうそばをあきらめ、件の勘定に取り掛かる。「一、二、……八、今何時でい」主人が「へい、四つでい」と答える。「五、六……」。まずいそばを食わされた上に勘定を余計に取られるというオチ。 当時の時法では深夜の「暁9つ(午前0時頃)」の前が「夜4つ(午後10時頃)」だったことにより、この話が成立している。

つまるところ

「おお、あの手法はいいな」と考えて「よし、パクろう」とするが、 いろいろと前提条件を間違えて 失敗しまくるあげくに、オチまでつくぐらい損する。

というところが同じだなと。

いまこそ「導入しようとしたが、導入できなかった。それはなぜか」「導入したが、成功しなかった。それはなぜか」という情報を共有する必要があるのではないか?その情報があれば暗中模索するしかない状態でも、少しは明かりがあるのではないか。

そもそも、全プロジェクト、全会社、に適用できる手法なんてこの世に存在しないのは当たり前であるが、それでも概念を提示し、世の中に出したことはとてつもなく偉大である。

だからこそ、何事もプロジェクトが成功した事例のみ共有されるのではなく、その裏面である、失敗した事例を共有していくフェーズにきているのではないだろうか?

(「プロジェクトは普通成功しない」と思ってる人と「普通にやったら成功する」と思っている人の違いはでかいが、どちらにしろ結果が反対だったとき、ネタができるはず。)

kanazawa.rb #36 に参加

| Comments

2015-08-29 Sat. に kanazawa.rb #36 に参加してきました。

今回、RTWatcherというツールをgithub上に公開しており、それを Jenkins + Docker で運用しているので、それについて軽く語ってきました。

  • いかに簡単にコードの変更に対応して機械実行し、そのログを残すか
  • (ツールや環境やOS依存があるものを)いかに簡単に実行するか
  • 同機械実行し、異常事態があれば関係者に通知するか

の3点ぐらいが Motivation であり、定期的に追いかけていきたいと思っている。現時点での解として Jenkins + Docker であり、もちろんそれをもっと簡単にできるものがあれば使いたいと思っている。

あと、オフレコでそれを運用するにあたって +X を話ました。何を話したかは私に直接きいてみてください。

他の方のプレゼンは

@wtnabe さんの話はいろいろやるのは大変そうだなぁーと。もっと安いPaaS in Japanがあれば・・・。あと、JavaScriptがWebのAssemblerとなっている状況で、いろいろとAltJSなどなどを使ってカバーしていく話。など。

そうのである。結局、生HTMLや生JavaScriptなんてもう書かないのであり、そのツールの選定や、選定するにたってのモチベをハッキリさせておくというのはとても大事だと。プレゼン資料は公開されるのかな?とりあえず流行り廃りは置いておいて、生の現場で使われてるものや使われ方を知るのはとても大事かと。

@rch850 さんの話は、 twilio + AWS Lambda + AWS API Gatewayの話。うーん。今どき。素晴らしい。このあたりもうちょっと自分でやってみないといかんな。

さて、次回でかいのはRoR初心者講座をやろう。という話。講師として立つことになりそうだが、もうちょっと場当たり的ではなく、ちゃんと基礎からやった上で説明できるようになっておかないとキツイなぁー。懇親会で、RubyはRoRで生き残ったという話題が少しでたが、現状私もそう考えるので、どうせRubyやるならもっとdeepにRoRをやるべきなのかもしれない。

以下は私のとってもらった写真と私の写真。

カトウさんの LT スタート #kzrb

Tomokazu Kiyoharaさん(@kiyohara)が投稿した写真 -

APAホテルのBBQ うまし。 #kzrb

ふぁらお加藤さん(@pharaohkj)が投稿した写真 -

Docker-io 1.5 から Docker-io 1.6 にしたらリークしなくなった

| Comments

さくらのVPSにおいて、CentOS6上でDockerを運用している。そのDockerが1.5系から1.6系にUpgradeされた結果、メモリリークがなくなった。

以下はmuninのスクショである。ちなみに、定期的に下がっているのは6時間毎に /etc/init.d/docker restart しているからである。

これでちょっと安心できる。

「gem ZipangでOctopressの日本語URLをローマ字読みぽくする」書いた

| Comments

Ruby - gem ZipangでOctopressの日本語URLをローマ字読みぽくする - Qiita

書きました。このページも

2015-08-26-gem-zipang-de-octopress-no-nihongo-url-wo-ro-maji-yomi-poku-suru-kai-ta.markdown

になってとってもいい感じ。そういえばcategoriesのセパレータがスペースだいうことに気づいて今ほどなおしました。

そろそろ業務用にいろいろ紹介したりなんだりしてもよいほどノウハウが溜まってきた気がする。プラグインの1つでも開発しないとダメかな。

雑誌架を購入&組み立て

| Comments

不二貿易 81818 DP8085BR を楽天のA-PRICEさんで2つ買いました。1万円以上購入で送料無料ということで、¥5,100 x 2 で送料無料。

作るのは結構大変で、大人2人はいたほうがよい。私は、ラーメンとステーキで @zatub と @torumu21 を釣り上げて助けてもらい3人で作成した。ありがとう。

できはすごい満足だけど以下の2点だけ。

  • 接着剤?ニス?木材?のニオイがとれない(届いて3日ほどたったけどぜんぜんとれてない)
  • 立てかけるところ、ネジ止め済みのところがポロンと取れてしまっていたので木工用ボンドでなおした

まぁこのレベルの家具を1万円で買えたらそれ以上文句いってはいけないんだろうが。

完成はこんな感じ。2個縦に連結しました。これでWiLLや文春を何度も買うようなことないといいな。

戦国大戦松任大会に参加

| Comments

『戦国大戦 -1615 大坂燃ゆ、世は夢の如く-』公式サイトの松任大会に参加してきました。

といっても、月1プレイ以下プレイヤーなので、プレイヤの空気感と、新バージョンになってどんな感じなのかなっていう空気感を読みにいった感じ。

なんだけれど、参加者は12人で、しかも16コス大会らしく。友人にカードを借りてやったんだけれど、まー、やっぱりこういうネタ大会はあんまりおもしろくないねぇ。相性とかみんないつもの9コスじゃ刺激が足りないからだと思うんだけれど、格闘ゲームとかでこういうった「ネタ」とかハンディっキャップとかそういうの求めちゃってないんだよなぁ。あっちが「おめぇなんてクソザコ、ハンデでもないとこっちがつまらねぇ」っていうのはわからなくもないが、そういう試合はこちらからお断りしたいキモチなんだよなぁ。

とりま、大会は1回戦負け(そりゃそーだ)。

くやしいので、久しぶりに2セットほどやったけど、見事に最後3連敗してぷんすか。いろいろ @zatub 先生に教えてもらったりしたが、まぁ今度はいろいろ気をつけてがんばろう。 動画はその敗戦の1つ。

Amazon CloudFront の Invalidate Cache が高いのでなんとかする

| Comments

ちょっとみたら、 CloudFrontの料金が高くてビビる。(といっても$0.55)だが。

cdnのcacheをinvalidateし、更新するのにかかる料金が

  • 1,000 Path Requestまで無料

という条件を、1,000 Requestまでなんだろうなーと思ってたらどうやら本当に1URLにつき$0.005らしい。

こうなると、1回記事を書くとRSSだのカテゴリインデックスだのなんだのかんだので10ページは確実に 行き、結構お金かかっちゃうハメになってしまう。

だからといって、書いた記事が反映されるのが3日後とかになっても困るなぁーと思っていたら、

AWS CloudFrontのinvalidationにワイルドカードが使えるようになりました。 | Developers.IO

とあった。

まぁ1invalidate requestにURL含まれているし、俺関係無いわーと思っていたのに、関係あったらしいので、 これを採用しようと思う。

まず octopressのs3cmdを使っている部分を変更し、まったくinvalidateしないように。

1
2
  # ok_failed system("s3cmd sync --no-mime-magic --cf-invalidate-default-index --acl-public --reduced-redundancy --cf-invalidate public/* s3://#{s3_bucket}/")
  ok_failed system("s3cmd sync --no-mime-magic --acl-public --reduced-redundancy public/* s3://#{s3_bucket}/")

つぎに、Dockerfileでrunコマンドを更新し、s3にdeploy後、awscliでinvalidate requestするようにした。

1
2
3
4
RUN pip install awscli
RUN aws configure set preview.cloudfront true
COPY _amazon.json /octopress.phalanxware.com/_amazon.json
CMD export PATH=/s3cmd-1.5.2:$PATH && export CRF=`date +"%Y%m%d%H%M%S"` && cd /octopress.phalanxware.com && git pull && cd /octopress.phalanxware.com && sed -i "s/__CRF__/$CRF/g" _amazon.json && rake gen_deploy && aws --profile octopress cloudfront create-invalidation --cli-input-json file://_amazon.json

とりあえずこの記事をpostしてテストしてみようと思う。

追記

"CallerReference": "string" ってのの理解が適当で悪かった。毎回違うものを発行しなければいけないらしい。(2重API呼び出し防止) 以下のページを参考にした。

Amazon EC2 と Route 53 のはじめかた その 3 : Amazon Route 53 を試す - WebOS Goodies AWS CLIのパラメータをJSONファイルで記述する | Developers.IO