けんちゃんくんさんのWeb日記
2011/11/24

Campfireを試しています

IRCの代替サービスを探す旅の一環として、少し前から37SignalsのCampfireを使っています。

やりたことはだいたいできるんですが、Macの専用クライアントを使わないと全体的にあと一歩という印象。

  • Roomから勝手に出てたりする(Chromeとの相性?Webインタフェースだけ?)
  • ブラウザ開きなおすと全Roomから出てたりして泣ける
  • mentionがイマイチ
    • するのもイマイチ
    • されても気付きにくい

いいところは

  • Githubのhookとかの表示がいい
  • 画像とかtwitterのURLとか、いくつか展開してくれるやつがある
  • ペーストした内容にパーマリンクがつく
  • chrome-extensionで通知できる
  • chorme-extensionでアイコンをつけることができる

Roomの扱いがもうちょっといい感じなるとIRCの変わりには使えるかなぁというところですけど、この旅の終着駅にはならなそうな感じです。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/23

勤労に感謝して海浜幕張まで

服を買いにいく服がない状態だったので、海浜幕張のアウトレットパークまで。

幕張本郷からバスで行こうと思ってバス停にいったら、千葉駅伝であと1時間くらい通行止めですと言われて一回休み。 さすがに幕張本郷で1時間とか無理ゲーなので西船経由で海浜幕張まで移動して買い物して帰ったのでした。

あまりにレアなイベントに遭遇したので、そのうち何かいいことないかなぁ。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/13

DevLOVE HangarFlight - Snow Barrage - でRailsとCIについてお話しします

同僚となった@papandaからオファーをいただきまして、12/10のDevLOVE HangarFlight - Snow Barrage -でお話させていただくことになりました。

「弊社でのJenkinsの運用を中心にRailsとCI(とサーバ仮想化)について」というJenkins勉強会でお話しした内容の最新版をお届けしようと思います。

私以外にも永和からは@haru01、@m_pixy、@papanda、そしてチェンジビジョンから@kompiroが登壇予定ですので皆さん奮ってご参加ください!

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/11

「Restoring Function and Form to Patterns」を読みました

原文ではなく、和智さんが翻訳してくださったものを読んだのですが、これはすごいものが出てきてしまいました… 前半は「Alexandeその人」と「Alexandeのパターン」に馴染みのない人(たとえば私)にはかなり読みにくいのですが、DCIアーキテクチャに興味を持っている方はぜひ最初から読むのを強くお勧めします。

p23の「機能の型」からは比較的身近な話が多くなるので、そこからまず読んでDCIアーキテクチャと実際のシステムの関連を把握するのもいいかもしれません。

さすがにこれを英語で理解できるとは思えないので翻訳してくださった和智さん、本当にありがとうございます。

読み終わってから、これは「音読会」が必要だと思ってメールを出そうとしたら、先に@kakutaniが音読会のメールを出していてふいたのが数日前の話。社内での音読会が楽しみでしかたありません。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/7

tappについてそろそろ一言言っておくか

弊社で(総力を上げて)メンテナンスしているtappというライブラリがあるのですが、思ったより認知度が低いようなのでここで紹介させていただきます。

まとめ

tappは、従来のPrint Debugの問題点を解決する画期的なライブラリです。 次のような経験がある方は、いますぐGemfileにtappを追加することをお勧めします。

  • メソッドチェーンの間のオブジェクトの状態を見るためだけに一時変数を使ったことがある
  • ppやp、putsを消し忘れてリポジトリにコミットしてしまった

tappとは

tappは、Print Debugを簡単に行うためのRubyライブラリです。

リポジトリはhttps://github.com/esminc/tappになります。

tappの歴史

tappの作者である@ursmは、2008〜2009年頃に社内向けのモンキーパッチとしてtappを生みだし、Rails勉強会41.1回(Rails勉強会@東京第41.1回にいってきた - ayumin)や、InactiveSupportのご紹介により、一部のRubyistに広まることとなりました。

そして、その1年後の2010年7月7日にバージョン1.0.0がgemとしてリリースされました。

現在はリポジトリをesminc(会社の公式アカウント)に移し、開発を継続しています。

tappの機能

2011/11現在、tappは次の3つのメソッドを提供しています。

  • Object#tapp
  • Object#taputs
  • Object#taap

出力の形式に違いはありますが、要は**「レシーバをpp(puts,ap)して返す」**というだけです。

>> require 'tapp'
=> true
>> "hoge".tapp
hoge
=> "hoge"

これだけだとpp "hoge"と何が違うのかわかりませんね。tappを使いこなすには、「レシーバを返す」というところを上手く使えるようにならなければいけません。

tappの使い所

tappがあれば、急に次のようなコードのメンテナンスを依頼されても慌てることはありません。 {%img /images/kakutani_slideshare.png %} (SlideShareのページ指定埋めこみがうまくいかなかったので画像にしています)

Rubyでプログラムを書いていると、ArrayやHashに対してメソッドチェーンを使う場合が非常に多いと思います。そんなとき、メソッドチェーンの途中の状態を見たくなりませんか?

そこでtappの**「レシーバを返す」**というのが効いてきます。

例えば、「1から10までの数字で奇数だけを合計する」ような処理では、tappを使って次のようにメソッドチェーンの途中の状態を見ることができます。

>> (1..10).tapp.select(&:odd?).tapp.inject(&:+)
1..10
[1, 3, 5, 7, 9]
=> 25

tappを使わずに同じようなことをしようとすると、途中の状態を一時変数に入れなければなりません。tappがあれば処理の流れを切ることなく、自然にPrint Debugを差し込むことができます。

また、tappはBlock引数を受けとることができるので、Symbol#to_procと組合せることで任意の属性だけを出力することも簡単です。

>> User.first.tapp(&:name)
"kenchan"
=> #<User id: 1, name: "kenchan">

みなさん一度はリポジトリに対してppやpをコミットしてしまったことがあるのではないでしょうか。書き方によっては、ppやpはgrepで見つけることが困難になり、探すのに苦労することもあります。

そんなときもtapp系を使っていれば安心です。間違いなくgrepで見つけることができます。

また、v1.3.0からはtappのコマンドラインツールが同梱されており、バージョン管理にGitを使っている場合は簡単にtappを検索できるようになっています。

$ bundle exec tapp grep
Gemfile:  gem 'tapp'
Gemfile.lock:    tapp (1.3.0)
Gemfile.lock:  tapp

tappの落とし穴

Rails(ActiveModel)でtappを使う際には、AssociationProxyやScopeに注意しなければいけません。

普通に使っている分にはArrayのように見える彼等ですが、チェーンの間にtappを差しこんでしまうとそこでチェーンが切れてしまうため、その先がエラーになってしまう場合があります。

どこまでがScopeやAssociationProxyのチェーンになっているか見極めてtappを差し込みましょう。

おわりに

tappはオープンソースプロダクトです。みなさんからのpull requestをお待ちしています!

https://github.com/esminc/tapp

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/1

達人出版会1周年記念にDevLOVE本を購入

まずはじめに、達人出版会1周年おめでとうございます!

お祝いとして、買おう買おうと思っていたけど買っていなかったDevLOVE HangarFlight Experiencesを購入しました。

ざっと読んだところだと石沢ケントさん、こしばさん、gaoryuさんの話がぐっときました。 この業界の日本人のエッセイがこれだけ集まった本は他にないので、とても楽しく読めました。

ただ、同じ人の話が3、4個続くのは結構しんどいですね。1つ目の話が好みじゃないとついつい流してしまいそうになるので…

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/11/1

【解決】Kernel 3.1にアップデート

先日のwlan0が認識されない問題が解決しました!

CONFIG_PCI_MSIがnになっていたからというしょうもない原因でした。たぶん3.1にするとき、これいらないかなーと思って消したんでしょうね…

iwlagのproveでerror -1が出たら疑ってみましょう。

参考リンクIntel 6050 wireless adapter problems

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/10/30

2011-10-30: 通販生活

コナミスタイルは「まとめて配送」を選ぶとどれだけ発売日がはなれていても一緒に配送されるという罠をすっかりわすれていて、TatshとTЁЯRAのアルバムが一緒に届いたのが数日前の話。 それでもちゃんと初回限定盤を確保しておいてくれるのはいいんですけど。

Tatshの方は全体的に短めですけどイイ感じ。GENOCIDEとLove Again…がお気に入り。

TЁЯRAの方は良くも悪くも期待通りという感じ。ただアルバム名の頭文字がアレすぎてソート順で混乱します…

Tatsh「MATERIAL」

TЁЯRA「ЁVOLUTIΦN」初回限定盤

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2021-09-02 15:35:37 +0900
2011/10/29

てけてけの会

@m_pixy家御用達のお好み焼き屋さんのてけてけに行ってきました。 子連れが3組(3人とも2歳児)に@ngtyk、@ursmというめずらしい感じでとても楽しかったです。

毎月開催という噂もあるので、また機会があれば行きたいなー。

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
2011/10/27

Kernel 3.1にアップデート

gentoo-sourcesに3.1が降ってきたのでとりあえずインストール。

さくらVPSの方は何事もなく完了したのですが、仕事のマシン(Lenovo T410)で無線LANが認識されなくなりました\(^o^)/

wlan0ができなくて、dmesgはこんな感じ。

wlagn 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
iwlagn 0000:03:00.0: setting latency timer to 64
iwlagn 0000:03:00.0: pci_resource_len = 0x00002000
iwlagn 0000:03:00.0: pci_resource_base = ffffc900117b0000
iwlagn 0000:03:00.0: HW Revision ID = 0x35
iwlagn 0000:03:00.0: pci_enable_msi failed
iwlagn 0000:03:00.0: PCI INT A disabled
iwlagn: probe of 0000:03:00.0 failed with error -1

@ursmはまだアップデートしてないらしく、まさか人柱になるとは…

解決しました! 【解決】Kernel 3.1にアップデート

created_at: 2015-08-06 01:43:33 +0900
updated_at: 2015-08-06 01:43:33 +0900
新しい記事へ 古い記事へ