Node でのライブラリクラスの書き方

(function(global) {
  "use strict";

  let hoge = "",
      fuga = "";

  class ClassName {
    constructor(_hoge) {
      this.hoge = _hoge === undefined ? false : _hoge;
    };

    functionName () {
    }

  if ("process" in global) {
    module["exports"] = ClassName;
  };  
  global["ClassName"] = ClassName;


})((this || 0).self || global);

あらためて、ふざけた言語だ JavaScript。 本当の本当に最新版は何かは僕も分からないっす。

IE10 以下を切る場合の JavaScript チェックリスト - Qiita

最近の行儀のよい JavaScript の書き方 - Qiita

Node.js : コードの書き方 : typeOf 'aki_mana'

引数を渡さなかった際にデフォルト値を使う場合の注意点 - Qiita

use strict で this がエラーを吐く

タイトルのとおり

ある大きな function の中で vars という変数を定義したとする

"use strict"

/// 大 function
var _vars = "hey!!!";
function something(hello) {
   hoge.fuga(params, function (p) {
      this._vars; /// エラーを吐く
   };
};

みたいなことが起きた。

どう怒られるかというと、

ReferenceError: _vars is not defined

とか言われる。

ES6 のドキュメントとか読んでいても this の扱い方としてはあっているはずなのになー、と思ったら、

"use strict"

/// 大 function
var _vars = "hey!!!";
function something(hello) {
   hoge.fuga(params, (p) => {
      this._vars; /// エラーを吐く
   };
};

という arrow 記述にしたら直った。

記述自体も新しくあわせろやっていうことですね。

個人的には function って書いてある方がある程度読みやすいと思うんだけどな……。

Node のバージョンをあげる

なぜか誰も書いてない気がする系記事。 Babel 使わずにあげたいと思った時は nvm 使えばよい。

nvm on github : nvm/README.markdown at master · creationix/nvm · GitHub

例のごとくバージョンによって違うはずなので、やるときはソース元をきちんと参照してください、、、。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
source ~/.bashrce

nvm が動いたら、

nvm install 4.0
nvm ls
node -v

4.0 の代わりに node と書いておくと自動的に最新版をダウンロードする。

nvm use ???

で使いたいバージョンに切り替え可能。

あとは npm と他のライブラリもアップデート:

npm update -g npm
npm update -g
npm -v

追記: sudo nodeのバージョンが低いままなことが発覚。

$ sudo visudo

で visudo を開き、

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults    env_keep += "PATH"

に。

Terminal を再起動してハッピー。

Managing Node.js Versions with nvm

Node.jsとnpmをアップデートする方法 – Rriver

Raspberry Pi に Node.js をインストールする(nvm利用) | Make | kosakalab

Raspbian ( Raspberry Pi 3 ) をゼロからセットアップする

Raspberry Pi のセットアップの包括的な記事が実はあんまりないことに気づいたのでまとめる。 個人的趣味で最後 Ruby を入れているけれど、違う宗派の方はそちらへ……。

起動まで

公式 ( Raspberry Pi Downloads - Software for the Raspberry Pi ) から Raspbian のイメージをダウンロード、解凍して SD カードに焼く。 焼き方は当然 OS によって違うものの、公式 ( Installing operating system images - Raspberry Pi Documentation ) が丁寧に OS ごとのやり方を提示している。

僕は Windows 10 で焼いたので、Win32DiskImager で SD に焼いておしまい。

あとは Raspberry Pi にディスクイメージを焼いた Micro SD を差し込んだ上で、 * ディスプレイ * キーボード * マウス を USB ポートや HDMI に挿して準備完了。

起動すると自動的に CLI に入る。

user : pi
password : raspberry

でログインできるはず。

設定

いろいろ設定した方がいいのだけれど、メインはシステムと Wi-Fi の設定では。

Wi-Fi

学校で使いたかったので、学校で採用されている eduroam への使い方を解説。 なので、同 eduroam および WPA-EAP 系を使っている人へ。

また、Raspberry Pi 3 以前は Wi-Fi モジュールが内蔵されていないので、 こちら を参照しつつ、そもそも USB に挿した Wi-Fi モジュールが動いているか確認する必要がある。

echo -n パスワード | iconv -t utf16le | openssl md4

でまずはパスワードのハッシュを作成。

sudo vi /etc/network/interfaces

で interfaces の扱いのファイルを開いて、wlan1 とかで不要な設定を適宜削除。 通常は wlan1 はいらないし、wlan0 さえ、

allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

となっていれば大丈夫なはず(ここで dhcp がついていないことに気づかずしばらくはまった)。

そして上記の wpa_supplicant.conf も当然編集する。

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

ファイルの最下部に、

network={
      ssid="eduroam"
      scan_ssid=1
      key_mgmt=WPA-EAP
      eap=PEAP
      identity="ユーザ名"
      password=hash:ハッシュ化されたパスワード
      phase2="MSCHAPV2"
}

( *上記は eduroam 使用の場合 ) と記載して、

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
history -c
sudo reboot
  • おそらく一番最初のコマンドは入力しなくても動くはず

再起動後、無事無線がつながればよし、つながらなければ無限にいろいろとプロトコルを変えて試してみる、、、。 * コンソールの履歴消した方がいいことを最近になって知りました恥

システム
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install zsh vim git lightdm

で人権を確保……。

参考

Mac を普通に使ってたのにキーボードやマウスが動かなくなったとき

Adobe 製品でダメになるキーボード

イラレ使ってる時にしょっちゅうキーボードが動かなくなってイライラしていたところ、どうやら Mouse Keys とやらが動作しているせいらしい、ということが分かった。 Mouse Keys とはマウスをキーボードで操作しよう、みたいな Vim のビジュアルモードみたいな機能。 解除するには Option を5回押す。

ただ、よっぽどのことがない限りそもそも無効にする方が便利。

設定からAccessibility を選択して、 f:id:klee_arc:20160819231455p:plain

Enable Mouse Keys をオフにする f:id:klee_arc:20160819231458p:plain

念のため詳細設定のチェックボックスも全部消した方がよい気がする。 f:id:klee_arc:20160819231501p:plain

それでも Mouse Keys になる場合、

defaults write com.apple.universalaccess useMouseKeysShortcutKeys NO

レジストリ(って Mac の場合は言うのか?)的に解除できる(らしい)。

マウスがいきなりバグる

ときどき起きるけど、シャットダウンとかもできなくなったりするのでウザい。 有線マウスつないだら普通に動くのに無線マウス・トラックパッドが強制シャットダウンでも治らない場合、Bluetooth で勝手にマウスがつながってたり( iMac あるある )、なぞに WiFi のせいで動いてなかったりするので、通信系を全部切ると治ることが結構ある。 この前は WiFi を切ったら止まった(完全に原因不明)。