vagrant で "The working directory for Vagrant doesn't exist! This is the specified working directory:"

$ vagrant global-status
b7a606c  default virtualbox running /Users/koya/dev/Showtime/vagrant-nodejs-redis-mongodb
6d6c61f  default virtualbox running /Users/koya/vagrant/vagrant-nodejs-redis-mongodb
d99c027  default virtualbox running /Users/koya/vagrant/showtime/cookbook
4eec0aa  default virtualbox running /Users/koya/vagrant/showtime/showtime
4d2fcf8  default virtualbox running /Users/koya/vagrant/showtime/showtime-chef/cookbook

で使っていないマシンを削除しようと思って

$ vagrant destroy 4eec0aa 
The working directory for Vagrant doesn't exist! This is the
specified working directory:

/Users/koya/vagrant/showtime/cookbook

マシンを手動で削除してしまうとインデックスだけ残るらしい

$ vagrant global-status --prune

これで綺麗になる

手っ取り早くScalaを勉強できるサイト

Scala School
Twitterが公開しているチュートリアル

Simply Scala
A Tour of Scala - an interactive scala tutorial - Scalculator
Scala Tour
playgroundが用意されている。すごい楽。

https://www.playframework.com/documentation/2.3.x/Home
playは公式が優秀


社内技術勉強会でScalaのおすすめポイント解説した - はこべブログ ♨
Scala開発を始める人におすすめのScala関連情報サイトをまとめてみた - Lambdaカクテル
この2つは慣れてきたら見たらいいと思う。

play framework アプリが起動できない

環境

java 1.8.0_25
scala 2.11.4
sbt 0.13.7

対処

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128M; support was removed in 8.0
error: error while loading CharSequence, class file '/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/rt.jar(java/lang/CharSequence.class)' is broken
(bad constant pool tag 18 at byte 10)
Type error in expression
Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore?

とエラーが出て起動ができない場合、プロジェクトフォルダの project/build.properties を編集する。

...
//sbt.version=0.12.2
sbt.version=0.13.7
...

Node.js ファイルのタイプを調べる

ファイルのタイプを知りたかったら、file-typeというモジュールを使う。

file-type

fileTypeにファイルのバッファーを渡して判別します。

ファイルのデータから取得してるので、拡張子を偽装しても正確に取得することができます。

mongoに接続時エラー

環境
ubuntu 14.04



mongo shell 起動時にこんなエラーが出ました。

$ mongo
MongoDB shell version: 2.6.6
connecting to: test
2015-01-07T00:07:08.029+0900 warning: Failed to connect to 127.0.0.1:27017, reason: errno:111 Connection refused
2015-01-07T00:07:08.030+0900 Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at src/mongo/shell/mongo.js:146
exception: connect failed

とりあえずmongo --repairしましょう。

$ mongo --repair

これでもうまくいかない場合は↓

まずは /etc/mongod.conf の dbpath を確認する

# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb


mongoをインストールし直す

Install MongoDB on Ubuntu — MongoDB Manual 2.6.6

そして /etc/mongod.conf の dbpathがインストール前の場所になっているか確認しましょう

そしたら、また

$ mongo --repair

私はこれでうまくいきました♪

Nodejs httpsのpostでデータを送る。

requestモジュールを使って httpsクライアントを作成して、簡単なデータを送信したいと思います。

まずはrequestをインストール

npm i -save request

以下のようにコードを書く

自前の証明書などを使っていて、以下の様なエラーが起きているときは

[Error: DEPTH_ZERO_SELF_SIGNED_CERT]

この一行をrequest.postの実行前に書きましょう。

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";


以上です〜♪

Node.js で JSON を文字列に

JSONを文字列にするためには stringify-object というモジュールを利用します。

インストール

npm install -save stringify-object

使用方法

var stringifyObject = require('stringify-object');

var obj = [
  {
    fuga : [
      'hogehoge',
      'hoge'
    ]
  },
  {
    hoge : [
      'a',
      'i'
    ]
  }
];

var pretty = stringifyObject(obj, {
    indent: '  ',
    singleQuotes: false
});

console.log(pretty);

/*
result:
[
  {
    fuga: [
      "hogehoge",
      "hoge"
    ]
  },
  {
    hoge: [
      "a",
      "i"
    ]
  }
]
*/

stringifyObject(obj, option)

obj : 文字列化したいオブジェクト
option : 文字列化する際のオプション
-indent : インデントに利用する文字 default : '\t'
-singleQuotes: シングルクウォートにするか default : false