カテゴリー : 2015年 6月

[Node.js] MONGOOSE WARNING がでないように stable version を使おう

Node.js + Mongoose のアプリ開発で MONGOOSE WARNING という警告メッセージが表示されたら、 unstable バージョンを利用していると思われるので stable なバージョンを使いましょう。

まず、アプリを起動しようとすると !!! MONGOOSE WARNING !!! と派手に怒られます。

$ node-dev app.js     
 
##############################################################
#
#   !!! MONGOOSE WARNING !!!
#
#   This is an UNSTABLE release of Mongoose.
#   Unstable releases are available for preview/testing only.
#   DO NOT run this in production.
#
##############################################################
 
Error: Cannot find module 'knox'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/bakorer/works/myapp/routes/admin/content.js:5:12)
    at Module._compile (module.js:456:26)
    at Module._extensions..js (module.js:474:10)
    at Object.nodeDevHook [as .js] (/Users/bakorer/.nvm/v0.10.28/lib/node_modules/node-dev/lib/hook.js:43:7)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
[ERROR] 10:45:41 Error

package.json に “mongoose”: “^3.8.13”, と記述されていたので npm install したら Mongoose version 3.9.7 がインストールされておりました。

$ npm list | grep mongoose
├─┬ mongoose@3.9.7 invalid
├─┬ mongoose-file@0.0.2
├─┬ mongoose-paginate@3.1.5
│ └─┬ mongoose@4.0.6
├── mongoose-query-paginate@1.0.1
npm ERR! invalid: mongoose@3.9.7 /Users/bakorer/myapp/node_modules/mongoose
npm ERR! not ok code 0

Mongoose の version を確認して使えそうな stable version に package.json を書き換えて、再度 npm install すれば OK なはず。

$ git diff
 
diff --git a/package.json b/package.json
index e56cf62..6b49881 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
-    "mongoose": "^3.8.13",
+    "mongoose": "3.8.13",

package.json の書き方は下記のサイトが詳しいので、あわせて読んでおくといいかもです。


参考情報

[SSH] パスワード未設定な user で ssh 接続すると公開鍵認証のみでも失敗する

パスワード未設定 user で ssh 接続しようとすると公開鍵認証のみでも失敗してしまうみたいです。

-v オプションをつけて ssh 接続してみると Permission denied (publickey).

ssh your_usernama@123.456.789.123 -v
...
 
debug1: No more authentication methods to try.
Permission denied (publickey).

Permission denied (publickey). が表示されているときはサーバ上の /var/log/secure にログが出ているので確認してみます。

# tail -F /var/log/secure
Jun 28 18:44:57 host sshd[1370]: User your_username not allowed because account is locked
Jun 28 18:44:57 host sshd[1372]: input_userauth_request: invalid user your_username
Jun 28 18:44:57 host sshd[1372]: Connection closed by 123.123.123.123

sshd_config の設定でパスワードを設定していないユーザが ssh でログインできないようになっているようなので、おとなしく user にパスワードを設定します。

passwd your_username

セキュリティ高めるためにも user には最初からパスワード設定しましょう…。


参考情報

[Capistrano] 特定の branch や commit を指定して deploy する

Capistrano では、特定のブランチやコミットを指定してデプロイすることができます。

ブランチ名を指定して deploy する

cap production deploy -S branch="hoge_branch"

リビジョン番号を指定して deploy する

cap production deploy -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993

参考情報

JPEG 画像を Jpegoptim でロスレス圧縮する

Mac で JPEG 画像を Jpegoptim を使ってロスレス圧縮する。

Jpegoptim をインストールする

brew install jpegoptim

JPEG ファイルをロスレス圧縮する

メタデータを全て削除するオプション –strip-all だけ付けて使っています。

jpegoptim --strip-all sample.jpg

現在のディレクトリの JPEG ファイルを一括でロスレス圧縮する

find . -name '*.jpg' -o -name '*.jpeg' | xargs jpegoptim --strip-all -o

参考情報

[Git] リモートから特定のブランチを指定してcloneする

git でリモートから特定のブランチを指定して clone するには -b オプションを付けて branch 名を指定すればいい。

(例) node リポジトリの v0.12 ブランチを clone する

# git clone -b ブランチ名 https://リポジトリのアドレス
git clone -b v0.12 git@github.com:joyent/node.git