2012-01-01から1年間の記事一覧

new FormDataの引数

XHR2で画像とかのバイナリデータを送るのにFormDataっていうのが使えて <form> <input type="file" name="file"> <input type="submit"> </form> var form = document.querySelector('form'); form.addEventListener('submit', function() { e.preventDefault(); var formData = new FormData(form); var xhr = new XMLHttpRequ…

RailsでURLのバリデーション

URLのバリデーションをしつつ未入力も許可する場合のvalidate。 validates :url, { :allow_blank => true, :format => URI::regexp(%w(http https)), } allow_nilじゃなくてallow_blankを使うと空文字もOKになるらしい。

jekyllのkramdownでiframeを使う

jekyllのkramdownでiframe使ったらエスケープされて表示されたのでなんぞと思って調べたらkramdown側で特定のタグはエスケープするように設定されてるみたいで、その場合は次のように書けばいいらしい。 {::nomarkdown} <iframe src="/path/to/html"></iframe> {:/nomarkdown}

pygmentsが原因でjekyllが重くなってた

jekyllの実行が20秒〜30秒くらいかかってさすがにかかりすぎなので原因を調べてみたらコードハイライトに使ってるpygamentsが原因だった。今現在gemでインストールできるjekyllはコードハイライトにalbinoっていうモジュールを使ってみるみたいで、こいつは…

form要素でgoogleのサイト内検索

サイト内検索を実装するのが難しいときはgoogleの検索で 検索ワード site:mydomein.comっていう検索ワードになるようにフォームで飛ばすのが簡単なんだけど、これをform要素だけでやるときsite:mydomein.comの部分はどうやって指定すればいいかというと、sit…

jekyllでPHPのハイライトに<?phpをいらなくする

Jekyllはコードのハイライトにpygmentsを使っていて、PHPをハイライトするときは {% highlight php %} $foo = 'bar'; echo $foo; {% endhighlight %}とか書くんだけど、pygamentsのPHPのlexerはデフォルトだと

mochaでcontextが消されたけど戻ってた

僕がpull requestして取り込んでもらったcontextが消えて残念思ったんだけど https://github.com/visionmedia/mocha/commit/914c73654ecdc7c8c9431cfa48b13d59241b201d次の日にrevertされてたw https://github.com/visionmedia/mocha/commit/c44cf13773ab9b…

window.onerrorを強制的に発火する

window.onerrorが正常に動いてるか確認したくてコンソールで throw new Error('foo'); ってやったけどなぜか発火しなかった。アドレスバーにjavascriptスキームで javascript: throw new Error('foo'); ってやったら発火した。

OSX Lionのプレビュー.appでfaviconの書き出し

Mac

Snow Leopardはプレビュー.appの書き出しのフォーマットにMicroSoftアイコンっていうのがあってそれでfaviconファイルを書き出せてたんだんだけど、LionでMicroSoftアイコンっていう項目がなくなっててデグレしたのかと思ったらOptionキー押しながらプルダウ…

RailsでDBのNOTICEを出さないようにする

RailsでPostgreSQL使ってたらこんな感じのNOTICEが毎回出てうざいかったので消したかったという話。 NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id" NOTICE: CREATE TABLE / PRIMARY KEY will create imp…

herokuのworkerの再起動

herokuのworkerプロセスは再起動するときまずSIGTERMを送る。のでworkerはSIGTERMを受け取ったらやりのこしたジョブを終わらせたりするなどして、安全にプロセスを終了すればいい。SIGTERM送って10秒まってもプロセスが終了してなかったらSIGKILLにより殺さ…

XCode4.3でのiPhoneSimulatorの場所

Mac

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.appっていうよくわからん場所にあってとても起動しにくいので/Applicationにシンボリックリンクはった。 $ ln -s /Applications/…

nodebrewのzsh補完書いた

補完関数書いた。 https://github.com/hokaccha/nodebrew/blob/master/completions/zsh/_nodebrewこれを$fpathがとおってるところに置くと動くはず。ホームディレクトリとかに補完関数を置きたいなら.zshrcに fpath=($HOME/.zsh_fun $fpath)とか書いて ~/.zs…

jekyllで環境変数を参照する

やりたかったこととしては、本番環境ではminifyしたファイルを読み込んで開発環境ではminifyする前のファイルを読み込みたいってやつ。ファイルは事前にscript.jsとscript.min.jsがあるとして <script src="/js/script.{% if site.env == 'production' %}min.{% endif %}js"></script> こんな感じで書いとくと $ JEKYLL_ENV=production jekyllとかす…

rbenvでbundle execせずに済むようになるやつ

rbenv-bundlerっていうプラグインがあった。 https://github.com/carsomyr/rbenv-bundler細かい挙動がよくわからなんけど、なんかできてるっぽいので使ってみる。

vimのシンタックスチェック syntasticの設定

vim

色々な言語に対応したシンタックスチェックのプラグイン。けっこうよさげなので使ってみる。 https://github.com/scrooloose/syntastic設定はこんなん。 " syntastic let g:syntastic_mode_map = { 'mode': 'active', \ 'active_filetypes': [], \ 'passive_…

jshintでグローバル変数のチェックをしないやつを指定する

jshintで (function() { 'use strict'; var foo = Backbone.Model.extend({...}); })(); とか書くとBackboneがないよこのやろうって怒られる。jsのファイルに /*global Backbone: true*/って書くけばいいんだけど、全ファイルに書きたくない。調べたら.jshin…

Hash#mapでHashを返す

{ :foo => ['bar'], :hoge => ['fuga'] } みたいなhashを { :foo => 'bar', :hoge => 'fuga' } にしたかったんだけど h = { :foo => ['bar'], :hoge => ['fuga'] } Hash[h.map{|k, v| [k, v[0]]}] こんな感じでいいのかな。

herokuでpackage.jsonから消したモジュールを削除する

buildpackで動かしてるNode.jsで、1回インストールされたnpmのモジュールがpackage.jsonから消えないのでbuildpackのスクリプトに npm prune を追記した。 https://github.com/hokaccha/heroku-buildpack-nodejs/commit/e942d5a91e24fe5850b9e2cbe072a4f2c6a…

JenkinsのTAP Plugin

昨日のやつ、出力をTAPにしただけじゃTAPの意味ないということに気づいたのでTAP Plugin入れた。 https://wiki.jenkins-ci.org/display/JENKINS/TAP+Pluginすでにhakoberaさんがやってた。 http://d.hatena.ne.jp/scalar/20111220/1324351134テストの実行ス…

Node.jsのプロジェクトをJenkinsで自動テスト

Node.jsでつくったサービスをJenkinsで自動テスト走らせるようにした。gitでpushしたら自動でテストが走って失敗したらメールとかチャットに通知してくれる。便利。 インストール サーバーはUbuntu(v10.04@sakura vps)なのでここに書いてある通りにする。 …

github pagesでもjekyllのプラグインを使いたい

github pagesはプラグイン使えないので、プラグイン使いたい場合はローカルでコンパイルして静的ファイルをpushする必要があるんだけど、その場合ソースファイルの管理どうすればいいんだってのが問題になる。URLを http://<username>.github.com/<reponame>/_site/とかにすれば</reponame></username>…

jekyllのテンプレート的なの

最近jekyllがマイブームなので自分で使うようのテンプレート作ってみた。 https://github.com/hokaccha/jekyll-templateSassのコンパイルとJSのコンパイルをやるjekyllのプラグインつくったので $ jekyllだけでHTML、JS、Sassをコンパイルしてくれるのがポイ…

git pullの詳細な挙動を追ってみる

git push/pullは何気なく使ってるけど実はよくわかってなかった。ことのきっかけはこういう質問。 hogeというリモートブランチをローカルのhogeブランチにもってきたい hogeをローカルのmasterにはマージしたくない pullでなんかこんな感じでいけそう? $ gi…

coffeescriptについて

なんか流行ってるみたいなので便乗してみる。なぜ CoffeeScript がダメか - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech なぜ CoffeeScript がよいか - 0xff.toBlog() CoffeeScriptは自分にとっては有益だった - Takazudo hamalog基…

Mac OSX 10.6でRuby 1.9.2のインストールではまった

rbenvで1.9.2を入れようと思ったらはまった。 $ brew install rbenv $ brew install ruby-buildで.zshrcにこれ書いて eval "$(rbenv init -)"$ rbenv install 1.9.2-p290したけどビルドでエラる。なんか調べてみたらgccの問題らしい $ ls -l /usr/bin/gcc lr…

読み込んだファイルの内容を一気に取得

my $text = do { local $/; <$fh> }; ってすればいい。 while (<$fh>) {...} とかせんでもいいのね。昔Perl書いてころは$/の方法でやってた気もするけどさっぱり忘れてる。

nodebrew 0.5.0リリース(aliasを追加)

aliasとunaliasというコマンドを追加したnodebrew v0.5.0をリリースした。 https://github.com/hokaccha/nodebrew僕は常に最新版のnodeを使ってるわけじゃなくて一個固定のやつ(今はv0.6.6)を使ってて、必要な時に必要なバージョンをuseして、終わったらま…

sinon.jsのuseFakeTimersでmochaがややバグる

sinon.jsのuseFakeTimersでDateを上書きするとmochaでテストにかかった時間を計測するところがバグって変なことになる。報告しようと思ったけどすでにissueあがってた。 https://github.com/visionmedia/mocha/issues/237ブラウザで使う場合はmocha.js本体に…

Backbone.jsで値をセットしたときにデータを変換したい

例えばこんな感じで文字列で渡した日付をDateオブジェクトに変換みたいなことがしたい。 var myModel = new MyModel({ date: '2012-02-02' }); console.log( myModel.get('date') ); // Date Object myModel.set('date', '2012-02-03'); console.log( myMode…