Recent Posts

繋がらないWiFi

東京Ruby会議に参加して、ネットが繋がらない!と嘆いている人を大勢見ました。 Ruby会議に限らず、最近の勉強会やイベントは公式のハッシュタグがあり、Twitterで感想や突っ込みを入れるのがお約束になっていますが、参加者の多いイベントではネットが繋がりにくくなることが増えています。 なぜ繋がりにくくなるのか、...

JOINは遅い?

ySQLのJOINが遅いというのはよく言われるが、複数回SQLを発行するのとJOINするのがどちらがましなのか疑問だったので、実際どのくらい遅いのか試してみた。

続々assets:precompile問題

先日のエントリの最後に書いたprecompileが失敗する問題の続き。 Rails3.2.3でも解決していなかったので本腰入れて調べてみた。

varnish&nginx

varnishとnginxを使っているサーバをマイグレーションすることになり、今まで外部のLBを通していたのを直接処理することになった。 そこで問題になるのはSSLの扱い。varnishはSSLを扱えないため(作者はopensslのコードはクソだ、と一刀両断している)、httpsのフロントエンドとしては使えない。...

Emacs23.4

久々にEmacsをビルドした。もちろんCocoa Emacs。 手順はほぼこの通りでOK。

真空断熱マグ

真空断熱マグがへこんだので買い換えた。 何となく毎回別々のメーカーのを買っているので、ここらでちょっとレビューしてみる。 保温性能とか重量とかはだいたい一緒なので、その他を中心に。

capistrano/multistageとdeploy_to

前回のエントリでnamespaceに起因すると勘違いした不具合。 capistranoのmultistageでdeploy_toにstageごとに異なるパスを指定すると変になるという話。

assets:precompile問題

Rails3.1+capistranoの続き的なもの。 しばらくローカルでassets:precompileする運用をやっていたが、色々問題があった。具体的には以下のような感じ。 デザインの細かな修正ごとにprecompileするので、コミットがassets:precompileだらけになる。 precom...

AASMでInvalidTransitionが出る件

AASMをアップデートしたら、テストで例外が出るようになった。 正しくない状態遷移を行うと例外を返すようになったらしい。 AASMの初期化オプションに:whiny_transitions => falseを与えてやればいい。 以下は例。

Rails3.1へのアップグレード

諸事情からRails3.0のアプリケーションを3.1にアップグレードした。 「簡単」と書かれていることが多く、Railsの流儀に則っていれば実際簡単なんだけど、それ以外の部分についてだいぶ手間取ったので書いておく。

unscopedとkaminari

default_scopeを外そうとしてunscopedしてからkaminariのpageオブジェクトにすると奇妙なことになる。

favicon

faviconを設定してないとログに404がずらずら並んで鬱陶しいですね。

Facebookアルバムへの投稿

Facebookアプリからアルバムに投稿する方法。 通常のwall postと違って目立つので、アルバムに投げるのが流行ってたりする。 ちなみにpermissionはpublish_streamでOK。

nginx+fastcgi+APC

このサーバのフロントエンドをapacheからnginxに入れ替えた。 passenger経由で動かしていたredmineがとても遅いというクレームがあったのと、最近apacheいじってなくて設定にちょっと不安が出てきたので。つーかnginxのが設定項目が少なくて楽だし。 参考にしたのはこことこことここ。init ...

Rails3.1+capistrano

Rails3.1でasset pipelineが導入された関係で、3.0のままのレシピでデプロイするといくつか問題が出る。

git reset

あちこちいじったけど直近のcommitに戻したい時ってありますよね。

delayed_job

Railsで非同期実行する際の定番、delayed_job。 ドキュメントが今一分かりにくかったりforkされまくっててどれがオリジナルか分からなかったりするので、メモしておく。

scss-mode

Rails3.1からscssが標準になったので、scss-modeを入れてみる。 (autoload 'scss-mode "scss-mode") (add-to-list 'auto-mode-alist '("\\.scss\\'" ....

ensure_authorizedって必要?

RestGraphを使ってFacebookアプリを書いていて、ドキュメントを参考にしつつ rest_graph_setup(:app_id => API_ID, :secret => API_SECRET, :canvas => CANVAS_NAME, :auto_au...

Rails3いろいろ

震災後くらいからいじり初めて、Rails3の案件を一つやって、今はRails3.1の案件が進行中。

静的ファイルの処理はhttpdに任せる

ロードバランサを置いている時、バックエンドのアプリケーションサーバはなるべくタイトな構成にしたくなるのが人情というもの。 ところが、unicornだけ走らせているはずのアプリケーションサーバに比べて、フロントエンドのhttpd(nginx)が走っているテスト用サーバの方が何倍も早いという現象が発生した。 条件を色...

再開

あまりにも放置しすぎたので、手近な話題から再開します。

Heroku

ちょっと仕事でデザイナーに使って貰うアプリを書く必要が生じたので、昔ちょっと試したきりのHerokuを使ってみた。 ステージング程度なら自鯖で動かせるので、今まであんま触れる必要がなかったんだよね。まぁ職場に自鯖を知られたくないので仕事に不安定な自鯖はよろしくないので。 なお、小さなアプリなのでフレームワークは...

Disaster

震災の犠牲になられた方のご冥福と、被災された方が一刻も早く元の生活に戻れることをお祈りしております。 しかし、電気が寸断されるような状態でもインターネットはさほどの機能低下を起こすこともなく、さすが全面核戦争を想定しただけのことはあるなぁと思ってしまいました。 被災地でもある程度は使えていたようだし、災害時の利用...

ディスククラッシュ日記 みっかめ

持ち帰ってきたHDDをUSBケース(と言うかむき出しのクレードル)に納め、EeePC(Ubuntu Linux)に接続。こいつはクラッシュしようが何でもいいので、強引にマウントする。 UFSのオプションでちょっと悩んだけど、 sudo mount -t ufs -r -o ufstype=ufs2 /dev/sd...

ディスククラッシュ日記 いちにちめ

サーバのHDDがまたおかしくなったらしく、messagesにI/Oエラーが大量に流れ始めた。 って去年交換したばっかじゃん…Seagateまで俺を裏切るのかっ! まぁ作業ログはここにあるので余裕だ、と思ったらapacheも応答がない…

git commitの統合

gitで過去のcommitを統合する方法。 直したつもりで直ってなかった時や、やむなく作業途中でcommitしたのを消した いときに便利。 これ使えばこないだの履歴消去は不要だった気がする…

shell-pop.el

新年の記事でVisor便利!と書いたけど、Emacs上で同じようなことをするelispがあった。 shell-pop.elを使うと、Emacsのどこからでもホットキーでshell-modeあるいはansi-termを呼び出し、もう一度ホットキーを押すと閉じることができる。 ちょっとだけコマンド実行したい時に便利。...

gitの履歴を消す

正確には「履歴を消した新しいリポジトリを作る」 滅多にやらないと思うけどメモ。 forkしたリポジトリを公開する時とか?

RAMBACK

Firefoxのタブを開いたり閉じたりしているとメモリ消費量が膨れあがっていくのは周知の事実。 適当なところでFirefoxを再起動して解決していたが、再起動することなくメモリを解放してくれるというプラグインRAMBACKというのがあったので試してみた。

rspec-mode

rails-modeは使ってない(rinari派)ので入れてなかったんだけど、ふと思い直してrspec-modeを入れてみたら便利すぎた。 describeとかitにカーソルを持って行ってC-c , s とやるだけでそのエクスペクテーションが実行される。 今までターミナルに移っていちいちspec -lineとかや...

続rvm

先日の記事のように、何もオプションを付けずにrvm install ruby-1.8.7とかやるとopensslやreadlineなしでインストールされてしまう。 このへんのライブラリが入ってないと動かないgemが出てくるので、改めて入れ直した。 rvm package install opensslとか個々に指...

rvm

acBookAirにruby開発環境を構築する際に、元から入っているrubyとMacPortsで入れたrubyでgemがごっちゃになってしまい、訳が分からなくなってしまった。 まぁ、今時sudo gem installとかやってるのはアレですよね。 と言うわけでrvmをインストールしてユーザ環境以下で管理すること...

ruby1.9.2

せっかくrvmを入れたので、ruby1.9.2をインストールしてみた。 rvm install 1.9.2 で終わり。 ついでに、ちょうどWindows環境をWindows7に移行したので、Windowsのrubyも1.9.2(x64)にしてみる。 と言ってもWindows上で開発はやらないんだけど。

rspec2と1の共存?

勢いでrspec2をインストールしてしまったんだけど(ついでにRails3も入った)、その状態だとrspec1由来のspecがrspec2のgemを読み込もうとしてエラーになる。 解決するには、spec(/usr/bin/specとか、rvm環境なら~/.rvm/gems/ruby-*/bin/spec)を直接書...

NTEmacs

Windows上では長年Meadowを使ってるんだけど、さすがに古すぎて他のプラットフォームと設定を共通化できず、色々面倒になってきた。 23.2のビルドを探してみたところ、gnupackに含まれているNTEmacsが良さそうなので入れてみる。 gnupackは入れても入れなくても良い。(たぶん) 日本語入力も問...

Emacsの設定をDropboxに置く

emacsの設定はプラットフォームごとにまちまちで、統合したいなーといつも思っていた。 一時期gitで管理したりもしたんだけど、設定をいじる→リポジトリに登録→push→各プラットフォームでpullという作業があまりにも煩わしく、ついついおろそかになってしまう。 ここらへんを自動化すべく、elisp群をDropb...

Emacsいろいろ

設定を共通化してメンテナンスしやすくなったので、「Emacsテクニックバイブル」に書いてあった設定のうち気に入ったものを試してみる。

Cocoa Emacsの近況

Cocoa Emacsになってからどうにもinline patchの調子が悪く、日本語入力時にしょっちゅうクラッシュしていた。 これはもうinline patchなしの方がましなのでは?と思って素のEmacsをビルドしてみることに。

メタプログラミングRuby

読了。 興味深くて楽しい本でした。 良かったところ: ストーリー仕立てで楽しい テクニックのネーミングが秀逸で覚えやすい。(nilガードとか) 一度出てきたテクニックが再出した時に、前回の解説のページ数が併記されている 最後に簡潔にまとめたリファレンスがついている ところどころフリーダムな翻訳(ジャッ...

font-spec

cocoa-emacsのフォント設定の決定版? font-specを使うといいらしい。

縦分割screen

screenを縦に分割して2画面で作業する方法。 Ubuntuの場合: 既にパッチの当たったscreenが入っているので、修飾キー(C-zとか)→|(パイプ)で分割 acの場合: macportsのものだとうまく動かないので、tscreenをソースから入れ、.screenrcを.tscreenrcに書き換えて b...

しつこくGitメモ

origin/masterにnon-fast-forwardでpushできなくなった! さすがにmasterを削除することはできない(元々削除できないが)ので何とかしてみる。

Gitメモ(第何弾か忘れた)

毎日、作業開始時に git checkout master git pull origin master git checkout my-work-branch git rebase master とやってたんだけど、なんか妙なマージコミットが混ざってるよ、と注意された。 git pullはfetch+merg...

続・右プロンプト

zshで右プロンプトにgitの状態を表示させてみたが、zshの最近のバージョン(4.3.10)のvcs_infoは、いちいちgitを呼ばなくてもリポジトリの状態を把握できるらしい。 毎回gitが走ると当然遅いので、vcs_infoに切り替えてみた。

右プロンプト

zshには右プロンプトというものがある。 何に使うの?と思ってたけど、パスとかを表示させておくと便利(左に表示させるのと比べてカラムがずれないとか)なようなので試してみた。 ついでに、うっかりmasterをいじり回してしまう事故を防ぐために、gitのブランチも表示させてみる。

zzz

acをコマンドラインからスリープさせる方法。 なぜそんなことをするかと言うと、 リッドクローズで使ってる時にスリープさせたい マウスでスリープを選んでも、マウスに触れただけで起きてしまう かと言ってBluetoothで起きないように設定すると、リッドクローズのまま起こす方法がない 事前にマウスの電源を切...

可能性の獣

mongrelで動かしていたRailsアプリをUnicornに切り替えた。 nginxの方が情報は多いんだけど、今回は他のWebアプリも動いてるので敢えてApacheにする。 若干ハマったのでメモ。

printfデバッグ

rubyだとppデバッグとかputsデバッグだけど。 便利なモジュールが紹介されてたので使ってみる。 どっちもgemで入ります。

all your base are belong to us

あらすじ: git commit、git pushして作業終了 ↓ 翌日、最後のcommitが気に入らなくなってgit checkout HEAD^ ↓ そのまま作業終了、commit ↓ fast-forwardでpushできない! ↓ 昨日のことを忘れてmergeしたらconflictの嵐 ↓ \(^o^)/

TDD

トゥアハー・デ・ダナンではありません。 rspecで開発する際、今までruby script/spec なんちゃらかんちゃら…と手でいちいち実行してたけど、autospecを教えてもらったらとても便利だったのでメモ。 autospecはrspecかrspec-railsに入っているので、gemを入れてパスを通して...

今さらRails2.3.8

いやまぁ2.x系列では2.3.9が最新なんだけどね。 masterブランチが2.3.5のままになってたアプリがあったのでマージついでに2.3.8に上げたところ、mime typeがおかしくなった。text/plainで送られてしまってhtmlソースがでてる… 応急処置としてhttpd.confのVirtualho...

続々・Gitメモ

リポジトリを特定の時点に戻すには2つの方法がある。 まずgit logで戻したいコミットのハッシュを取得して、 git reset [ハッシュ値] または git revert [ハッシュ値] resetは戻した時点より後のコミットを全て無かった事にする。 revertは「その時点に戻す」差分を作成して現在の...

続・攻性防壁

以前書いたエントリの続き。 管理しているサーバの1つが、同一IPから1000回以上のアタックを受けていたので、今度こそ自動的に拒否リストに追加する仕組みを考えてみる。 rubyで実装するとして、デーモンとして常駐するとかhosts.allowから呼び出すとかも考えたけど、あんま激しく呼び出されるとそれ自体が負荷を...

Rubykaigi2010

帰ってきてから色々と忙しくて間が開いてしまったけど、rubykaigiに行ってきました。 今年はまたつくばに戻り、参加者もさらに増えていましたが、セッションの豊富さに呆れ…いや感心しました。聴きたいセッションが二重三重に重なってて全部参加できないよ! メイン会場のセッションに関しては動画が配信されているので、ru...

target=”_blank”

今時target=”_blank”なんてやってると笑われるので、JavaScriptで実装する方法。 ぐぐると色々なやり方があるようだけど、例えばRailsのerbだと [html] <%= link_to(“新しいウィンドウで開く”, “http://blog.larus.jp/”, :popup =&g...

SInatra3分間クッキング・その1

突然、ちょっとしたブックマークアプリが欲しくなったので、以前から興味のあったSinatraででっち上げてみる。 そこ、一体いくつ車輪を再発明すれば気が済むんだ?とか言わない。

GitX

redmineをいじってるうちに、ローカルで動かすGitのリポジトリビューアが欲しくなった。 一応gitにGUIはついているものの、MacでXを立ち上げるのも億劫だし見た目もよろしくない。 まぁ、実際のコミットだのなんだのといった作業はコマンドラインで十分なので、差分だけぱっと見て分かれば良い。そんなのないかなぁ...

redmineインストール

ちょっと使い方を習得しておきたかったので、redmineをインストールしてみた。 以下そのログ。

.gitignore

redmineのデフォルト.gitignore 参考になるのでメモ。

WP Rails Authenticate

懲りずにRailsとWodpressの認証を結合する試みの続き。 integration apiを使って一定の成功は見たものの、実はdevelopment環境(cookieセッション)でしか動かなかった。production環境はmemcachedセッションを採用しているが、integration apiはcoo...

FirePHP

WP Rails Authenticateに手を加える過程で便利だったのが、FIrebugのプラグインFirePHP。php内でデバッグログを出力させてFirebugのコンソールに表示することができる。ちょっとしたプラグインの改造にはとても便利。 ライブラリは直接埋め込んでもいいが、WordpressならSimp...

gitメモ+1

いつも忘れて調べるので備忘録。主にブランチまわり。

リバースプロキシの一部無効化

Apache2.2のリバースプロキシで運用しているRailsアプリ内で、ドメインをそのままに一部をRails以外のコンテンツ(Wordpress等)で構成する必要が出てきた。 と言ってもそんなに複雑なものではないので、下位ディレクトリの一つを適当な場所にAliasしてやって、そこだけリクエストがmongrelに渡...

こわれた腕輪

以前書いたSPAM対策の続き。 意外と粗忽と言うか良心的なのか、固定ホストから送信されていたり、Fromアドレスが一定のSPAMというのは多い。 それらをpostfixで一括して弾いてみる。

Integration API

RailsとWordPressをシングルサインオンで繋ぐIntegration APIというプラグインがあるらしい。 MOONGIFTさんの記事を見てから一度使ってみたいと思ってたんだけど、使えそうな案件があったので試してみた。 簡単に仕組みを説明すると、Rails側にセッションと認証情報を提供するAPIを用意し...

影とのたたかい

最近spamが巧妙になってきたのか、bsfilterをくぐりぬけることが増えてきた。 まぁ、gmailのフィルタが相変わらず10割打者なので実用上問題はないが、Thunderbirdで迷惑メールマークを付ける作業が家の前に放置された他人の生ゴミを捨てさせられているような不快感があるので、フィルタの精度を上げてみる...

NTFS volume with Snow Leopard

ac(Snow Leopard)でNTFSボリュームをrwでマウントするために、mount_ntfsのラッパーを書く方法を使っていたが、アップデートによってできなくなったようだ。 同じ方法を使うとmountされず、system.logに diskarbitrationd[13]: unable to mount ...

だが、しかし…

IRC切断問題続き。 再度LAN内を見直したものの、残念ながら再び切断が発生、週末には一日に5回も6回も切断されるという事態になった。 もはやPCから電話線に至るまで、モデムを除いて全ての機器を交換しており、原因はPCかモデムの先の何かに絞られた。 ちなみにwiresharkで確認したところ、切断前に7回のTCP...

rubykaigiチケット購入

今年も参加します、rubykaigi。 今回の会場はつくばだそうで、遠いけど広くて快適なんだよね。 一昨年は宿が遠い上に周りにコンビニ一軒なかったけど、今回はすぐ隣に取れたので安心。

第三の容疑者

IRC切断問題の続き。 発端 ルータ交換 NTTに電話 再度LAN内の見直し ←いまここ

NTTに電話

前のエントリに書いたように、ルータを交換してもIRCの切断が直らないので、NTTに電話してみた。 「回線に不調が…」と言いかけたところ、詳しく説明する前に「ではすぐ調べますので!10分後にお電話します!」とさっさと切られてしまった。 10分後、「調べたけどリンクダウンしてないしずっと繋がってますよ?」と言われる。...

ルータ交換、そして

IRCが切断されまくる件についての続編。 ルータ−モデム間のLANケーブルと電話線を全て交換したが解決しないので、次の一手としてルータを変更してみることにした。 ルータはFreeBSDで運用していたが、無線APとして使っているバッファローのWZR-HP-G300NHにルータ機能が付いているので、これを有効にして切...

Members Only

Wordpressで作ったブログを非公開にする方法。 (もちろんこのブログではやってません) とりあえず.htaccessでBASIC認証にしてみたが、この方法だとフラッシュアップローダが使えないという制約がある(ブラウザによってはフリーズしてしまう)。 というわけでもう少しスマートに、Wordpressの認証を...

clamav

先日、ウィルスメールの爆撃を受けた際に、ウィルスメールが自分のメールサーバとgmailの間でbounceしてしまい、メールボックスが「ウィルスバスターによって削除されました」で埋め尽くされるという悲劇が発生してしまった。 ちなみにメールは「Outlookのパスワードが変わったよ!添付のファイルを実行してね」という...

たまには時事ネタでも

人工衛星(衛星じゃないよね、ほんとは)「はやぶさ」の運用情報で、「(噴射を行う際には)先に噴射終了をスケジューリングする命令を発してから噴射開始をスケジューリングする」という話を聞いて面白いなぁと思った。 なぜそうするのかと言うと、何らかのトラブルが発生して二つ目の指令が受信されなかった場合、噴射開始だけがスケジ...

WPTouch

「すまーとふぉん」とかいうのがはやっているそうなので、このブログも対応してみました。 まぁ、WPTouchを入れただけなんだけどね。 iPod touchしか持ってないので動作確認はmobile safariのみです。

ffftpの怪

ユーザから「ftpでファイル見えないぞゴルァ」というクレームが。 普段ftpを使ってない(sftpオンリー)なので気が付かなかった。 とりあえず仮ユーザを作成し、コマンドラインのftpで確認。普通に繋がる。 次に手持ちのNextFTPで確認。あれ、見える… 次にffftpで確認。ファイルが見えない。 あれぇ…

攻性防壁

いや全然攻性じゃないんですが。 ftp関係のトラブルを調べている時、ftpにAdministratorというアカウントでアクセスを試みる不心得者がずっとアタックをかけていた。 気持ち悪いので、以前やっていたhosts.allowの設定を復活させることにした。 ごく簡単に、/etc/deny.listに拒否するIP...

ActiveRecordからfixtureを作る

稼働中のDBからfixtureを生成したくなって色々調べてみた。 (csvでエクスポートすればいいじゃんとかいうのは却下) ar_fixturesプラグインが有名だけど、最近のRailsでは色々とめんどくさいらしい。 というわけでこちらの記事を参考に(というか丸写しで)やってみた。 実行するとschema_mig...

Cocoa Emacs23.2

正式版が出たのでビルドしてみた。 ミラーからファイルを探してきて % /configure –with-ns –without-x % make bootstrap % make install でもってnextstep/Emacs.appをApplicationsにコピーして終了。 cedetが標準搭載になっ...

お約束二点

string.sub(/^No¥.(\d+)/, "#{$1}番目") とかやってもきちんと置換されない。 何故かと言うと、#{}の式展開は正規表現マッチの前に行われるから。 string.sub(/^No¥.(\d+)/) {"#{$1}番目"} とブロックに書き換えれば正しく置換される。

IRC

未だにIRCをけっこう使ってるんだけども、ここ数ヶ月様子がおかしい。 発言の多いチャンネル(にJOINしているサーバ)からランダムに切断されるようになってしまった。 正確には、クライアントが切断と判断して再接続するんだけど、サーバ側にはまだ自分が残っていて、しばらくするとtimeoutするという状態。 IRCクラ...

次元断層

時報を見てからふとPCの時計を見ると、1分も進んでいた。 ルータ(FreeBSD)で動かしているntpdに合わせてるんだけども、ルータにsshしてdateしてみるとこっちも1分進んでいる。あれぇ? とりあえずntpの状況を確認しようとntpq -p。 ntpq: write to localhost failed...

ローレンツ短縮

最近、目を離すとWindowsのFirefoxがクラッシュしていることがよくあるので、改善を図ってFirefox 3.6.4 Lorentzをインストールしてみた。 ac版の方も3.6.4でプロセス分離が実装されたのかな? acの方はクラッシュはしないけど、CPU使用率が跳ね上がったままになることが多いのでこっち...

でざぱた

「Rubyによるデザインパターン」読了。 GoFを読んだこともないへたれプログラマですいません。 だいたいあの長ったらしい邦題(「オブジェクト指向における再利用のためのデザインパターン」だっけ?)はなんなの。冷凍食品とか台所用品じゃあるまいし。「おばあちゃんがじっくりコトコト煮込んだ炎上プロジェクト」みたいな。 ...

王様のbranch

gitのブランチでちょっとハマった。 % git checkout -b ng でブランチを切ってコミットして % git push origin ng でリモートに投げる。ここまでは良かった。 んで他のマシンに移って % git pull origin ng したらmasterにmergeされてしまった!がーん。

WordPress

外部ブログを使おうと思って色々見て回ったけど、自分で色々試したいので自前のサーバでWordPressを運用することにした。 と言うわけでプラグインを入れまくる。

さて

とりあえず4月分の技術ネタ一式をmixiからコピペしました。

hyper estraier + paginate

Hyper Estraierとpaginateの組み合わせ。 ちなみに未だにwill_paginateを使ってます。ぬるくてすいません。 単に検索結果をpaginateしたいだけなら Item.paginate(params[:query], :page =&gt; params[:page], :per...

全文検索 on Rails

railsで全文検索するのに、LIKEを使うだけのぬるーい実装をしてたんだけど(SQLをごりごり書こうとしたらこんがらがったのでやめた)、もうちょっとスマートにやる方法を考えてみる。 色々調べたところ、Hyper Estraierとsearch_doプラグインを使うのが一般的らしい(と言っても情報は少なめ)。

301 moved

mod_proxyでmongrelに飛ばしてる環境下で、301でリダイレクトしたいんだけどhttpd.confに書いても成功しない。

Urchin

を設定しようとしたけど、途中でめんどくさくなってGoogle Analyticsに逃げた。 レポートもきれいだし、Railsならlayoutにコード埋め込むだけだし、やっぱクラウドっすよクラウド。 反映が遅いけど、まぁ月次レポートがありゃ十分。

Cocoa Emacsが落ちまくる件

Snow LeopardにしてからCocoa Emacsがボロボロ落ちてるんだけど、どうもオートセーブとIMEの変換がぶつかった時に起きるような気がしてきた。

サイトマップ生成

google webmaster tool用のサイトマップを生成する方法。 と言うかいつの間にかサイトマップは標準仕様ができているようで、google/yahoo/msn(bing)で共通にできるようだ。 サイトマップの作成はほぼこの通りでOK。感謝感謝。 http://brass.to/blog/sitemap...

移転

ずっとmixiに書き散らしていましたが、技術ネタはこっちへ移動します。

ありがちなミス

メール送信用のcontrollerを書いていて、謎の「wrong number of arguments (1 for 0)」で何時間も悩む。 controllerに不備はないし、そもそもメソッド内にdebuggerを仕掛けても実行が止まらない。なんなんだこれ。

acts_as_list

任意に並び替えがしたいナリ、とお客さんに言われたので、acts_as_listを使ってみた。 使い方はほぼこちらの通りでOK。簡単簡単。 http://tobysoft.net/wiki/index.php?Ruby%2FRuby%20on%20Rails%2Facts_as_list 最初あるいは最後のエントリ...

_blankが許されるのはHTML3.0までだよねー

リンクを新しいウィンドウで開くのにtarget = “_blank”はダサいしjavascript書くか、と思ってたけど、link_toに:popup => trueを付けるだけであとは勝手にやってくれるのね。知らなかった。 あと、1バイト文字と2バイト文字(UTFだから3バイト文字か?)の混在する環境で...

リポジトリ再構築

gitのリモートリポジトリがおかしくなったので仕切り直し。 ディレクトリ切ってそこに移動して % git init –bare でもって作業側で % git remote add origin ssh://xxx.com/src/product % git push origin master これだ...

We’ve got company

メール受信がタイムアウトしたので、何かトラブルかと思ってサーバにsshしたら、プロンプトが出るまで数分かかった。 何か刺さってるのかとtopを見たが特にCPU食ってるタスクもない。メモリ使用量の多いタスクを止めようとして、いつもの調子で/usr/l→TABとかやったら固まる(1分後くらいに反応)。な、何が起きて...

消える世界

エントリが次々destroyされる謎の現象が発生。 すわMySQLがいかれたか、あるいはメモリが尽きて誤動作でもしてるのかと思ってパニクったけど、何のことはないhas_manyしている側のmodelになぜか:dependent => :destroyが入っていた… どう見てもケアレスミスです。本当にありが...

n+1

いくつか残っていたn+1問題を解決するために、:includeをごりごり挿入。 以下メモ。 普通のinclude :include => :item 複数include :inluce => [:item, :another, :yetanother] 関連先もinclude :inluce ...

伽藍とバザール

Emacsの調子が悪いので作り直すことにした。 が、Emacsのリポジトリが移行したので、cvsだと23.0までしか取得できない。ちなみに新しいSCMはbazaar。なんでそんなマイナーなの使うんだ…gitでいいじゃん。まぁいいか。 http://wiki.bazaar.canonical.com/MacOS...

あああ

<%= javascript_include_tag(:all, :cache => true) %> としてあると、 config.action_controller.perform_caching = false の状態では表示がおかしくなる。 (lightboxのモーダルウィンドウが...

push

pushが破壊的メソッドなのをうっかり忘れててえらい目にあった。 定数の配列の最後に引数を追加して返すメソッドを FixArray.push(param) とか書いてた。その結果mongrelのインスタンスごとに定数が異なり、リロードされると配列がどんどん長くなるという怪奇現象が発生。我ながらなんて恐ろしい...

acts_as_tree

acts_as_treeを使ったモデルで def branch branch = [self] if self.parent branch.concat(self.parent.branch) end branch end みたいなメソッドを定義して、model.branc...