本物のロック(?)
1987年、ガンズ・アンド・ローゼズはアルバム「アぺタイト・フォー・ディストラクション」を発表した。セカンド・シングルの「スイート・チャイルド・オブ・マイン」が大ヒットし、ファースト・シングルの「ウェルカム・トゥ・ザ・ジャングル」、サード・シングルの「パラダイス・シティ」もヒットした。
ロバート・プラントは当時のインタビューで、彼らを評して、「最も本物に近い存在」と話していたらしい。続けて、「もう本物はいないんだ」とも(出典は忘れてしまったが、ロッキング・オンか、関係者のラジオ番組か)。
当時、思ったことを今から振り返ると、ロバート・プラントがマジック・ワードを使ったと考えていた。
先日、渋谷陽一さんのワールド・ロック・ナウのロンドン・レポートでは、「レッド・ツェッペリンIV」のリイシュー版レコードの発売が伝えられた。レポーターの児嶋由紀子さんによると、イギリス本国でのレッド・ツェッペリンの評価は、バッハやモーツァルトのレベルだという。
この話を聞いて、ロバート・プラントの「もう本物はいない」発言を思い出した。
大学のとき、音楽美学の授業でモーツァルトの楽曲分析の講義を受けた(曲名は覚えていない)。学問的な音楽の話は門外漢だが、授業の話はある程度理解できた。もうあまり覚えていないが、テーマか、主題か、パーツの分解と、それらによって構成される第一楽章の構造、第二楽章の構造との違い、など。音楽をこんなに論理的に聴いたことはなかったが、その後、レッド・ツェッペリンの曲を聴いたときに、このときの経験を思い出した。意識的にそう考えたわけではなく、気がついたら曲の構造を考えていた。
このような聴き方ができるほかのミュージシャンの曲もあるが、レッド・ツェッペリンの曲は聴き手に強制してくるように感じられる。
ロバート・プラントのいう「本物」は誰か。
ピンク・フロイドもそうかもしれない。ジェフ・ベックは?フランク・ザッパもそうかもしれない。
ビートルズは?ローリング・ストーンズは?
ジェームズ・ブラウンは?プリンスはどうか。
「本物」は、楽曲分析させる曲を作れたから「本物」になったのか。
ロックと分類される楽曲を作ったミュージシャンで、自分が「本物」と確信できるのはレッド・ツェッペリンだけだ。
では、プリンスとレッド・ツェッペリンのどちらが好きかと問われれば、プリンスと答えるだろう。
PHP7でMongoDB:アプリケーション改修編
やっと開発環境の準備ができたので、アプリケーションの改修をしていく。
まあ、MongoDBへのアクセス方法が変わったので、そのあたりを直していく。
参考:
WSL (Ubuntu 16.04 TLS) 内で、PHPから MongoDB を操作する環境を作る | ラボラジアン
【composerのautoloaderを読み込む】
MongoDBへアクセスするところで、composerのautoloaderを読み込んでおく、と。
require '../vendor/autoload.php'; // include Composer's autoloader
Requireは相対パスで指定するので、ファイルの置き場所に気をつけよう。
2011年1月〜8月 全米映画興行収入ランキング
ショウビズ・カウントダウン 2011年9月19日(月)放送分
- No.1 HARRY POTTER AND THE DEATHLY HALLOWS: PART 2(ハリー・ポッターと死の秘宝 PART 2)
累計 3億7059万ドル
- No.2 TRANSFORMAERS: DARK OF THE MOON(トランスフォーマー/ダークサイド・ムーン)
累計 3億4945万ドル
- No.3 THE HANGOVER PART II(ハングオーバー!!史上最悪の二日酔い、国境を越える)
累計 2億5423万ドル
- No.4 PIRATES OF THE CARIBBEAN: ON STRANGER TIDES(パイレーツ・オブ・カリビアン/生命の泉)
累計 2億4026万ドル
- No.5 FAST FIVE(ワイルド・スピード MEGA MAX)
累計 2億983万ドル
- No.6 CARS 2(カーズ2)
累計1億8735万ドル
- No.7 THOR(マイティ・ソー)
累計 1億8103万ドル
- No.8 CAPTAIN AMERICA: THE FIRST AVENGER(キャプテン・アメリカ/ザ・ファースト・アベンジャー)
累計 1億6867万ドル
- No.9 BRIDESMAIDS
累計 1億6806万ドル
- No.10 KUNG FU PANDA 2(カンフー・パンダ2)
累計 1億6426万ドル
11位はRIES OF THE PLANET OF THE APES(猿の惑星:創世記)
expressでpostでundefined
console.logでpostしたデータを確認しようとすると、
undefinedとなってしまうのがなかなか解決しなかった。
にわか知識ではつらい。。。
環境:
Mac OS X 10.6.7
node.js 0.4.8
express 2.3.7
とりあえず、このあたりを参考に:
node.js+expressでPOSTパラメーターを取得する方法 ::ハブろぐ
HugeDomains.com - HideYukiSaito.com is for sale (Hide Yuki Saito)
html(index.htmlという名前で)のform部分はこんな感じ:
<form action="/" method="post"> <input type="text" name="user[name]" /> <input type="submit" value="送信" /> </form>
で、server.jsというファイルを用意して(元ネタは前の記事を参照)、
postの部分は以下のような感じ:
app.use(express.bodyParser()); app.post('/', function(req, res){ console.log(req.body); res.redirect('back'); });
res.redirect('back');
がないと、ブラウザでレスポンスが返ってこなかった。。。
ターミナルを起動して、server.jsを実行。
$ node server.js
(以下が表示、されるようにconsole.logを書いておく。)
Server running at http://127.0.0.1:8124/
ブラウザで、
http://127.0.0.1:8124/
にアクセスし、postしてみると、ターミナルに、
undefined
と表示される。
ググッてみると、
bodyParserがないから、というのがヒットするけど、あるんだけどね。。。
で、
HugeDomains.com - HideYukiSaito.com is for sale (Hide Yuki Saito)
を見直して、
bodyParser()をconfigureで指定したところ、postした中身が表示された。
修正したserver.jsは以下。
// モジュールの読み込み var express = require('express'); // サーバーを作成 var app = express.createServer(); // configure app.configure(function() { app.use(express.bodyParser()); }); // '/'のリクエストハンドラ app.get('/', function(req, res) { res.sendfile('index.html'); }); // post app.post('/', function(req, res) { console.log(req.body); res.redirect('back'); }); // サーバーを起動 app.listen(8124, '127.0.0.1'); console.log('Server running at http://127.0.0.1:8124/');
で、「おれ」とか入力してpostすると、
ターミナルに以下のように表示された。
{ user: { name: 'おれ' } }
express使おうとしら、Error: Cannot find module 'express'
こういうのは、UNIX系のOSを扱い慣れてれば、
それほど悩まなくてもいいのかもしれないけど、
慣れてないので書いておく。
Macだけど。
-
- OS:Mac OS X 10.6.7
- node.js 0.4.7
- express 2.3.7
node.jsの設置は以下を参考に:
http://sakuratan.biz/archives/3101
naveでNode.jsのバージョン管理&イベントループ詳説 (1/3):node.jsでサーバサイドJavaScript開発入門(2) - @IT
エラーにたどり着くまでの手順をざっと。
1. ターミナルを起動。
2. 一般ユーザーのホームディレクトリ下に設置するので、
インストールディレクトリを作成、移動。
$ mkdir nodejs
$ cd nodejs
3. naveをインストール。
$ git clone http://github.com/isaacs/nave.git
~/nodejs/nave
が作成される。
naveを使うと、node.jsの更新、バージョンの切り替えが楽、とか。
4. 最新版のnode.jsをインストール。
$ cd nave
$ ./nave.sh install latest
結構時間がかかった。
5. node.jsを使えるようにする。
$ ./nave.sh use latest
6. バージョンを確認。
$ node -v
v0.4.7
と表示された。
7. 続けて、npmをインストール。
$ curl http://npmjs.org/install.sh | sh
途中で、
Is this OK? enter 'yes' or 'no'
と問われるので、「yes」と入力。
8. サーバー用のディレクトリを作って、example.jsを設置する。
$ cd ~
$ mkdir node_server
$ cd node_server
「node_server」ディレクトリ内にexample.jsを設置。
example.jsの中身は上の参考サイトを参照:
9. example.jsを動かしてみる。
$ node example.js
パスが通ってないので動きません。
(node command not found)
10. .bash_profileにパスを記述して、node.jsのパスを通す。
$ cd ~
vi .bash_profile
以下を記述。
# node.js
NODE_PATH=~/.nave/installed/0.4.7/bin
export NODE_PATH
node.jsの本体の位置を、
「NODE_PATH=」以下に記述。
参考:
11. パスの記述を有効化。
$ source .bash_profile
12. 再度、example.jsを動かす。
$ cd ~/node_server
$ node example.js
ブラウザで、
http://127.0.0.1:8124
にアクセスしてみると、
Hello, World
と表示された。
続いてexample2.jsもやってみてうまくいった(詳細は割愛)。
13. 続いてserver.jsをやってみるので、expressをインストール。
$ cd ~/nodejs/nave
$ npm install experss
以下が表示された。
mime@1.2.2 ./node_modules/express/node_modules/mime
connect@1.4.1 ./node_modules/express/node_modules/connect
qs@0.1.0 ./node_modules/express/node_modules/qs
express@2.3.7 ./node_modules/express
14. server.jsを実行してみる。
$ cd ~/node_server
$ node server.js
で、タイトルのエラーにたどりつく。
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'express'
at Function._resolveFilename (module.js:320:11)
at Function._load (module.js:266:25)
at require (module.js:348:19)
at Object.(/Users/(ユーザー名)/node_server/server.js:2:15)
at Module._compile (module.js:404:26)
at Object..js (module.js:410:10)
at Module.load (module.js:336:31)
at Function._load (module.js:297:12)
at Array.(module.js:423:10)
at EventEmitter._tickCallback (node.js:126:26)
expressがどこにあるかわかんねーよ、
と言われてるんで、
どこにあるか教えてあげないと動いてくれない。
ここで疑問に思ったのが、
-
- expressはどこに入ってるのか?
- node.jsはどこにあるものを見つけてくれるのか?
というあたり。
2点目については、
$ node -e require.paths
で確認できる。
参考:
1点目については、
expressのインストール時に、
express@2.3.7 ./node_modules/express
と出たのを頭の片隅に置いておく。
手順10の、node.js本体の位置を環境設定のところであっさり通り過ぎましたが、
ホームディレクトリ直下には、いつの間にやら、
.nave
.npm
というディレクトリができていた。
node.jsは.naveの下だったので、
.npmの下をさがすと、
~/.npm/express/2.3.7/package/bin
にexpressがあったので、これを.bash_profileに指定してみたけど動かず。
で、2点目の、
$ node -e require.paths
をやってみると、
[ '/Users/(ユーザー名)/.nave/installed/0.4.7/bin',
'/Users/(ユーザー名)/.node_modules',
'/Users/(ユーザー名)/.node_libraries']
と表示。
1行目は、手順10で追加したもの。
2行目、3行目は実在していない。
expressの位置はわからんよね、というのがよくわかった。
ディレクトリ構成とか、コマンドの実行位置とか、よくわからず...。
いろいろと調べて、node.jsのマニュアルのモジュールの最後のところをよく読む。
「Addenda: Package Manager Tips」のところ。
で、また探してみると、
~/nodejs/nave/node_module
にexpressがあったので、
.bash_profileを以下のように編集。
# node.js
NODE_PATH=~/.nave/installed/0.4.7/bin#express
NODE_PATH=$NODE_PATH:~/nodejs/nave/node_modulesexport NODE_PATH
有効化。
$ source .bash_export
で、server.jsがやっと動いた。
そしてその後、node.jsを0.4.8に更新し、
$ node -e require.paths
をやってみると、
[ '/Users/(ユーザー名)/.nave/installed/0.4.8/lib/node',
'/Users/(ユーザー名)/.node_modules',
'/Users/(ユーザー名)/.node_libraries',
'/Users/(ユーザー名)/.nave/installed/0.4.8/lib/node' ]
と出た。うーん。
.bash_profileの中身が書き換えられたわけではないので、
$ source .bash_profile
$ node -e require.paths
で、
[ '/Users/(ユーザー名)/.nave/installed/0.4.7/bin',
'/Users/(ユーザー名)/nodejs/nave/node_modules',
'/Users/(ユーザー名)/.node_modules',
'/Users/(ユーザー名)/.node_libraries',
'/Users/(ユーザー名)/.nave/installed/0.4.8/lib/node' ]
となった。
~/.node_modules
を作って、そこにnpmでモジュールがインストールされるようにしとけばよさげなんだけど、
とりあえずディレクトリは作っておく。
ディレクトリがあれば、その場所にモジュールをインストールしてくれる、
とかだといいけど。。。
あとでほかのモジュールをいれるので、そのときにまた確認。
追記
id:koichikさんのコメントを参考に、mongooseをローカルインストールしてみようとする、
が、またいろいろと壁が。。。
15. nodeのパスをもう1度。
まず、
$ cd ~/nodejs/nave
$ npm install mongoose
で、
bash: npm: command not found
となる。
この時点で、node.jsを0.4.8にしたので、
npmはバージョンごとにインストールしなければいかのか、
と思った、のはただの勘。
npmを再インストールしようと、
$ cd ~/nodejs/nave/
$ curl http://npmjs.org/install.sh | sh
(以下が表示)
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 101 3874 101 3874 0 0 4893 0 --:--:-- --:--:-- --:--:-- 1101 3874 101 3874 0 0 4892 0 --:--:-- --:--:-- --:--:-- 11164
npm cannot be installed without nodejs.
Install node first, and then try again.Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs.PATH=(云云...)
nodeコマンドが認識されないし。。。
「PATH=」の部分に0.4.8のパスはなし。
で、また、.bash_profileを編集。
NODE_PATHではなくて、PATHで指定。
PATH=$PATH:~/.nave/installed/0.4.8/bin
export PATH
で、動くようになった。
16. 「node_server」ディレクトリ以下に、「node_modules」ディレクトリ作成。
$ cd ~/node_server
$ mkdir node_modules
17. npmをnode.js 0.4.8用にインストール。
npmのインストール先は、
~/.nave/installed/0.4.7/lib/node_modules
だった。。。
今回はホームディレクトリ直下で。
$ cd ~
$ curl http://npmjs.org/install.sh | sh
あとは手順7と同じ。
18. mongooseをインストール。
$ cd ~/node_server
$ npm install mongoose
(以下が表示)
mongoose@1.3.7 ./node_modules/mongoose
└── hooks@0.1.6
↓
~/node_server/node_modules/
に「mongoose」ディレクトリが作成された。
2011年1月〜4月 全米映画興行収入ランキング
ショウビズ・カウントダウン 2011年5月9日(月)放送分
- No.1 Rango(ランゴ)
累計 1億1876万ドル
- No.2 Just Go With It
累計 1億228万ドル
- No.3 The Green Hornet(グリーン・ホーネット)
累計 9869万ドル
- No.4 Gnomeo & Juliet(ロミオ&ジュリエット)
累計 9735万ドル
- No.5 HOP(イースターラビットのキャンディ工場)
累計 8260万ドル
- No.6 Battle: Los Angeles(世界侵略:ロサンゼルス決戦)
累計8218万ドル
- No.7 Jastin Bieber: Never say Never
累計 7277万ドル
- No.8 No Strings Attached(抱きたいカンケイ)
累計 7066万ドル
- No.9 Limitless(リミットレス)
累計 6972万ドル
- No.10 Unknown(アンノウン)
累計 6320万ドル
11位はThe Adjustment Bureau(アジャストメント)