ホーム > アーカイブ > 2009年2月のアーカイブ

2009年2月のアーカイブ

iPod/iPhone用手袋を作ってみました。

Engadget Japanese で紹介されていたiPhone用手袋「DOTS」

手袋したまま iPod nano を使えたらいいのになあと思ってたので、これは欲しいと思った。

でも、なんか写真をみてると、手袋に手芸で使うスナップボタンを付けただけのように見えたので、以前、iPodケース(カモノハシ型)を作った時にあまったスナップボタンで試してみたら・・・動くじゃないか。

今回使ったスナップボタン
今回使ったスナップボタン

スナップボタン(金属製の頭がついてるやつ)は手芸店などで普通に売ってて、10コ入りで200円弱くらい?これを今使ってるユニクロの手袋に付けてみた。私は iPod nano を操作する時は、右手親指しか使わないのでそこだけ。

iPod対応手袋
作業時間10分くらいで完成

付け外しする必要はないので、スナップボタンは頭側(メス側)だけ付けました。若干、親指に金属があたる違和感があるけど、まあ問題なし。指ほど自然には操作できないけど、実用上は十分です。

スナップボタン使ったことない人のために書いとくと、装着には専用の止め具とカナヅチ(か、木づち)が要ります。止め具はスナップボタンとセットで売ってるのを買うと便利。

興味ある方はぜひお試しあれ。

ただし、手袋に穴あくし、外すのは困難だから安いやつでね。

CakePHPで jQuery Star Rating Plugin を使う。

今回の記事は、CakePHPで jQuery Star Rating Plugin を使いたい人にしか役に立たない情報です。ニッチです。

いまCakePHPでWebアプリケーションを作ってて(趣味です)、スターレイティングを導入しようと思い、いくらか調べて、「jQuery Star Rating Plugin」が良さそうという結論に達した。

で、さっそく実装して試してみてたら、inputのnameがサンプルのままの「star」だと問題なく動作するんだけど、CakePHPのdata[モデル名][カラム名]の形式のnameにすると、表示もPOSTもうまくいかない。

調べてみると、jquery.rating.js は、inputのnameをもとにクラスやなんかを作るんだけど、そのさいに[ ]をエスケープしてる。

//99行目 var n = (this.name || 'unnamed-rating').replace(/\[|\]/, "_");

まずこのエスケープがまずくて、最初の一個めしか置換してくれないので、直す。

//gオプションを追加 var n = (this.name || 'unnamed-rating').replace(/\[|\]/g, "_");

で、値をPOSTするためにhiddenのinputを作ってる。

//111行目 $.rating.groups[n].valueElem = $('<input type="hidden" name="' + n + '" value=""' + (settings.readOnly ? ' disabled="disabled"' : '') + '/>');

ここはエスケープしちゃうとCakePHPで$this->dataでアクセスできないので、エスケープする前の名前にする。

//さっきのnの宣言部からエスケープ前の名前をもってくる $.rating.groups[n].valueElem = $('<input type="hidden" name="' + (this.name || 'unnamed-rating') + '" value=""' + (settings.readOnly ? ' disabled="disabled"' : '') + '/>');

これでテストしたら、表示・挙動・POSTデータいづれも問題なさそうだった。コードを熟読してないので問題あるかもだけど。

・・・とまあ、ここまで書いといて気づいたんだけど、jQuery Star Rating Plugin ってGPL(と MIT License)なんですね。フリーだと思い込んでたよ。Webアプリケーションのソース公開はセキュリティ上問題ありそうだしなあ。同じようなの作るのめんどくさいなあ・・・。Creative Commons や MIT License なんかに比べるとGPLやLGPLって制限厳しいくせに線引きがあいまいすぎて、どうも好きになれない。

ホーム > アーカイブ > 2009年2月のアーカイブ

検索
フィード
メタ情報

ページの上部に戻る