JavascriptのUnexpected token : { の例
var hoge = 1; If (hoge === 1 ){ fnc(); }
これで
If (hoge === 1 ){
この部分の{
にUnexpected tokenエラーがでる。
お分りいただけただろうか・・・
原因:Javascriptのifのiは小文字です。
本当にくだらないとです。 何時間無駄にしたか分りません。 私みたいな残念な人は少ないとは思いますが、同じ悲しみを背負わないように書き記します。
ifを小文字で書いてしまう理由ですが、VBAが原因だと思い当たりました。 最近まで仕事でVBAを使っていたのですが、なにかと大文字始まりです。
みても全く違和感がないので、なかなか私は気づきません。
VBAバージョン
DIm hoge As Long If hoge = 1 Then fnc End If
VBAの経験があってJavascriptを触る方は、他にもNewやらElse、比較演算子について気をつけなければいけません。 そもそもセミコロンがないところからもう・・・ VBAを触っていた頃から思っていましたが、なぜこうVBAは、なぜこうもはっちゃけた文法をしているのでしょうか。 他のメジャーな言語に寄せることは難しかったのでしょうか・・・ もしくは、ExcelでJavascriptをOKにして、APIの形でExcelやらのオブジェクトを扱えるようにしてもいいのではないでしょうか。
軽くググってみたところ、COBOLも大文字ですね。というか、見つけた例は全部大文字で書かれていましたが、COBOLは小文字を書いてはいけないのでしょうか・・・
と思って調べたら、大文字と小文字の区別がなく、昔の慣習で大文字で全てコーディングする人が多いということでした。
思い返すと、ダラダラコードを眺めてミスを見つけようとしていたのが悪かったと思っています。 そのせいで無駄に時間が流れました。 次回からは、しっかり別ファイル作って切り分けを行うなどして、もっと早く見つけられるようにします。
最高に勿体無い時間でしたが、きっと成長に繋がったと信じています。 はぁ
ちなみに、Unexpected token は、「なんか理解できないのが急に出て来てるよ」ということみたいです。 分りにくい原因でよくあるのが、大文字が文字列以外の場所に混じっているパターンみたいです。 次回このエラーが出た際には、全角スペース、やエラーで表示された記号や文字列の全角文字は検索するようにしようと思います。
さくらVPS CentOS 7でMongoDBを試してみる手順書1
さくらVPSにMongoDB ver3.4を試しにインストールしてみた際の手順書です。
インストールはMongoDB ver3.4の公式ドキュメントが参考になっています。
- 前提
- MongoDBのインストール ☆今回
- MongoDBの起動と終了 ☆今回
- MongoDBを動かしてみる
- MongoDBをNode.jsから呼び出してみる
0. 前提
1. MongoDBのインストール
1.1. yumのためのrepoファイルを作成
yum:
パッケージを管理するシステムです。パッケージは、アプリケーションのためのファイルの集まりのことです。yumを使ってアプリケーションのインストールやアップデート等を行うことができます。
yumでインストールできるソフトウェアがWEB上のリポジトリに登録されています。
MongoDBについては、repoファイルを指定の場所に追加してあげることでMongoDBもyumを使ってインストールができるようにします。
$sudo touch /etc/yum.repos.d/mongodb-org-3.4.repo
作成したrepoファイルを編集します。
sudo vim /etc/yum.repos.d/mongodb-org-3.4.repo
以下のように編集します。
[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
vimの上書き保存と終了は、コマンドモードで:wq
です。
1.2. MongoDBのインストール
yumを使用してMongoDBと関連ツールをインストールします。
sudo yum install -y mongodb-org
2. MongoDBの起動と終了
MongoDBを起動してみます。
$sudo service mongod start
MongoDBが正しく起動できたかは、ログファイルで確認できます。
今回は、最新の5行分ログを見てみます。
$sudo tail -n 10 /var/log/mongodb/mongod.log (以下表示結果) 2017-01-17T12:45:20.302+0900 I INDEX [initandlisten] build index on: admin.sy stem.version properties: { v: 2, key: { version: 1 }, name: "incompatible_with_v ersion_32", ns: "admin.system.version" } 2017-01-17T12:45:20.302+0900 I INDEX [initandlisten] building index using bulk method; build may temporarily use up to 500 megabytes of RAM 2017-01-17T12:45:20.304+0900 I INDEX [initandlisten] build index done. scann ed 0 total records. 0 secs 2017-01-17T12:45:20.304+0900 I COMMAND [initandlisten] setting featureCompatibi lityVersion to 3.4 2017-01-17T12:45:20.305+0900 I NETWORK [thread1] waiting for connections on por t 27017
ログの最後の行を見てみると、27017番のポートでMongoDBが受け付けていることがわかります。
デフォルトでは27017番ポートが設定されています。
変更したい場合は、/etc/mongod.confファイルを編集してください。
MongoDBを停止します。
$sudo service mongod stop
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その3
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その1
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その2
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その3
作業全体図
- 前提
- さくらVPSの初期設定
- ポート開放
- node.jsをインストール
- 一番簡単なサンプルサーバの作成 ☆ここ
前回までで、さくらVPS CentOS 7 環境に、node.jsをインストールすることができました。
今回は、hogehogeユーザのホームディレクトリ(/home/hogehoge)に、myappディレクトリを作成し、そこでExpressのチュートリアルの通りに簡単なサーバを作成します。
コマンドやコードの内容はほぼExpressjs.comのとおりとなっています。
より単純にわかりやすく変えてあります。
4. 一番簡単なサンプルサーバの作成
4.1. ディレクトリの作成
hogehogeユーザでホームディレクトリに移動します。
$cd ~
myappディレクトリを作成し、作成したmyappディレクトリに移動します。
$mkdir myapp $cd myapp
4.2. プロジェクトの設定
プロジェクトの初期設定を行います。
$npm init
いくつも質問されますが、全てEnterキーを押してください。
次に、node.jsの一番普及しているフレームワークであるexpressをプロジェクトにインストールします。
npm install express
4.3. Hello worldのコーディング
index.jsファイルを作成します。
$touch index.js
作成したindex.jsにコーディングを行います。 今回は、コーディングの量も多くないため、vimを使用します。
vimの最低限の入力についてはさくらVPS CentOS7の最低限のvi操作を参照してください。
$vim index.js
以下をindex.jsに入力してください。
var express = require('express'); var app = express(); app.get('/', function(req,res){ res.send('Hello World!!'); }); app.listen(3000, function(){ console.log('Example app listening on port 3000!!'); });
上書き保存と終了はvi(vim)のコマンドモードで
:wq
です。
4.3. 動かしてみる
$ifconfig (以下実行結果) eth0: flags.................................... inet ***.***.***.*** netmask .................. (以下略)
eth0の欄にある、inetの値を確認しておいてください。
作成したindex.jsを起動します。
$node index.js
お手元のスマホやパソコンでブラウザを開き、サンプルページにアクセスします。
アドレスは
http://(確認したipアドレス):3000/
です。
Hello World!!と表示されるかと思います。
終わりに
実行していると、コンソールが使えないと思います。
Ctrl + C
同時押しで停止することができます。
今回作成したのはサンプルページなので、動かした後は必ず止めてください。
また、3000番ポートを開放しましたが、セキュリティ上あまりいいことではありません。 テストの必要がなくなりましたら、ポートを閉じてください。
(適宜sudoを先頭につける) $firewall-cmd --remove-port=3000/tcp success $firewall-cmd --permanent --remove-port=3000/tcp success
加えて、今回はHelloWorldページをWeb上から閲覧可能な状態にしましたが、より進んだサンプルページで同じことをするのは大変危険な場合があります。
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その2
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その1
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その2
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その3
作業全体図
- 前提
- さくらVPSの初期設定
- ポート開放 ☆ここ
- node.jsをインストール ☆ここ
- 一番簡単なサンプルサーバの作成
2. ポート開放
※rootユーザでの作業を行わない場合は、適宜コマンドのはじめにsudo
を付け加えてください。
3000番ポートをnode.jsのサンプルページ用に解放します。 そのために、CentOS7のfirewallを設定します。
2.1. ポートの現状確認
$firewall-cmd --list-services dhcpv6-client ★IPv6に必要なサービスが許可されています $firewall-cmd --list-ports 33331/tcp ★[1.4.](http://noboreni.hatenablog.com/entry/2017/01/16/180753)で設定したssh用ポートが解放されています
2.2. 3000番ポート解放
3000番ポートを開放します。
$firewall-cmd --add-port=3000/tcp success $firewall-cmd --permanent --add-port=3000/tcp success
このコマンドでは、再起動後も3000番ポートが解放され続ける設定となります。 ページを公開する必要がなくなった場合には、ポートは閉じてください。
$firewall-cmd --remove-port=3000/tcp success $firewall-cmd --permanent --remove-port=3000/tcp success $firewall-cmd --list-ports 33331/tcp ★ssh用のポートのみ解放
3. node.jsをインストール
node.jsのバージョンを管理するnvmをインストールし、nvmを使ってnode.jsをインストールします。
ここでは、hogehogeユーザのホームにnvmをインストールを行います。
hogehogeユーザでログインしていない場合は、hogehogeユーザに変更してください。
su hogehoge
3.1. nvmのインストール
nvmでは、インストール用のスクリプトを用意していますので、それを使用します。
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
curl:HTTPで対象のコンテンツを取得する うまくいかない場合、最新のurlをgithubで確認してください。
結果、hogehogeユーザのホームディレクトリ(/home/hogehoge)に、.nvmというディレクトリが作成されます。
$cd ~ ★hogehogeユーザのホームディレクトリに移動 $ls -la (.nvmが存在することが確認できます)
bashの設定ファイルを更新します。
$ source ~/.bashrc
nvmのインストールを確認します。
$nvm --version 0.33.0
3.2. node.jsのインストール
ここでは、特に指定をせずに、最新バージョンをインストールします。
$nvm install node
もし、安定バージョンをインストールしたい場合は、
$nvm install stable
としてください。
もし、後々別のバージョンにしたい場合も、nvmを使えば簡単に変更や管理ができますので、ここではどちらでもよいとおもいます 。
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その1
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その1
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その2
さくらVPS CentOS 7 Node.jsのサンプルページを公開してみる手引 その3
さくらVPSを使用して、Node.jsと、フレームワークのExpressを使用した一番簡単なHelloWorldページを作成する手順書です。 初心者がつまずかないで走りきることを第一目標としています。 また、実際にipアドレスを使って別端末からアクセスできることを確認することで、イメージを掴みます。
注意として、DB等が絡んだより複雑なサンプルページなどを本記事で行ったように公開することはより危険です。 「どんなアクセスに対してもHello Worldを返すページを一時的に公開し、確認した後は開放したポートまで閉じる」のは安全だろう、と考えています。 sshへの接続についても、サーバの一時公開を目的としているため、パスワード認証を許可しています。 本格的な使用にあたっては、公開鍵認証の使用とパスワード認証の禁止をおすすめします。
作業全体図
- 前提 ☆ここ
- さくらVPSの初期設定 ☆ここ
- ポート開放
- node.jsをインストール
- 一番簡単なサンプルサーバの作成
0. 前提
1. さくらVPSの初期設定
1.1. CentOS のアップデート
$yum update -y
-y : すべての確認にyesで返答するオプション
1.2. ユーザの追加
ユーザの追加
$useradd hogehoge
※hogehoge : 好きなユーザ名
追加したユーザのパスワードの設定
$passwd hogehoge
sudoコマンドが使えるwheelグループにユーザhogehogeを追加する
usermod -G wheel hogehoge
1.3. SELinuxをOFFにする
SELinuxとは
※2016.1.16現在、SELinuxはデフォルトで無効になっているようです Linuxのセキュリティを強化してくれる機能です。 設定が大変みたいなので、一旦OFFにします。
現在のSELinuxの状態を確認
$getenforce
enforcing : SELinuxがON
permissive : SELinuxによるアクセス制限は無効
disable : SELinuxがOFF
SELinuxがONだった場合にはOFFに変更
$setenforce 0
VPSを再起動したときもSELinuxがONにならないように設定
$ vi /etc/sysconfig/selinux
~中略~ SELINUX=enforcing ★こうなっていた場合は SELINUX=disabled ★このように治す ~中略~
※viの操作については さくらVPS CentOS7の最低限のvi操作
1.3. SSHのポート設定
SSHがデフォルトで使用するポート番号は22番ですが、 セキュリティのため、33000番~60999番の間の適当な番号に変更します。
今回は33331番でSSHのポート番号を設定します。
設定ファイルを編集します。
$vi /etc/ssh/sshd_config
~中略~ #Port 22 ★コメントアウトされたポートを Port 33331 ★このように修正⇒SSHのポート変更 ~中略~ #Protocol 2 ☆コメントアウトされた行を Protocol 2 ☆有効化⇒SSHの新しいプロトコルのみ許可 ~中略~ #PermitEmptyPasswords no ◆コメントアウトされた行を PermitEmptyPasswords no ◆有効化⇒パスワードなしでのログインを無効化 ~中略~
1.4. ファイアーウォールの設定
行うことは以下の2つです 1.4.1. SSHの標準ポート22番を閉じる 1.4.2. SSHの新しいポート33331番を開く
1.4.1. SSHの標準ポート22番を閉じる
$firewall-cmd --remove-service=ssh
$firewall-cmd --permanent --remove-service=ssh
1.4.2. SSHの新しいポート33331番を開く
$firewall-cmd --add-port=33331/tcp
$firewall-cmd --permanent --add-port=33331/tcp
設定を確認します
$firewall-cmd --list-services dhcpv6-client $firewall-cmd --list-ports 33331/tcp
1.5. 言語jの設定
localectl set-locale LANG=ja_JP.utf8
上記のコマンド後、設定結果を確認します。
$localectl SystemLocale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout:jp
1.6. 外部からのssh接続確認
今まで、ブラウザでさくらVPSのコントロールパネルにあるコンソールを使用していたと思います。 ここで、ssh接続の確認を兼ねて、外部からVPSに接続を試してみます。 Windowsでの操作を想定して、TeraTermを使用します。 1.6.1. TeraTermをインストールしてください。
1.6.2. さくらVPSのコントロールパネルの「ネットワーク情報」のIPv4の「アドレス」欄を確認
1.6.3. TeraTermを開き、 ホスト:1.6.2.で確認したIPアドレス サービス:SSH TCPポート:33331 SSHバージョン:SSH2 プロトコル:UNSPEC としてOK 1.6.4. 1.2.で新規追加したユーザ名とパスワードでログイン
以上で、最低限のCentOS7の初期設定は終了です。
考慮漏れや改善案等ございましたら、 ぜひコメントください。
さくらVPS CentOS7の最低限のvi操作
さくらVPS CentOS7の最低限のvi操作について
・困ったらEsc ・コマンドモードと、編集モードを意識する
想定:
目標:
設定ファイルの一連の更新ができる
よくわからなくなったときに、viから脱出できる
ファイルを開く
$vi 開きたいファイルパス
・ファイルパスについて、途中まで入力してTabキーを押すと、入力が楽にできます
- 編集モードに移行する
キーボードIキー
開いた直後は、コマンドモードです。
コマンドモードはファイルを編集することができません。 Iキーを押すと、下に、「-- INSERT--」が表示されます。
- ファイルを編集する
メモ帳の要領で編集できます。
- コマンドモードに移行する
キーボードEscキー
編集モードから、上書き保存やviを終了することができません。 一度コマンドモードに戻る必要があります。
- 上書き保存
コマンドモードで
:w
でEnterキー
- ファイルを閉じる
コマンドモードで
:q
でEnterキー
もしくは、上書き保存をしつつファイルを閉じるには
:wq
でEnterキー
以上で終了です。
以下は編集中によくわからなくなってしまった場合です。
- 間違えて消してはいけない行を消してしまった
上書き保存をしていなければ
キーボードEscキー
でコマンドモードに移行する動作を行った後、
:q!
でEnterキー
で、保存をせずにviを終了してください。
その後、再度開くことで、再度編集することができます。
- なんかviが終了できない
キーボードEscキー
を2回くらい連打した後、
:q!
でEnterキー で保存せずにviを終了することができます
以上が本当に最低限かつ一番簡単なviの操作です。
「なんでモードが別れてるの!?」と思うのですが、
viを慣れた手つきで触れるとカッコイイですよね。
viを拡張したvimというエディタがありますが、
もれなくデキるプログラマっぽく見えるようになるらしいです。
以下、viやvimのより詳しい操作方法の参考例
vi入門 http://www.onetwo.jp/proginfo/pub/unix/vi.htm
名無しのvim使い http://nanasi.jp/