2011年11月6日日曜日

Windows7でApacheが起動しない

タイトルの通り、Windows7に入れたApache2.2が
The request operation has failed
とかエラーダイアログを吐いて起動しなかったので、原因のメモ。

SEさんや開発者の方には常識だが、こういう場合は、Apache様がお使いになられる80番ポートを他のプログラムがいけしゃあしゃあと勝手に使っていることがほとんど。
例えば、Skypeとかね。
(Skypeのポート番号変更はこちらのブログで紹介されています)

今回も、結局犯人は「Web Deployment Agent Service」というマイクロソフトのWeb配置ツールのサービスで、コイツが偉そうにポート80をListenしていやがった。
こんなツール、入れた記憶はまったくないんだけど、どうやらMicrosoft Visual Web Developer 2010 Expressをインストールした時にセットでインストールされたっぽい。Web配置ツールのくせに本家ポート80を占拠するとは…。

というわけで、コンパネ>サービスで上記のサービスを止めたら無事Apacheが起動。

で、ついでに調べ方のメモ。

どのプログラムがどのポートを使っているか調べる

コマンドプロンプトで、以下のコマンドを実行。
netstat -ano

たくさん表示されて流れちゃう時は、パイプで more に渡すといいよ。
netstat -ano | more

ページ送りは[SPACE]キーでOK。


で、PID(プロセスID)の列を見ると、どのプロセスがポートを使用しているかわかる。
PIDがわかれば、「tasklist」コマンドでイメージ名が分かる。
tasklist /FI "PID eq 4"

ただ今回厄介だったのは、上記の例の通り、PIDが「4」、つまりSystemプロセスだったこと。
詳細は「@IT:Windows TIPS -- Tips:netstatでリッスンしているプロセスを特定する」で詳しく解説されているが、要するに、ポート80を占有しているのは「システムプロセスですよ」としか教えてもらえず、すぐには犯人である「Web Deployment Agent Service」を特定できなかった。
というわけで、上記ではサクっと解決した風に書いたが、実はコンパネ>サービスで、サービス一覧から怪しそうなサービスを停止しては、ポートの状態を確認する、という地道な調査で突き止めた。
(今回は犯人に「Web~」というサービス名が付いていたため、2発目ぐらいで運良く犯人にヒットしてくれた。)

というわけで、「httpd.confの内容も合ってるし、なんで起動しないんだ・・・?」という方は、上記の方法なども試して頑張ってみるといいよ。
あるいは、もっとスマートな方法が合ったら是非教えてくだいませ。

2011年9月30日金曜日

【読書】コトラーのマーケティング3.0

コトラーのマーケティング3.0 ソーシャル・メディア時代の新法則相変わらず今さら感が強いですが、とりあえず読んでみました。
ちょうど一年ほど前に目次だけ立ち読みして「あんまり読む気しないなぁ」と書きましたが、時間がたった今、なおさら「読む必要はそんなになかったかな」という感想。

とは言うものの、普段からTechCrunch JapanとかTechWaveとか、ブログタイムズBLOGとか、あとはFacebook周りの解説ニュース系記事とかその辺りを読んでたら、というのが前提条件で、普段そういう情報に触れてないけど「最近のマーケってどうよ?」っていう人、これからマーケティングをかじってみよう、という人は一読しても良いかな、と思います。

体系的に非常によくまとまっているとは思いますが、ここまで重厚感をもって小難しくしなくても、ロングエンゲージメントとかを読んでおけばサクっと大事なとこは掴めるんじゃないかと感じました。

発刊当時に読んでいれば「これからの教科書」ということでインパクトは持てたんでしょうが(そして、それ自体には大いに価値があることです)、あえて今、現役真っ只中のマーケターが読むほどの内容ではないんじゃないか(Web上の良記事を浴び続けることで事足りるんじゃないか)と思います。


では、なぜわざわざ読んだかというと、もう随分前になるけど「フェイスブックインパクト つながりが変える企業戦略」を読んだ時に、第5章「挑戦する国内企業」を執筆された原裕氏がやたらと「コトラーのマーケティング3.0が云々」と書いていて、もう「コトラーが言ってるからこれが正解!だってコトラーなんだから!コトラーが死ねって言ったら死ぬ!」ぐらいの勢いでコトラー信者だったんで(あくまでボク個人が受けた印象ですよ、あくまでね)、ならば一度読んでおこうかと思った次第(でも気乗りせず、ようやく今読んだ)。
ただ、今までコトラーの本を何冊か読んできて感じていた「いまいち自分にフィットしない感じ」はやはり今回もあって、「よくまとめてあるなぁ」とは思うんだけど特に発見や新しい視点を得られたわけでもなく、サラっと流れ行きました。

ちなみに「フェイスブックインパクトは、全6章でそれぞれ別の人が執筆を担当してるんだけど、発刊のタイミングを考えると非常によくまとまっていて、実際の事例や運用話なんかも詳しく書かれていて、「とりあえずFacebookで何かやれって言われてるんだけど!」とか追い込まれている人なら、サクっと読めて今でも役立つコンテンツなんじゃないかと思います。
(読んだ結果、「Facebookで何かやる」ことが大事なことなのではなく、「繋がりを作る手段としてFacebookが使える」ってことが納得できるんじゃないかと)。

そんなわけで、タイトルではマーケティング3.0としておきつつ、どちらかというとコッチをお勧めする話になってしまいました。
フェイスブックインパクト つながりが変える企業戦略

まぁ、「コトラーの」って大きな文字でタイトルしてる割に、基本はインドネシアのマーケティング・サービス会社、マークプラスのコンサルが基本コンセプトを固めて、その後コトラー先生登場、って感じなので、ここまでデカデカと「コトラーの」って書くのはちょっと詐欺っぽい気もしますw。(それこそ、マーケティング3.0に反してるww)

とはいえ相変わらずAmazonでの書評は良いようなので、あくまで一意見としてご参考まで。

2011年9月23日金曜日

FBにTimelineの登場でまた滞在時間が長くなりそう…

昨夜(正確には今日の午前2時~3時頃)、マーク・ザッカーバーグがf8でFacebook新機能の発表を行っていたので、眠い目をこすりながliveStreamで見た。

英語はさっぱりなので部分的にしかわからなかったし、そもそも途中で寝落ちしたので新プロフィール機能「Timeline」についてしかボクはまだ理解できてないけど、それだけでも十分に「楽しくなりそう」な機能だと思った。

というわけで、発表を見て、一晩寝て、今の感覚を書いておこう。

そもそもボクはFacebook上では「もともとお付き合いのある、あった人」を前提に友達関係を作っているので(例外的に、アカウント登録時の2008年、まだ周囲が誰もやってなかった頃に友達申請してきてくださった方々とは面識はないけど)、基本的に現実の世界における友人・知人との関係図をそのまま持ち込んで、交流を維持、あるいは深めることができている。
その関係性のイメージは、こんな感じ。
この図で、円が重なっているところが、ボクが友人・知人について「知っている」部分、重なっていないところは「知らない」部分。

Facebook以前

例えばボクは友人A君が”努力家で、でもちょっと天然で、口数は多くないけど口を開くとオモシロイことを言う”ということは知っているけど、”仕事場でどんな人達とどんな風に働いているのか”は知らないし、普段、あるいは休日に何をしているのかはよく知らない。
これがFacebook以前。

Facebook後

Facebookを自分も周囲も使うようになってからは、彼が仕事上、どんなことに興味をもち(「いいね」等のアクティビティ)、どんな人たちとどんな風にやり取りしているのかがコメント欄でのやり取り等でわかるし、休日は好きなアーティストのライブに行ったり、映画を観たりしていることが(一部分とは言え)分かるようになった。しかも、リアルタイムに。
友人が何気なくシェアしたり「いいね」した情報にすごく興味を惹かれたりして、そこから新しい知見が広がったりもする(Realtime Serendipity)。
で、自分も含め、多くの人がこれにハマった。友人たちとの関係はさらに密になり、途切れていた関係も復活したりして、Facebookを開いている時間がどんどん長くなっていった。
図で言うと、重なっている部分の面積が拡大した状態。

Timeline

そしてさらに、Timelineの登場。今までは、繋がりが基本的に「リアルタイム」という断面だけだったが、これが過去にまで広がる。
これによって、「あれ、あの人って昔、京都に住んでたことあるのか」「この人、俺の地元の高校出身か!?」といったことや、「昔バンドやってたんだ?意外!」といった”その人のストーリー”に対してセレンディピティが生まれることになる。しかも、その量がハンパない。
イメージとしては、皆の「知らない部分」がグイーンと伸びる感じ。
で、伸びたら伸びたで、その先でまた新しい繋がりが生まれていくかもしれない。
この図はあくまで”自分を中心にして見た世界”だからこれぐらいの範囲で表すことができるが、この関係図がそれぞれの人にとって存在していることを思うと、考えるだけですごいことになる。

というわけで、話は「Open Graph」へ突入するわけだけど、ここでもう半分寝落ちしていたので、これ以降はよくわかりません(笑)。
しかも、今キャプチャ見たら「Realtime serendipity」ってOpen Graphの件(くだり)で出てきてるし…。


まとめ

  1. Timelineの登場で、ボクらはまたさらにFacebookを開いている時間が長くなりそうだ。
  2. 自分史をユーザー自身に入力させ、シェアさせることへの抵抗感をなくした(とりあえずボクは今のところあまり抵抗はない)Facebookのインフラ感がすげぇ
  3. Timeline以外の新機能について教えてください
#それにしても、プレゼン資料といい、話し方といい、ムービーといい、巧いよなぁ。

2011年9月13日火曜日

WinSCPのディレクトリ自動同期機能で開発効率アップ

RIA系の開発だと、画面定義XMLを専用のデザイナで作って、それをWEBサーバーにアップしてクライアントから動作確認、なんてことをやるケースが多いと思います。
今ウイングアークのSVFをイジくってるんですが、SVFも「SVFX-Designer」っていうGUIの画面デザイナで作成したXMLを、SVFサーバー(帳票サーバー)に配置して動作確認する必要があります。

環境的にはSVFサーバーがLinuxで、Sambaも入れてないしFTPサーバーも立ってない。というわけでWindows上で作った画面定義XMLファイルをLinuxサーバーにコピーするのにWinSCPを使ってGUIの画面でD&Dしてたんですが、これが結構面倒(なんせ開発中なんで頻繁に更新が発生する)。

クライアントPCで所定のフォルダ内に作成したXMLファイルをサーバーの所定のディレクトリに同期させればいいだけなんだけど…

と思ってよくよく調べてみたら、WinSCPのコマンドモードで「keepuptodate」なんていう素晴らしいモードがあることを知りました。
これを使うと、指定したフォルダを監視して、更新があったら同期する、という処理を勝手に行ってくれます。素敵。

WinSCPコマンドモード用スクリプトファイル

例えば、クライアント「C:\Users\user_name\Documents\form」とサーバー「/home/user/form」ディレクトリを同期させたい場合。
テキストエディタで以下のようなスクリプトを書いて、任意の名前で保存。
option batch on
open user@192.168.1.2
keepuptodate C:\Users\user_name\Documents\form /home/user/form
※当然ですが、user@192.168.1.2 のところは、ご自身の使う環境に合わせて変更してください。
user:OSへのログオンユーザー名
IP:サーバーのIPアドレス


WinSCPコマンドモード起動バッチ

WinSCPをコマンドモードで起動するバッチファイルを作成します。
上記のスクリプトを「ドキュメント」フォルダに「winscp_keepuptodate.txt」という名前で保存した場合。
"C:\Program Files (x86)\WinSCP\WinSCP.com" /script="C:\Users\user_name\Documents\winscp_keepuptodate.txt"
※改行されて表示されてると思いますが、改行せず続けて書くこと。
当然ですが、WinSCP.comへのパスはご自身の環境に合わせて変更してください。


以上で準備は完了。あとは作成したバッチを叩くと、コマンドプロンプトな画面が表示されて、何かフォルダに変更が発生する度に自動でそれを検知して同期してくれます。

さらに詳しく知っておきたい人は、こちらからどうぞ。
WinSCPスクリプト入門:コマンドやバッチファイルとの連携による自動処理 - SourceForge.JP Magazine : オープンソースの話題満載

こういうのはほんのちょっとしたことだけど、それだけで異様に作業効率が上がるので、同じような環境で微妙にお困りの方にはオススメです。

2011年9月12日月曜日

EclipseのGAEプラグインからデプロイ出来なくなった

Eclipse(3.6 Helios)で、Google App Engine(GAE)のプラグインを更新後、Eclipseを再起動。
で、これのバグをほんの少し潰したので、さてプラグインからGAEにデプロイしようかと思ったら、デプロイのダイアログで「配置」ボタンがグレーアウトしていて押せない。
よって、デプロイが出来ない…(コマンドラインツールでやれば出来るんだろうけど、めんどうだ)

で、よくよく考えたらGAEのプラグインを更新したあとにEclipseを普通に再起動してしまっていたので、あらためて「eclipse.exe -clean.cmd」を使って起動。
直後はCPU100%になってEclipse自体がフリーズしてしまったが、タスクマネージャーからkillして、もう一度 -clean を実行し、念のためさらにEclipse再起動。

すると、無事に更新された新しいデプロイツールが表示されてサクっとデプロイできた。

やっぱりEclipseでプラグインを更新したら「 -clean」を実行しないとダメなんだね・・・とあらためて痛感。
いつも忘れちゃうけど。

#コメント行のあとに無駄に改行が入ってたバグを修正しました。
  Code 2 html -ソースコードのハイライト表示・共有ツール-