本物のロック(?)

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は相対パスで指定するので、ファイルの置き場所に気をつけよう。

続きを読む

PHP7でMongoDB:環境構築編

10年くらい前に作ったちょっとした社内システムをアップデートすることになった。

はてなダイアリーでこのブログを書いてた頃に作ったものだったかな。

社内サーバーのリプレイスに伴うもので、4年に1回くらいは引越ししてたけど、今回はOSプリインストールのPHPとMongoDBのバージョンが上がってしまって互換性がなくなり、動かなくなってしまった。まあ、PHP7系になってMongoDBにアクセスできなくなってしまったんだけど。

 

この茨の道は記録しておいたほうがいいだろう。

(作業期間は2020年1月から2月)

 

続きを読む

2011年1月〜8月 全米映画興行収入ランキング

ショウビズ・カウントダウン 2011年9月19日(月)放送分

  • No.3 THE HANGOVER PART II(ハングオーバー!!史上最悪の二日酔い、国境を越える)
    累計 2億5423万ドル
  • No.6 CARS 2(カーズ2
    累計1億8735万ドル
  • No.9 BRIDESMAIDS
    累計 1億6806万ドル

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の中身は上の参考サイトを参照:

http://sakuratan.biz/archives/3101


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=」以下に記述。


参考:

Setting up Node.js and npm on Mac OSX | George Ornbo


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

で確認できる。


参考:

Gmane Loom


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のマニュアルのモジュールの最後のところをよく読む。

http://nodejs.jp/nodejs.org_ja/api/modules.html

「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_modules

export 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

だった。。。


参考:
http://pekodeco.jimdo.com/2011/02/23/ubuntu-%E3%81%A7-node-js-%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86/


今回はホームディレクトリ直下で。

$ 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.4 Gnomeo & Juliet(ロミオ&ジュリエット)
    累計 9735万ドル
  • No.5 HOP(イースターラビットのキャンディ工場)
    累計 8260万ドル
  • No.7 Jastin Bieber: Never say Never
    累計 7277万ドル
  • No.10 Unknown(アンノウン)
    累計 6320万ドル

11位はThe Adjustment Bureau(アジャストメント)