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

Backbone.jsでPATCHをPUTに書き換える

Backbone.jsでsaveするときに patch: true にするとPATCHメソッドになってsaveに渡した引数だけをbodyに含める(patch :true しないとmodelの全attributesをbodyにしてPUTする)んだけど、API側がPATCHメソッドに対応してなかったりPATCHメソッドを通さないp…

angular-scenarioで特定のテストだけ実行する

describe -> ddescribe it -> iit ってすればそのテストだけ実行される。今のところアンドキュメントな気がする。 describe('foo', function() { it('xxx', function() { ... }); iit('xxx', function() { ... }); // これだけ実行する it('xxx', function()…

git reset --hardで新規ファイルの扱い

git

$ git --version git version 1.8.3.2 $ touch newfile $ git status -s ?? newfile $ git reset --hard $ git status -s ?? newfileこのようにまだgitに管理されてないファイルはgit reset --hardしても削除されない。これはよい。ただ、次のように、インデ…

AngularJSの$httpにX-Requested-Withをつける

AngularJSでHTTP Requestする際に、1.1.1より前まではX-Requested-Withをつけてたらしいんだけど、CORSのpreflightを飛ばさないためにデフォルトでは削除したらしい。 https://github.com/angular/angular.js/issues/1004X-Requested-Withをつけたい場合は以…

AngularJSのdeferredで並列実行

jQueryの$.whenみたいに複数のdeferredを同時に処理するみたいのはAngularJSだと$q.allでできる。 var d1 = $q.defer(); var d2 = $q.defer(); var d3 = $q.defer(); $timeout(function() { console.log('d1'); d1.resolve('d1'); }, 10); $timeout(function…

AngularJSのControllerをネストしたときのスコープ

<div ng-controller="ParentCtrl"> <div ng-show="isShow">foo</div> <div ng-controller="ChildCtrl"> <button ng-click="toggle()">click</button> </div> </div> こういうHTMLがあったときに、ChildCtrlから$scope.isShowを操作しても反映されない。これだとダメ。 var app = angular.module('app', []); app.controller('ParentCtrl', function($scope) { …

AngularJSでimgのsrcにバインドするときに404になる

<img src="{{image}}"> app.controller('MainCtrl', function($scope) { $scope.image = 'path/to/image'; }); とかする場合、読み込み時に {{image}} にリクエストが飛んで404になる。ng-srcを使うといいらしい。 <img ng-src="{{image}}">

rubyの正規表現の後方参照

Ruby 1.9以降では正規表現のキャプチャに名前がつけられるのでこういう書き方ができる。 img = 'foo.png' img_on = img.sub /\.(?<ext>\w+)$/, '_on.\k<ext>' p img_on #=> foo_on.png (?...) でキャプチャして \k で参照できる。$1 とか \1 みたいな意味不明な記号使</ext></ext>…

hub pull-requestでブランチを指定する

これ見て試してみたら、devブランチに対してpull requestしたいのにmasterブランチに対してしてしまって悲惨なことになった。(そしてこの操作は戻せないという・・) http://qiita.com/kyanny/items/170a188a87925f81ae86デフォルトはmasterだから -b オプ…

Mongooseのバージョニング

Mongooseは3からバージョニングという機能が入ったんだけどよくわかってなかったので調べたメモ。詳しくはここに書いてある。 http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioningバージョニングを使うと何がいいかというと、…

要素の属性を全部取得する

例えば <div data-foo="a" data-bar="b" data-baz="c">...</div> みたいに任意のカスタムデータ属性がついてて、こっから { foo: 'a', bar: 'b', baz: 'c' } みたいなデータを作りたいので属性を全部取得したいんだけど、 jQuery ではできないっぽい。DOMの element.attributes を使えばいける。 var div = docu…

Rails4でトークン認証のアクションに対してCSRFを無効にする

Railsはprotect_from_forgeryって書くだけでCSRF対策が有効になってマジ便利なわけだけど、セッションで認証するんじゃなくてiOSから呼ぶAPIとかでトークン使って認証する場合はCSRFの対策いらないので無効にしたい。その場合は protect_from_forgery with: …

RubyMotionでブロック中のblock_given?の値が変わる

これではまった。 https://gist.github.com/ainame/5651453yieldも同じようにダメっぽい。 def callback_caller callback_caller2 do yield end end def callback_caller2(&block) block.call end callback_caller do p 'origin' end # CRuby 1.9.3 $ ruby s…

delegateでclickイベントを拾う場合のtap-highlight-color

iOSとかでリンクをクリックするときにグレイにハイライトされるけど、clickイベントでも特定の条件を満たせばハイライトされる(対象の要素がリフローしない場合とかだった気がするけど詳しくは覚えてない)。ハイライトされるのはいいとして、delegate次の…

PostgreSQLでwhereの値にダブルクォートでエラる

Railsで以下のようなコード書いてて entries.where('url != ""') MySQLとSQLiteでは動いてたんだけどPostgreSQLに移行したらエラって動かなくなった。 MySQL uses ' or " to quote values (i.e. WHERE name = "John"). This is not the ANSI standard for da…

apt-get install node

ubuntuで apt-get install nodeでインストールしたんですけどNode.jsが動きません!と言われてなんでかよくわからなかったんだけど、「node」だとこれが入るらしい http://packages.ubuntu.com/lucid/hamradio/nodeただしくは $ apt-get install nodejsnode …

Node.jsでロードパスをプログラム内から追加する

その昔はrequire.pathsというのがあってプログラム内からロードパスを設定できたんだけど、いつしかrequire.pathsは廃止され、NODE_PATHで設定するしかなくなった。でもNODE_PATHだとプログラムの中からロードパスを変更することができない。 // libにパスを…

RailsでModelからselectボックスをつくる

collection_selectを使うといい感じにできる。例えば、あるグループに所属しているユーザーをプルダウンで選択させたい場合はこんな感じ。 <%= f.collection_select :user_id, @group.users.all, :id, :name %> ってやるとuser.idがoptionのvalue、user.name…

Node.jsで標準入力がパイプかどうか判定する

例えば入力ファイルの行数をカウントするlinecount.jsっていうのがあったとして $ node linecount.js foo.txtっていう使い方と $ cat foo.txt | linecount.jsって両方に対応したいときNode.jsではprocess.stdin.isTTYを使えば判定できる。 if (process.stdin…

HTMLでリンクを押した時にリファラを付けないようにする

<a href="http://example.com/" rel="noreferrer">link</a> のように rel="noreferrer" をつければリンク先のリクエストに対してリファラを付与しないらしい。Chromeでしか確認してないからブラウザ対応はよくわからん。仕様もある。 http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#li…

vimのBundleでインストールしようとしたらエラった

vim

最近vimの設定とか全然いじってないんだけどひさびさにプラグイン追加してBundleInstall実行したらなんかエラった。 Cloning into /Users/hokamura/.vim/bundle/vim-coffee-script... error: Malformed value for push.default: simple error: Must be one o…

githubのwikiにサイドバーを出す

_Sidebarという名前でWikiの新規ページをつくるとサイドバーを表示できる。ページ一覧とか載せとくと便利。こんな感じになる。 https://github.com/enja-oss/Sass/wiki

rbenvでruby2.0.0-p0のインストール

ruby-buildをアップデートしたら $ brew update $ brew upgrade ruby-build2.0.0-p0がきてたので $ rbenv install ... 2.0.0-p0 ...インストールしようとしたらエラった。 $ rbenv install 2.0.0-p0 Downloading openssl-1.0.1e.tar.gz... -> https://www.op…

CharlesでProxyするときのSSL証明書

CharlesでSSLをProxyするときに証明書のエラーでサイトがみれないときは以下の「Charles CA Certificate bundle」というリンクから証明書をダウンロードしてキーチェーンに登録すると見れるようになる。 http://www.charlesproxy.com/documentation/using-ch…

rubyでゼロパティング

よくありそうなsprintf。 i = 1 puts sprintf('%03d', i) #=> 001 オブジェクト指向っぽくrjustメソッドを使って。 i = 1 puts i.to_s.rjust(3, '0') #=> 001

githubでpull requestする人向けにメッセージを出す

CONTRIBUTING.mdっていうファイルを置いとくと、Pull Request出す画面に、注意書きみたいのをだせるらしい。 https://github.com/blog/1184-contributing-guidelinesこんな感じで書いとけばいいらしい。 https://github.com/puppetlabs/puppet/blob/master/C…

git add -pで細かく分割

git

git add -pするとステージする箇所を分割できて大変便利なんだけど、変更箇所が近いと同じ変更とみなされる。そういう場合は「s」を押すと近いところをさらに分割できるらしい。また、連続した行の変更は「s」でも分割できないので、そういう場合は「e」を押…

RubyのHashのデフォルト値の指定

RubyではHash.newするときにブロックを指定すると未知のキーを作った時にそのブロックが実行される。そしてブロックの引数には対象のハッシュとキーが渡ってくるのでそれを使ってデフォルト値を定義できる。例えば、次のように書くとハッシュのデフォルト値…

paypalのUpdateRecurringPaymentsProfile

UpdateRecurringPaymentsProfileっていうAPIがあって定期購読の情報を更新できるんだけど、これを使って未払分の自動請求を有効にしようとしてはまった。以下のAPIにならって AutoBillOutstandingAmount=AddToNextBilling に変更しようとしたら、レスポンス…