登場人物

@komagata:ガチ鬱プログラマー。サバイバル力(普)

@ko8:情弱インターン。サバイバル力(よわい)

Y氏 :下衆インターン。サバイバル力(普)

@mazeltov7:爽やかインターン。サバイバル力(つよい)

@Rochas_:入ったばっかりインターン。サバイバル力(?)

フォカッチャ事件とは

@komagata「@ko8お昼なに食いたい?」

@ko8「アシェルタン(アシェルタ・イタリアンの間違い)行きたいですねー。パンが美味しいんですよね。」

メインのパスタにパン(フォカッチャ)がついてるタイプのランチだったんですが、ひと通り食事が済んだ時、事件が起きました。

Y氏「あれ、@ko8、パン食べた?」

@ko8「あ、いや・・・」

@mazeltov7「あれ、これ一人一個だったんですか?僕二個食べちゃいました。すいません(笑)」

@ko8「いや、いいっすいいっす!」

@komagata「うわっ!!うわぁ・・・」

ALL「・・・?」

@komagata「サバンナだ、サバンナ!こんな分かりやすいサバンナある?」

@ko8「え?何がっすか?」

@komagata「だからさ、三羽生まれた鳥の雛の中で、典型的な最初の冬を超えられない雛が@ko8なわけ。で、末っ子の分の餌を食べて元気にバッサ〜って巣立っていくのが長男の@mazeltov7。次男がY氏。」

@komagata「親鳥も三羽に均等に餌を与えて全員死ぬより確実に二羽生き残る方を選ぶわけじゃん。それで、二羽が飛び立った後の巣にガイコツが一羽残ってんの。それが@ko8。」

@komagata「一人一枚なのにフォカッチャ二枚食べれる@mazeltov7と自分が"パンが美味しい"って言ってて来たにもかかわらず一枚も食べられない@ko8。」

Y氏「あ、そういえば確かに言ってた!(笑)」

@komagata「しかも見てみ、フォカッチャ二枚食べてるのにめちゃくちゃ爽やかじゃない?全然嫌な感じしないでしょ?」

@Rochas_「ホントだ〜」

@ko8「確かに・・・」

@mazeltov7「うわー、これ1年ぐらい言われそうだなあ〜」

@komagata「それに対して、フォカッチャ食べられてることにすら気づかず、他人から指摘されて初めて気づく@ko8・・・。」

@komagata「世の中ゴネ得とかあるからさ、もうちょっと力強く生きて行こうよ!」

@ko8「勉強になります・・・」

参照:FJORDさんでインターンはじめました | Dress Cording

rubykaigiの初日夜にsikachu meetup #1が行われることになりました。

僕も当然@sikachuファン、言ってみれば@sikachu世代のrubyistみたいなところがありますので、apprentice.ioと256internの話をLTやる予定です。

同じ非英語圏、アジアのプログラマーとしてどうやっていきなりthoughtbotに就職するのか?とかそういう話も聞きたいです。

Sikachu Meetup #1 - Sikachu Meetup

ダッシュボーダーズ ディナー第0回が開催されました。

で厳かに執り行われました。

終わる直前にこれがダッシュボーダーズ ディナー第0回だと決まったのでそれとは知らずに参加していた方もいるかもしれませんが、いやー、行われましたねー。

酔って寝て忘れる前に書いておこうと思います。

ダッシュボーダーズとは

ダッシュボーダーズとは自社Webサービス作成者の集団です。ダッシュボーダーズは月に1度(毎月第三月曜日)のディナーの5分間のスピーチで

  • 今月何をやったのか
  • 来月までに何をやるのか

を発表します。

ダッシュボーダーズに参加の個人・スタートアップは収益と成長指標(会員数やPV)をパブリックな共有のダッシュボードにリアルタイムに公開しなければなりません。

ポール・グレアムの「週7%成長していなければスタートアップではない」を元に、「月に30%指標が成長」していなければいけません。

そして3ヶ月連続でそれが未達の場合、周りの人々にピボットを要求されます。

ダッシュボーダーズ内では成長率の数字が高い人が偉い人です。成長率が7%未満はクズです。受託で忙しいは甘えです。自社サービス成長率至上主義です。

週7%成長はホント厳しいです。やれる気がしません。マジ震えてきやがった怖いです。

以前書いたローカルインターン募集ですが、ありがたいことにオフィスの席分決まりましたのでひとまず募集は停止させていただきます。ありがとうございました。

超豪華商品が当たる!ローカルインターン募集 - komagata

とはいえ、卒業されたり、就職したりでまた席が空いたら募集することになるとおもいます。リモートインターン、256インターンでインターンを募りたい会社様の方は引き続き絶賛募集中ですので宜しくお願いします。

怖話のAndroid版がリニューアルリリースしました。

前のバージョンはPhoneGapを魔改造したものでしたが、全部捨てて一から書き直しています。そのさらに前のバージョンはTitaniumで出来てて、全部捨てて一から(略

というかローカルインターンの@foo9さんが全部作ってくれました。俺はストアにアップしました・・・。

何を言っているのかわからねーと思うがおれも何をされたのかわか(略

インターン、スゴくいいと思うんだけどなあ。ご興味のある会社の方は是非、@komagataまでご連絡を・・・

インターン募集・アプリ公開 - komagata

cronの設定画面から追加しただけじゃ反映されてない。(どうでもいいけどこのRun this commandの欄短すぎやしないかい)

Environmentに変更があったのでこのApplyボタンを押して反映させることを忘れないようにする。

東アジアの文字幅を取るeastasianwidthを以前npmに上げましたが、やっぱり怖話で使えそうなので文字列の幅を数字で取るメソッドを追加しました。(半角は1、全角は2みたいに)

javascriptで東アジアの文字幅を取得する - komagata

Ambiguous(曖昧)も含めて東アジアの文字列を考慮した感じで取ります。色んな環境で画面が崩れるようなのでもちゃんと取れるはず。

なんでこんなのが必要なのかというと、要は文字の折り返しを自前で実装するときに、monospaceのフォントで全角分幅を取るのか、半角分幅を取るのかを厳密にわかる必要があるからです。

komagata/eastasianwidth · GitHub

npmで作りましたが結局railsで使うのでgemも作りました。

komagata/eastasianwidth-rails · GitHub

スマホのonclick遅い問題(代わりにtouchstart使う)用のライブラリ、fastclickが定番っぽいので勝手にfastclick-rails作っときました。デフォルトでこうなってほしい。

komagata/fastclick-rails · GitHub

使い方

# Gemfile:
gem 'fastclick-rails'
// app/assets/javascripts/application.js
// require fastclick
# app/assets/javascripts/foo.js.coffee
$ ->
  new FastClick(document.body)

これでスマホの時は勝手にtouchstartになってくれます。300ms違うから体感的にもかなり違う。

今までは@hrysd謹製のcapistrano-lingrを使ってましたがEYCに移ったのでenginyard gemのdeploy hookを使います。

deployディレクトリの下にフック名でrubyファイルを置くとそれが勝手に実行されるようになっています。

APP_ROOT/ 
   deploy/  
    before_bundle.rb  
    after_bundle.rb  
    before_compile_assets.rb  
    after_compile_assets.rb  
    before_migrate.rb  
    after_migrate.rb  
    before_symlink.rb  
    after_symlink.rb  
    before_restart.rb  
    after_restart.rb 

参照: Use Deploy Hooks : Engine Yard Developer Center

通知はいつでもいいのでafter_restartにしてみました。

# Gemfile:
gem 'lingman', github: 'hrysd/lingman'
# deploy/after_restart.rb
# encoding: utf-8
require 'rubygems'
require 'bundler/setup'
require 'lingman'

Lingman::Updater.update(
  "fjord_assistant", # BOT ID
  "takoroom", # ROOM ID
  "XXXXXXXXXXXXX", # SECRET
  "#{app} を #{environment_name} にデプロイしました。"
)

deployスクリプトはPlain old ruby fileなのでrequire 'bundler/setup'でbundleしたgemにパスを通してもらいます。

Lingrへの通知にはこれまた@hrysdのlingmanを使わせてもらいました。Lingr APIを網羅してないのでまだgemにしたくないようですが、githubから読み込んで使います。

これでイチイチ「怖話、本番環境にデプロイしましたー」とチャットに報告しなくてよくなりました。