WebEngine

だらだらと綴る技術系メモ

MacにNode.jsをインストールする

前提条件

  • 2017.2.19現在の情報
  • homebrewインストール済み
  • 現在node.jsが入っていない
  • 黒い画面を操作できる

手法

node.jsをインストールする方法はいろいろあるのですが、今回はnodebrew というものを使います。nodebrewでは複数のnode.jsを切り替えたりして 使うことができます。Rubyのrbenvに近い感じです。node.jsは開発が盛んに行われているので、急な仕様変更 にも対応できるように注意する必要があります。

本題

とりあえずnodebrewをインストールします。

brew install nodebrew

入ったか確認するには、nodebrew -vwhich nodebrewと 入力すれば良いです。

nodebrewが入ったら、次はnode.jsをインストールしていきます。
インストールできるnode.jsは

nodebrew ls-remote

で確認できます。

今回は最新版をインストールしたいと思います。
最新版をインストールするには

nodebrew install-binary latest

と打ち込めば良いです。
特定のバージョンのnode.jsをインストールしたい場合はlatestの部分を v7.1.0のようにすれば良いです。

ちなみに、僕の場合はインストールの際、このようなエラーが出ました。

Fetching: https://nodejs.org/dist/v7.5.0/node-v7.5.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/home/.nodebrew/src/v7.5.0/node-v7.5.0-darwin-x64.tar.gz: No
Warning: such file or directory
                                                                           0.0%
curl: (23) Failed writing body (0 != 941)

参考にさせていただいたサイトに対処法がのっていたので、そのまま採用させていただきました。 こういうのは非常にありがたいですね。(リンクは下にあります)
このようにディレクトリを作成した結果、上手くいきました。

mkdir -p ~/.nodebrew/src

nodebrewに入れたnode.jsのバージョンを確認するには

nodebrew list

と入力します。

下の方がcurrent: noneとなっているはずです。これは、使用するnode.js が選択されていない状態を指します。

nodebrew use  v7.5.0

とすることで使用するnode.jsのバージョンを指定することができます。もう一度nodebrew listと 入力すると、current: noneだった箇所が指定したバージョンになっているはずです。

最後にパスを通します。

echo 'export PATH=$PATH:/Users/user_name/.nodebrew/current/bin' >> ~/.bashrc

隠しファイルである.bashrcに追記を行っています。user_nameの部分は自分のユーザ名を入力しましょう。
本当に追記されたか確認したい場合は

tail -n1 .bashrc

とでも打って確認してみましょう。

ターミナルを起動しなおし、node -vで指定したバージョンが出力されればオーケイです。
なお、Node.jsを入れるとnpmもセットで入ります。
npm -vでバージョンを確認することができます。


2017.3.2追記

ターミナルの調子が悪かったのかどうなのか理由は不明ですが、ターミナルを起動しなおすだけではnodeのパス が通らない現象が起きました。
そのときは、source ~/.bashrcとコマンドを打ち、.bashrc自体を読みなおしてやれば、上手くパス が通りました。

ちなみに、自分の環境では.bash_profilesource ~/.bashrcと追記してあります。
.bash_profile を読み込むと.bashrcも読み込まれる設定というわけです。
なので、環境によっては、パスを通すときの.bashrc.bash_profileに読みかえてもらえてもらえれば、と 思います。


参考


vimのカラースキーマをMolokaiにしただけ

Molokaiが結構良いみたいなので

  • Macのターミナルのvimでやっています(Windowsだとおそらくキツイ)

今までデフォルトのカラースキーマで満足していたのですが、ほかの人のvimを見て「いいな」と思い導入することにしました。
続きを見てもいいですが、僕が参考にした以下のサイトを見れば一発でできると思います。(それだけ簡単だった)
ponkiti’s blog VimのカラースキームをMolokaiに変更する

手順

ターミナルを開いて、以下のコマンドを順に実行します。

$ mkdir ~/.vim
$ cd ~/.vim
$ mkdir colors
$ git clone https://github.com/tomasr/molokai
$ mv molokai/colors/molokai.vim ~/.vim/colors/

.vimという隠しディレクトリを作成し、さらにその中にcolorsというディレクトリをつくります。そこに ネットからもってきたmolokaiをぶちこみます。 続いて.vimrcvimで開きます。(なければ作成) ファイルには以下のように追記します。

syntax on
set t_Co=256
colorscheme molokai

おまけ

なんか短くなってしまったのでvim関連で自分が最近驚いたことをメモしておきます。
:e .と入力するとvim内で現在いるディレクトリのエクスプローラが表示されます。地味に 便利。

参考


今さらながら == と === の挙動の違いをチェック

そもそもコレなんて呼ぶ

PHPjavaScriptで、いつも使っているけど、何て言うのか 覚えていますか?
ネット上とかで毎回見ているけど、意外とスルーしていたりします。
正解は

うーん、会話で使うには長いんですよね。普段は、「イコール1コ抜けてるよ」 とか言っていますね。 (ごめんなさい、そんな状況あんまりなかった)

で、名前のとおり、=== の方が厳しく型をチェックしてくれます。 でも、実際にどんな動きをしているか理解しているのか、と言われたら微妙だということに 気づきました。

挙動チェック

上がjavaScript、下がPHPのコードです。

var str = "1";
var num = 1;

console.log( str == num ); // true
console.log( str === num ); // false
<?php
$str = '1';
$num = 1;

var_dump( $str == $num ); // true
var_dump( $str === $num ); // false

== は文字列を数値に変換してから比較を行います。 === は型変換を行うことなく評価を行うので、 javaScriptPHPともにfalseが返ってきていますね。この挙動を見ただけでも === を使うことの 意味が実感できると思います。

次に、Boolean(boolean)型を見てみましょう。
オペランドの片方がBooleanならば、その論理オペランドはtrueならば1に、そしてfalseならば0に変換さます。
=== ならば、もちろん厳密にチェックしてくれるのでfalseが返って来ます。

console.log( true == 1 ); // true
console.log( true === 1 ); // false
console.log( false == 0 ); // true
console.log( false === 0 ); // false
<?php
var_dump( 1 == true ); // true
var_dump( 1 === true ); // false
var_dump( 0 == false ); // true
var_dump( 0 === false ); // false


javaScriptPHPの違い

javaScriptの方は、最後の2行に注目していただければわかると思います。

console.log( undefined == null ); // true
console.log( undefined === null ); // false
console.log( undefined == "" ); // false
console.log( undefined === "" ); // false
console.log( null == "" ); // false
console.log( null === "" ); // false
<?php
var_dump( null == '' ); // true
var_dump( null === '' ); // false

PHPの方はnullが == で比較した場合、trueになっているんですね。この挙動は最新のPHP7で確認しても 変わっていませんでした。
それでも、 === で比較すれば、ちゃんとfalseが返って来てくれます。
大事なことは、なんでもかんでも === を使わずに == と === を使った場合とで、どういう挙動になるか 考えてプログラムを書くことです。