まえ作った Amazonの検索結果が新規ウィンドウで開かれるのを殺すユーザースクリプト が Amazon の HTML 変更により動かなくなってたので更新した。Amazon 見てたら無限に新しいタブが開いていく現象にお困りの方はご利用ください。
Syntax Highlight Plugin で Ajax をやめた
Lokka で Syntax Highlight するプラグイン(morygonzalez/lokka-pygmentize · GitHub)、これまで Ajax で Syntax Highlight させてたんだけど、HTTP リクエストが増えていけてないと感じたのでサーバーサイドでハイライトが完結するように変更した。Railscasts の #272 Markdown with Redcarpet - RailsCasts を参考にして、プラグインの中で Entry
クラスを再オープンした。こんな感じ。
class Entry
def body
doc = Nokogiri::HTML(self.long_body)
doc.search("//pre").each do |pre|
code = pre.css("code")[0]
pre.replace Pygments.highlight(
code.text.rstrip,
:lexer => code[:class],
:options => { :encoding => 'utf-8' }
)
end
doc.to_s
end
end
前の実装はだいぶいけてなかったと思うので随分マシになったと思う。あと この Pull Request でレンダリングエンジンに Redcarpet が追加されたので、GitHub と同じように
```ruby ```
みたいな感じの書き方でコードがハイライトされるようになった。便利。
追記1
ちゃんと動いてなかった…。夜直します…
追記2 2013/02/04 0:45
最終的にオープンした Entry クラスのコードは以下のようになった。
class Entry
alias_method :original_long_body, :body
def highlighted_long_body
syntax_highlight(self.original_long_body)
end
alias_method :body, :highlighted_long_body
alias_method :original_short_body, :short_body
def highlighted_short_body
syntax_highlight(self.original_short_body)
end
alias_method :short_body, :highlighted_short_body
def syntax_highlight(body)
doc = Nokogiri::HTML(body)
doc.search("//pre").each do |pre|
code = pre.css("code")[0]
lexer = if pre[:class].present?
pre[:class]
elsif code.present? && code[:class].present?
code[:class]
else
nil
end
begin
pre.replace Pygments.highlight(
code.text.rstrip,
:lexer => lexer,
:options => { :encoding => 'utf-8' }
) if code
rescue MentosError
next
end
end
doc.to_s
end
end
Lokka、結構メタプログラミングが多くて、Entry クラスのインスタンスの body
メソッドは単なるゲッターではなく、 index アクションのときと show アクションのときで別々にエイリアスが設定されていて、index アクションのときは Entry#short_body
、show アクションのときは Entry#long_body
が呼ばれるようになっていた。アラウンドエイリアス使って力業で解決したけど他のプラグインが同じように振る舞ったら破滅を招きそうな気がする…。それにしても『メタプログラミング Ruby』読んでなかったらどうすればいいか皆目検討付かなかっただろうなー。
Unicorn が暴走して困ってる
最近、cap deploy
がしんどい。
こんな感じで、デプロイすると CPU の使用率が高まってしまう。Unicorn が暴走してるっぽい。シンボリックリンクとかはちゃんと置き換わってるんだけど、プロセスが古いままで、サイトの出力が新しくデプロイしたものに置き換わらない。こうなると cap deploy:restart
とかやっても無反応で、ssh でログインして Unicorn を一旦停止し、手動で Lokka を再起動しないといけない。
拡散お願いしますアドベントカレンダー2012 に参加したとき、記事を公開してすぐサイトが落ちてしまって「やっぱりスモールマイクロインスタンスでは人気サイトポータルシットを運用するのは無理なのかな」と思ったのだけどどうもアクセスが集中して落ちたわけではないっぽい。
何なんだろう。
Lokka で過去記事一覧を表示するプラグインを作った
P_BLOG 使ってた頃から過去記事タイトルを一覧表示する機能は自分で自分の記事を読み返すときに重宝していて、この機能が欲しかったので作った。過去記事を全部一覧表示すると重いので一年分ずつ表示するようにした。便利。
ソースコードは以下。
ちなみにテストはありません。悪しからず。
2012年買って良かったもの
指定暴力団清貧会会長なので2012年の消費活動を振り返ろうと思います。買って良かったものベスト3をご覧ください。
3位 無印良品の肌着
3年くらい前からヒートテックを着て冬を過ごしていた。しかしヒートテックは窮屈だしちくちくしていて着心地がよくなく、さらにすぐ伸びてだらだらになってしまうので正直微妙だと思っていた。今年は偶然無印良品で見かけたこの肌着が安くなっていたので試しに買ってみたら、大変暖かくて良かった。気に入ったのでもう一枚買って二枚でローテーションを組んでいる。ユニクロのヒートテックとの違いは、生地の厚みと柔らかさにある。ユニクロのヒートテックは生地が薄くて締め付けられる感覚があるけど、この無印良品の肌着は生地に厚みがあり、締め付けはゆるく、心地よく着られる。暖かさもヒートテックよりも暖かいと思う。氷点下の阿蘇でもこの肌着と厚手のラガーシャツとナイロンパーカーの三枚で外出できた。買ってよかったと思う。
2位 携帯ウォシュレット
痔瘻になって手術後とかシートン法の輪ゴムをつけてる間とか、肛門周辺が阿鼻叫喚になっているときはウォシュレットがないとつらい。自宅は古い賃貸住宅なのでウォシュレットがついてなくて、痔瘻になった後は半泣きになりながら血だらけの肛門を拭いていた。そんなときに伊藤直也さんのブログを読んで携帯ウォシュレットなるものの存在を知り、すぐさま注文した。最初は半信半疑だったんだけど、普通に使える。手で水が当たる部分を調整できる分、便器に備え付けてあるやつよりも便利かもしれない。水の強さ調節もできるし、満タン時は23秒間放水できる。ただ便器備え付けのやつと違って温水ではなく水しか出せないので冬場はつらい。でもこいつがなければ俺の肛門は崩壊してたと思う。買ってよかったと思う。
1位 ソニーの Bluetooth ヘッドホン
これは嫁さんに買ってもらった。Bluetooth なのがとてもすばらしい。ワイヤレスヘッドホン、初めて買ったけど想像以上に良かった。実は二年くらい前から Kleer という規格のヘッドホンを狙ってはいた。当時は Bluetooth は音質の劣化がひどく実用に耐えないという意見を目にすることが多かった。Kleer は Bluetooth の後継規格で、まだ普及がいまいちなため出力側に送信機をつけないといけなかった。TH-WR700 という TDK 製のを買おうかと思ったのだけど、せっかく無線のヘッドホンを導入するのに送信機を取り付けなければならないというのが気にくわなかった。Mac につないで使うのならそれでもよいかもだけど、外で iPhone で使うときにヘッドホンジャックに送信機をつけるなんてあり得ないと思った。 MDR-1RBT は Bluetooth の Version 3.0 という規格に対応していて、よく知らないんだけど音質がいいらしい。また無線接続時は再生される周波数の帯域が20Hz-20000Hzまで落ち込むらしいんだけど、Sony が開発したナントカという技術によって劣化した音質を頑張ってなかなかよいとこまで復元するらしい。どうしても Bluetooth の音質に不満がある場合は、付属のケーブルを使うことで兄弟製品の MDR-1R と同じ音質で再生できるらしい。これも良い。自分は高音難聴でどうせ8000Hz以上の音は聞こえないので自分にとっての可聴域はカバーされているし、音質面で MDR-1RBT には全く不満がない。音質重視のヘッドホンだけどマイクとかついていて、電話のヘッドセットとしても使えるし、充電が micro USB でできるのも良い。ヘッドホンがオーディオの世界に閉じこもるのやめてデジタルガジェットの方に歩み寄ってきた感がある。買ってよかったと思う。
以上、2012年買って良かったものベスト3でした。
円高終わるぽいので Mac の SSD 化はお早めに
MacBook Air すごく速くて使いやすいけど、自分のものではなくて家庭の所有物みたいな感じになっててあまり使わせてもらえなかった。悔しいので3年前に買った MacBook Pro 15” の HDD を外して SSD に入れ換えてみた。嘘みたいに速くなった。買ったのはこれ。いまは 512GB のやつも3万円くらいで買える。
一緒にディスクケースも買ったけど、間違って SATA じゃなくて IDE のやつを買ってしまって買い直さないといけなかった。あとポリカ MacBook の頃はトルクスドライバーは T8 でよかったのに(本当は恐ろしいMacBookのHDD換装)、最近の MacBook Pro は T6 じゃないとダメらしいので注意が必要。折角 SSD が手もとに届いたのにトルクスドライバーが無いために換装作業が出来なくて悶々としてしまった。
取り換え作業自体はそんなに難しくない。ただし光学ドライブ外して SSD と HDD の二ストレージ構成とかにしようとすると難しいと思う。TimeMachine からの復旧は NAS からやったら信じられないくらい遅かったし(300GB のデータ転送に三日くらいかかった)、Adobe 製品のライセンシングが機能しなくなってものすごくめんどくさいことになったのでオススメしません。ポリカ MacBook で HDD の換装やったときのデータの取り込みは、ディスクケースに入れて USB 接続した旧 HDD からやったけどこういう問題には遭遇しなかった。こっちの方が速くて安全だと思う。
ちなみに円高終わるっぽいので換装を考えてる人は早めに SSD 買った方が良いですよ。
使った道具
#拡散お願いします 痔ろうと過ごした90日まとめ
きっかけ
今年の三月、持病の経過観察で京都に行きました。病院の合間に下鴨神社と上賀茂神社にお参りしたり、六波羅の平家ゆかりの寺、六波羅蜜寺に行って平清盛像を鑑賞したりしました。帰る日の夕方にはヒトデ909さんのありがたい法話を聞きながら銅製のタンブラーでビールを飲みました。しかしこのとき僕はすでに肛門近辺の痛みのためまっすぐ座ることが出来ず、お尻の左半分で椅子に腰掛け、右半分は空中に浮かせていました。ヒトデ909さんのありがたい法談も半分くらいしか耳に入っていませんでした。
僕が痔ろうを発症したのは恐らく京都に行った前の週に参加した故郷での同窓会です。同窓会は阿蘇いこいの村という宿泊施設でとり行われました。阿蘇いこいの村はテニスコートがありますので、学生時代にテニスサークルで痴情をもつれさせていた紳士淑女のみなさんは泊まってみるといいと思います。
僕は当初二次会には参加せずに帰ろうと思っていたのですが、参加者が少ないので協力して欲しいということで二次会に参加してしまいました。しかしこれが間違いでした。僕はインターネットの人と会ったときは饒舌なのですが、中学や高校の同級生と会ったときは寡黙になってしまいます。二次会では会場の隅っこに立って一人で延々キャラメルのリキュールを牛乳で割った液体を飲んでいました。これが全然酔わない。酔わないし手持ちぶさたなのでどんどんキャラメル牛乳酒を飲んでしまいます。これがまずかった。翌朝、下痢をしてしまったのです。
若い頃は飲み過ぎると吐いていました。しかし30歳になったあたりから酒を飲み過ぎると下痢をするようになりました。アルコールが体から抜けるまで下痢は治まりません。まぁ吐くよりかは楽なのですが、下痢は恐ろしいことに痔ろうの原因になるのです。
痔ろうはいきなり痔ろうにはなりません。まず最初、肛門周囲膿瘍というやつになります。お尻の穴の近くにおできが出来るのです。しかしこれは単なるおできではなく、肛門と直腸の間にある肛門陰窩というくぼみに下痢ピー状態のうんこが入り込んでしまい、そこが化膿してお尻の穴の近くまで膿を内包した袋が延び、肛門近辺におできを作ります。こいつがすこぶる痛い。38度程度の熱が出ます。このおできのことを肛門周囲膿瘍といい、おできから直腸のあたりまで繋がっている状態を痔ろうと言います。
告知
関西から夜の飛行機で帰ってきて眠りにつきますが、翌朝目が覚めたときには体がだるく、ただならぬ状態であることを悟りました。会社には遅れる旨連絡を入れ、天神近辺にある肛門科を探しました。
肛門科では見るなり肛門周囲膿瘍である旨告げられました。切開をして膿を出さない限り心の平安は訪れないそうです。僕は承知をして切開してもらいました。熱は下がりましたが、これからが地獄でした。
排膿したので熱は引きますが、傷口は相変わらず痛みます。傷口のろう管にガーゼを詰め込まれました。そしてさらに上からガーゼで傷口を圧迫される。僕は会社用と自宅用に円座クッションを二つ購入しました。会社では岡村製作所のバロンという上等な椅子に座らせてもらっているのに、この上に円座クッションを載せて座っていてなんだか残念な感じになっていました。
傷口はお尻の穴の近くなので当然お尻の穴の上もガーゼに覆われています。最悪なことに大便でトイレに行くたびにガーゼの張り替えをしなくてはなりません。お尻の穴なんて自分では見えませんから、ガーゼの張り替えは困難を極めます。当然シャワーを浴びた後もガーゼを張り替えなければなりません。僕は毎日月経中の女性のように小さなポーチを持って個室トイレに入り、ガーゼを交換していました。
手術
切開から一ヶ月が経つ頃には傷口は落ち着き、ろう管に詰め込まれたガーゼも取り出してもらえます。通常の生活ができるようになった! しかしこれはつかの間の喜びなのです。切開後一ヶ月ないし二ヶ月を目安に、痔ろうを根治するための手術をしなければなりません。痔ろうとは放っておいても直らない病気なのです。
痔ろうは昔から多くの人を苦しめました。夏目漱石も痔ろうだったと言います(日本人編 近現代|じなび - 痔の総合情報サイト -)。昔は痔ろうの手術のために肛門を切り開いてろう管をそぎ取ったりしていたそうですが、最近はシートン法というものがあり、手術のために入院する必要はなくなりました。しかしこれもすこぶる痛かった。
シートン法とは肛門と痔ろうの管を輪ゴムのようなもので縛り、ゆっくりゆっくりと肛門周辺の組織を切り取っていく治療方法です。手術自体は局所麻酔と内視鏡で終わりますが、術後に地獄のような日々が待っています。せっかく傷口から膿が出なくなっていたのに、ゴム紐で肉をゆっくりと切っていくため出血したり膿が出たりします。異物が体に入り込んでいるので椅子に腰掛けるのは不可能になります。自宅では無印良品の体にフィットするソファに覆い被さるような姿勢で過ごさざるを得ませんでした。
しかも最悪なことにシートン法のゴム紐は一週間に一度締めなければなりません。ゴム紐は肉を切っていくので、だんだん締め付けが緩くなっていきます。定期的に締め付けを強くしないと治療が進まないのです。この締めるときがまた痛い。ある日昼休みに病院に行って締めてもらったら、あまりの痛さに耐えられなくなってしまって午後から会社を早退してしまいました。
結局、3月初旬に排膿のための切開をしてから6月まで地下鉄で椅子に座ったことがありませんでした。外出するときも歩き疲れたからと喫茶店に入って休むということが出来ず(お尻が痛いので椅子に座って休憩することができない)、かなりのスリルをあじわいながら生活していました。梅雨入り前の暑い日、出来心で海まで歩いて行ったのですが、炎天下に歩き続けて疲れて歩けなくなったらどうしようと気が気ではありませんでした。疲れ果ててもう歩けないと思っても、ケツが痛いためタクシーに乗ることが出来ないのです。まさかこんなことでは救急車なんて呼んでもらえないだろうしのたれ死ぬしかありません。
シートン法のゴム紐がとれたときには涙が出るほどうれしかったです。そのときのツイートです。
【速報】ケツのゴム紐がいつの間にか落下しケツが復活【号外】
— ゴニーモンザレス (@morygonzalez) June 10, 2012
ゴム紐がとれたことがうれしくて、ワイフと二人で大ライスを食べて祝いました。
大ライシング twitter.com/morygonzalez/s…
— ゴニーモンザレス (@morygonzalez) June 12, 2012
まとめ
僕はラーメン二郎のことは愛していますが、痔ろうのことは大嫌いです。
この記事は拡散お願いしますアドベントカレンダー2012の13日目の記事でした。
明日は @fuba さんです