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…

path.existsがfsに移行

0.7.1からpath.existsはfs.existsになったらしい。existsSyncも同じく。後方互換でpath.existsもまだ使えるけどWarningでる。のでひとまずこうした。 var exists = fs.exists || path.exists;

connectのセッションミドルウェアのcookieのsecure属性について

SSLでCookie使う場合はsecure属性つけて非SSLの場合にはCookie送信しないようにするって仕組みがあるわけだけど、connectのsessionもその実装はされてる。 app.use(express.session({ secret: yourSecret, cookie: { secure: true } })); こんな感じ(コード…

npm install package --save

ってやるとpackage.jsonのdependenciesに勝手にインストールしたモジュール追加してくれるって機能があるらしい。 $ echo '{ "dependencies":{} }' > package.json $ npm install express --save $ cat package.json { "dependencies": { "express": "~2.5.8…

herokuのbuildpackでnode.jsを使うときにdevDependenciesをインストールしない

mochaとexpect.jsくらいならまあ気にしないんだけどコントローラーのテストするのにtobiとかいれてjsdomとかが入ったりするとイヤなのでdevDependenciesをインストールしないようにした。 https://github.com/hokaccha/heroku-buildpack-nodejs/commit/e39ff…

CNAMEレコードの制限

CNAMEレコードだと example.com とかいうドメイン(rootドメインとかいうのかな)は設定できないらしい。RFC違反らしい。なのでCNAMEレコードでドメイン設定する場合は *.example.com みたいにする必要がある。herokuのHostname-Base SSLだとCNAMEレコードを…

syntasticってのがなかなかいい

vim

vimのプラグインでシンタックスチェックやってエラーの行を出してくれる。いろんな言語に対応してるし設定もそんなにいらないし。 https://github.com/scrooloose/syntasticperlとかrubyは何もしなくてもいいけど、jsはjslintとかjshintいれないとダメみたい…

paypal APIの最新のバージョンの調べ方

https://www.x.com/developers/paypal/forums/nvp/latest-paypal-api-version-api-calls サイトのソース見ればそこに書いてあるよ!だって! web version: 85.0-2512177view-source:https://www.paypal.com/ たしかにここのhead内のコメントで書いてあった。…

github pagesのjekyllでlessを使う

ローカルで作ってる時に $ jekyll --auto --serverでやってると、lessをcssにコンパイルするタイミングが難しい。lesscをwatch的なことしてcssに変換してそれをjekyellの--autoが拾って変換ってなるとややタイムラグが発生してちょっと微妙だった。ので--aut…

iOSでのWebSQL Databaseの容量の上限

iOSの場合openDatabase時に大きい容量を指定すると、容量増やすけどOK?みたいなダイアログでる。だけど、指定する容量が50MB以上だとエラーになるっぽい。んで50MBにして1KBのデータをどんだけ保存できるかやってみたら、12000レコードくらい(実データのサ…

CharlesでUAを書き換える

agoさんが書いてた。メモ。 Charlesの場合、Charles起動後、Tools->Rewrite->Enable Rewriteにチェック->Add->LocationのHostに*.example.comを追加->Rulesを以下のように設定すると上記Fiddlerの設定と同じように指定ドメインのみUAの差し替えができます。 …

lessのmixinで定義したのを残したくない場合

// less .foo { display: none; } .bar { .foo; color: red; } これだと .foo { display: none; } .bar { display: none; color: red; } こうなる。でも.fooがmixin用で定義したやつの場合は残したくない場合もある。そういうときは()つければOK。 // less .…

for inとObject.keysの件追記

http://d.hatena.ne.jp/hokaccha/20110729/1311927481 この件にuupaaさんからつっこみ。https://twitter.com/uupaa/status/165692109565870080 http://uupaa.hatenablog.com/entry/2012/02/04/145400Object.keysはスコープつくるので正確には等価じゃないと…

expect.js 0.1.2でthrowExceptionがパワーアップした

expect.jsはかなりいいんだけどthrowExceptionでエラーオブジェクトのチェックができなくて微妙だったんでパッチ投げようかと思ったけどまさに自分が実装しようと思ってた機能が実装された。 var expect = require('expect.js'); var fn = function() { thro…

Mac版chromiumの最新版をダウンロードする

こんなん見つけた。便利。 http://download-chromium.appspot.com/

lessのファイルをwatchrでwatchする

いいのがなくて前に適当に書いたけど、TwitterのBootstarpみたらWatchrっての使ってた。 https://github.com/twitter/bootstrap/blob/master/Makefile watch: echo "Watching less files..."; \ watchr -e "watch('less/.*\.less') { system 'make' }"で $ m…

Android2.3でAudio.preloadの指定

var audio = new Audio('main.mp3'); audio.autobuffer = false; // early HTML5 implementation (non-standard) audio.preload = 'none'; // standard audio.addEventListener('loadstart', function() { alert('loadstart'); }); audio.addEventListener('…

chrome appのhosted appでインストールされてるかチェックする

http://code.google.com/chrome/webstore/faq.html#faq-app-24 chrome.app.isInstalled でチェックできるらしい。

expect.jsとchai.expectのブラウザ対応

BDD Assert系のモジュールでchaiとexpect.jsを試した。機能はほぼ変わらないけどブラウザのサポートでけっこう差が出た。(ここでいう機能が変わらないってのはchai.expectと比較しての話し。chai.assertとかchai.shouldを考えると完全にchaiが高機能) http…

Google inapp payment所感

いいね! 仕様が単純 実装も簡単 微妙だね! 月額課金とかできなくて微妙 一つのアカウントで複数アプリが登録できなくて微妙 請求にドルしか指定できなくて微妙 sandboxが不安定で微妙 微妙の項目は時間が経てば解決されそうなのであんまり心配してない(と…

google inapp paymentのsandbox環境が不安定かも

Google inapp paymentのsandbox環境でテストしてて、buy()を読んだときにポップアップが立ち上がってユーザーの認証までは出るんだけど、その後決済の確認画面になるはずのところで「技術的な問題が発生しました」とかでて先に進めない(具体的なエラーのメ…

JavaScriptファイルをminifyするときとかのビルド方法

jQueryとかjQueryMobileとかを参考にしつつMakefileつくってこんな感じにしてみた。build以下にclosure-compilerをまるっとアップする感じ。 https://github.com/pxgrid/js-flipsnap/commit/34eb5acec21911aa39f3c598133f74d7503dfe88まあこれでもいいんだけ…

AndroidのUserAgentがmp3のリクエストの場合に変わる件

手元のAndroid2.3.4(Xperia arc)で確認。HTML5のAudioの場合。Flashの場合は検証してない。 HTMLファイルの場合のUserAgent Mozilla/5.0 (Linux; U; Android 2.3.4; ja-jp; SonyEricssonSO-01C Build/4.0.1.C.1.9) AppleWebKit/533.1 (KHTML, like Gecko) …

Backbone.Model.prototype.setとかのときに値を渡す

アンドキュメントだけどこんな感じでいける。 var Foo = Backbone.Model.extend(); var foo = new Foo(); foo.bind('change:hoge', function(model, hoge, obj) { console.log(hoge); //=> fuga console.log(obj); //=> { key: 'val' } }); foo.set({hoge: '…

Backbone.ModelのidAttribute

ドキュメントに書いてないけどidAttributeってのでidのキー名を変更できるっぽい。mongoDBとかで_idにするといいっぽい。 https://github.com/documentcloud/backbone/blob/29b60e53fa18b6fffb4a21d0d1c8c9fdbde43b6c/backbone.js#L159-161