Markdownで書かれたテキストをPDFに変換

表題の通り。

■ 環境

  • markdown-pdf 7.0.0
  • node 4.4.7
  • Mac OSX ElCapitan

■ markdown-pdf

`markdown-pdf`なるものがあるようなのでインストールしてみた。

$ npm install -g

適当なMarkdown記法で書かれたファイルを早速やってみる。

$ markdown-pdf -o test.pdf test.md
(node) warning: possible EventEmitter memory leak detected. 2 end listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at SeriesStream.addListener (events.js:239:17)
    at SeriesStream.Readable.on (_stream_readable.js:680:33)
    at SeriesStream.on (/usr/local/var/nodebrew/node/v4.4.7/lib/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:12:38)
    at SeriesStream.once (events.js:265:8)
    at SeriesStream.Readable.pipe (_stream_readable.js:486:9)
    at SeriesStream.pipe (/usr/local/var/nodebrew/node/v4.4.7/lib/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/series-stream/index.js:22:30)
    at /usr/local/var/nodebrew/node/v4.4.7/lib/node_modules/markdown-pdf/node_modules/stream-from-to/index.js:101:25
    at /usr/local/var/nodebrew/node/v4.4.7/lib/node_modules/markdown-pdf/node_modules/stream-from-to/node_modules/mkdirp/index.js:48:26
    at FSReqWrap.oncomplete (fs.js:82:15)
$

memory leak“とか表示されているが、とりあえず実行はできているようなのでPDFを確認してみると、まぁまぁ満足な結果。

以上。

nodebrewを新規で入れた時の問題?

Macにおいて表題の件。

■ 環境

  • nodebrew
  • Homebrew
  • Mac OSX El Capitan

■ nodebrew

新規Macでの環境構築中、`nodebrew`を使いたくてインストールしたのだが実際に`node`をインストールする時点で躓いてしまった。

まずは`nodebrew`をインストール。

$ brew install nodebrew
  :
==> Caveats
Add path:
  export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew's directories rather than ~/.nodebrew add to your profile:
  export NODEBREW_ROOT=/usr/local/var/nodebrew

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
$

今回は`NODEBREW_ROOT`を設定してホームディレクトリ配下ではなく`/usr/local`配下に配置しようと`.bashrc`に下記のように設定した。

$ cat .bashrc
  :
# nodebrew
export NODEBREW_ROOT=/usr/local/var/nodebrew
export PATH=${NODEBREW_ROOT}/current/bin:$PATH
$

実際に`node`をインストールしようとしたところ下記のように。ちなみにversionはLTSである”v4.4.7“にした。

$ nodebrew install v4.4.7
Fetching: https://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz
Warning: Failed to create the file
Warning: /usr/local/var/nodebrew/src/v4.4.7/node-v4.4.7.tar.gz: No such file
Warning: or directory

curl: (23) Failed writing body (0 != 666)
download failed: https://nodejs.org/dist/v4.4.7/node-v4.4.7.tar.gz
$

ディレクトリを先に作成しなければならないようだ。

$ mkdir /usr/local/var/nodebrew

このディレクトリを作成後に再度実行したものの同じエラーが発生。さらにもう一段階ディレクトリを作成。最終的には下記を実行すれば問題なさそうであった。

$ mkdir -p /usr/local/var/nodebrew/src

と思っていたら…以前にも同じようにはまっていたようである。

nodebrewで初回使用時にエラー

以上。

■ 関連

npm bin

表題のコマンドを知らなかったのでメモ。

■ 環境

  • npm 3.3.12
  • node 5.5.0
  • Homebrew
  • Mac OSX El Capitan

■ npm bin

バイナリがインストールされるディレクトリを取得することができる。

$ npm bin -g
/Users/withsin/.nodebrew/node/v5.5.0/bin
(not in PATH env variable)
$

試しに環境変数”PATH“に入れて実行してみる。

$ export PATH=${PATH}:`npm bin -g`
(not in PATH env variable)
#
$ npm bin -g
/Users/withsin/.nodebrew/node/v5.5.0/bin
$

ちなみに、自身の環境では`nodebrew`を使用しているため、”PATH“は別の場所に通っているのでわざわざ上記ディレクトリに”PATH“を通す必要はない。

以上。

Lambdaで使えるnodeのversion

表題の件について調べたメモ。

■ 環境

  • AWS Lambda

■ node

Lambdaをnodeで実装したいのだが、開発するにあたってローカルのnodeのversionをどれにすれば良いのだろうか?という疑問。

調べてみるとドキュメントに記載されていた。

Lambda実行環境と利用できるライブラリ
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html

nodeは”v0.10.36“だそうである。ローカルの環境をこれに合わせて準備する。

nodebrewを使用しているので下記のようになる。

$ nodebrew install-binary v0.10.36
fetch: http://nodejs.org/dist/v0.10.36/node-v0.10.36-darwin-x64.tar.gz
######################################################################## 100.0%
Install successful
$
$ nodebrew use v0.10.36
use v0.10.36
$
$ node -v
v0.10.36
$

以上。

■ 関連

Node 5.5.0 on Docker

表題の通り。先日は`nodebrew`を使ってローカルのMacに`node`を使える環境にしたが、最近はDocker上で`node`のコンテナを上げる事の方が多かったりする。

■ 環境

  • Node 5.5.0
  • Docker 1.10.0
  • Docker Machine 0.6.0

■ コンテナ取得

コンテナを`pull`する。DockerHubを確認すると、”5.5.0“が最新のようである。”latest“タグも同じ”5.5.0“に付いているようなのでタグは指定しないで取得することにした。

$ docker pull node

取得後は下記の通り。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
node                latest              baa18fdeb577        13 days ago         643 MB
$

■ コンテナ起動

node関連のプロジェクトを置いているローカルマシンのディレクトリに移動し、コンテナを起動する。起動オプションには`-v`でそのディレクトリをコンテナがマウントするようにする。

$ cd ~/work/projcet
$ docker run -ti --rm -v `pwd`:/src node bash
root@f786b01456f2:/# which node
/usr/local/bin/node
root@f786b01456f2:/# node -v
v5.5.0
root@f786b01456f2:/#
root@f786b01456f2:/# which npm
/usr/local/bin/npm
root@f786b01456f2:/# npm -v
3.3.12
root@f786b01456f2:/#

後は起動時のオプションで指定したディレクトリで`node`コマンドを実行すれば、普段と何も変わらず開発ができる。コンテナを起動するときに`–rm`オプションを付けているのでコンテナから一時的にログアウトする時は`Ctrl-P Q`で抜ける必要がある。特に不要であれば通常通りログアウトすればコンテナも削除される。

以上。

■ 関連