カテゴリー : 2014年 6月

[Yeoman] You don’t seem to have a generator with the name chrome-extension installed.

nvm + Yeoman という環境で generator が見つからないというエラーに陥りました。

➜  yo chrome-extension
 
Error chrome-extension 
 
You don't seem to have a generator with the name chrome-extension installed.
You can see available generators with npm search yeoman-generator and then install them with npm install [name].
To see the 0 registered generators run yo with the `--help` option.

yo –help してみてもインストールしたはずの generator が何も表示されない・・・。

➜  yo --help
Usage: yo GENERATOR [args] [options]
 
General options:
  -h, --help     # Print generator's options and usage
  -f, --force    # Overwrite files that already exist
 
Please choose a generator below.

自分のPC環境の Node.js のデフォルトバージョンが v0.10.26 で、今回 Yeoman をインストールしていたのが v0.10.29 で、環境変数 $NODE_PATH の設定が切り替わってないのが原因でした。

echo $NODE_PATH
/Users/bakorer/.nvm/v0.10.26/lib/node_modules
 
➜  echo $NVM_PATH
/Users/bakorer/.nvm/v0.10.29/lib/node

環境変数 NODE_PATH を NVM_PATH を使って、再設定すれば解決です。

export NODE_PATH=${NVM_PATH}_modules
➜  echo $NODE_PATH
/Users/bakorer/.nvm/v0.10.29/lib/node_modules

でも、nvm use で切替えたときに、毎回 NODE_PATH をセットするのは正直メンドイ。

nvm use で一緒に NODE_PATH も切り替えたい。

というわけで、.zshrc に export_node_path と nvmuse 関数を定義しました。

## nvm
if [[ -f ~/.nvm/nvm.sh ]]; then
  source ~/.nvm/nvm.sh
 
  if which nvm >/dev/null 2>&1 ;then
    export_node_path () {
      export NODE_PATH=${NVM_PATH}_modules
    }
 
    nvmuse () {
      nvm use $1
      export_node_path
    }
 
    export_node_path
  fi
fi

これで nvmuse コマンドを使って、Node.js のバージョン切替えと、環境変数 NODE_PATH を一緒に切替えられるようになりました。

➜  ~  node -v
v0.10.26
➜  ~  echo $NODE_PATH
/Users/bakorer/.nvm/v0.10.26/lib/node_modules
 
➜  ~  nvmuse v0.10.29
Now using node v0.10.29
➜  ~  echo $NODE_PATH
/Users/bakorer/.nvm/v0.10.29/lib/node_modules

もっと良い方法ありそうだけど、とりあえずこれで良いかな。


参考情報

Yo doesn't install any generators (nvm, node 0.10.24), yo 1.0.7-pre2 · Issue #125 · yeoman/yo

[JavaScript][BigDecimal] java.lang.RuntimeException: Unknown call signature for obj = new java.math.BigDecimal: object

JavaScript の bigdecimal.js ライブラリを使うときに数値じゃない値でインスタンス生成しようとすると例外が投げられるみたいです。

var bigdecimal = require("bigdecimal");
var obj = {};
 
new bigdecimal.BigDecimal(obj);
// java.lang.RuntimeException: Unknown call signature for obj = new java.math.BigDecimal: object

new bigdecimal.BigDecimal() の引数に渡す値はちゃんとチェックしてあげましょうというお話でした。


参考情報

how do i set a math context? · Issue #1 · iriscouch/bigdecimal.js

[Amazon CloudSearch] [*Deprecated*: Use the outer message field] Validation error for field ‘xxx’: Invalid codepoint 1C

Amazon CloudSearch で検索ワードとしてインポートする JSON データの一部で下記のようなエラーが発生して、インポートできませんでした。

エラーメッセージ

[*Deprecated*: Use the outer message field] Validation error for field 'title_ja': Invalid codepoint 1C

原因のダメ文字は \u001c だったので、これを削除すれば正常に JSON データを読み込ませることが出来ました。

フォーム入力からデータベースに保存された値なのだけど、この文字どうやって入ったのかな・・・?


参考情報

AWS Developer Forums: Which codepoints are disallowed in text …

Guide to Formatting Your Data in SDF for Amazon CloudSearch : Articles & Tutorials : Amazon Web Services

Scalaで正規表現: ユニコードの空白文字29種類にマッチするか試してみた – Qiita

これは備忘録 ASCII文字コード

[JavaScript] java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

JavaScript で浮動小数を計算する npm モジュール bigdecimal.js で、割り算を行う divide メソッド使ったらエラー出た。

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result

割り算の結果が、循環小数になる場合のエラーみたいです。

対応方法としては、循環小数になったときの処理を divide メソッドの第2、第3引数にしていしてあげればOKです。

var bigdecimal = require("bigdecimal");
 
// (1) 割り算の結果が、循環小数になるエラーの例
var one = new bigdecimal.BigDecimal(1);
var three = new bigdecimal.BigDecimal(3);
one.divide(three);
// java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result
 
 
// (2) エラーにならないように対応した例
// 割り算の結果を小数点第3位で四捨五入する場合は下記のような感じ
var HALF_UP = bigdecimal.RoundingMode.HALF_UP();
var result = one.divide(three, 2, HALF_UP);
 
result.floatValue();
// 0.33

ちょっと面倒ですが、厳密に値を扱えるのは良いですね。


参考情報

iriscouch/bigdecimal.js

BigDecimal.divide() 使用時の注意 – 誰も見ませんように(・`ω・´) (`・ω´・)

BigDecimalを使った割り算について – QA@IT

Java BigDecimalで足し算, 引き算, 掛け算, 割り算そして四捨五入する方法 | ホームページ制作のサカエン(墨田区)

[Atom.io] 500 Error Page

Atom.io で Package をインストールしようとしたら、何を検索しても表示されない。

Web で https://atom.io/packages/search?q=node とかキーワード検索すると 500 エラーページが・・・

atom-io-500-error

Package を色々と漁りたかったけど、明日は朝からワールドカップ 日本 vs ギリシャ なので寝ます。