スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

VMWare Unkown (Invalid) 問題解決

今まで、てっきりVMのバージョンの違いとばかり思っていた。
VMのマーケットプレイスに行って、CentOSなどのアプライアンスをダウンロードするのだが、多くは、VMを追加した段階で、UnkownあるいはInvalidと表示され、PowerOnをしても、

The server response included one or more errors

などと出てきて、動作できない。
バージョン1で作ったVMファイルは、2では動かせなかったりしたので、アプライアンスが動かないのもそのせいだと思っていた。なので巨大なアプライアンスをDLしてきては、駄目で、と動くものを探して何度もDLを繰り返していた。

今日、久しぶりに、TomcatをLinux上で動かすために、再度VMを使って検証しようとし、CentOS5.2をダウンロードしてきた。
ところが前と同じ問題。

検索しても解決策はヒットしない。似たような問題もあるが、VM1ベースでのことであったりする。

こういうとき奇妙な気持ちに襲われる。
多くの場合、自分が経験している問題は他の人も経験している。だからGoogleればヒットする。特に変わったことをやっているわけではないのだから、当然他の人にもあるはずだと思うが、全く解決策が出ないとはこはいかに。

としているうちに、ようやくみつかった。

http://tech.zsoldier.com/2008/11/vmware-server-20-unknown-invalid-vms.html

.vmxファイルを開いて、.encodingの行を削除すればいいのだ。
それだけでVMからもうUnkownとは言われなくなり、普通に起動できた。

今回の場合、

.encoding = "windows-1252"

とあった。別のを見ると、
.encoding = "Shift_JIS"
とか
.encoding = "UTF-8"
などきわめて(日本で)一般的な名前だ。
OSに依存するので、アプライアンスの作者の環境では問題なかったのだろう。

無事起動し、NetworkはBridgeに変え、dhclientでIP取得。コンソール上からは操作がいまいちだったので、外からSSHで接続。
yumも入っており、rubyとjavaをインストール。
きわめて順調。



スポンサーサイト

きゅうり35cmに

たぶんプロの人から見ると、これは売り物ではないと一喝されるかもしれませんが、
どこまで大きくなるか見守っていたところ、日に日に大きくなり35cmに。
まだまだ大きくなりそうでしたが、傷も付いてきたので潮時かと。
外国のきゅうりって確かもっと大きかったような。
これがベランダで取れるのが面白いところです。
きゅうり1

きゅうり2

Getterの主体は誰か?

他人の書いたソースコードを読んで、?と思ったので一言。

getHogeboke(x);
.....

ん、戻り値を受け取ることなく、getとは何事か。
このメソッドの定義を見れば、

void getHogeboke(String x)
などとある。

にもかかわらず、なぜgetと付いているかというと、このメソッドが、外から値を取ってきて、メンバー変数にセットしているから。
外から値を取ってきて、メンバーに値をセットするなら、setもありではとも言える。

ときどき、get、set絡みで、メソッド名の命名に困惑することがある。

これはプログラマが無知だからでも、要領が悪いからでもない。

最初にgetter/setterを考え出した人間と、オブジェクト指向を考え出した人間が悪い。

GetやSetというのは、あくまでもオブジェクトを利用するクライアント側の視点であり、主語はクライアントだ。クライアントが値をGetするために、そのGetなんちゃらを呼び出すのであり、クライアントがそのオブジェクトに値をセットするために、Setなんちゃらを呼び出すのである。

オブジェクト指向によれば、メソッドとは、オブジェクトに対してメッセージを送ることを意味する。
メッセージを送るというのが???だが、通常、オブジェクトに対する命令もしくは依頼だ。

命令文は英語では、主語なしに、
Stand up!
というが、これは
You stand up.
の主語が省略されたもので、stand upの主語はあくまでもYouだ。つまりオブジェクトがどうするかを命令することだ。
とすると、オブジェクトにGetしろと命令することは、オブジェクトがどこからか、値をGetすればいいのであるから。void getHogeboke()というメソッドは何の問題もない。
英語で、Get the pen.と言ったら、そのペンを取れということであって、よこせと言うことではない。
もしよこせと言うなら、giveHogeboke()という命名にしないといけない。

一方、Getter以外のメソッドの命名は、たいてい主語はオブジェクトになっている。
この矛盾は、Getter、Setterを考え出した人間に責任がある。

とはいえ、いまさら慣習は変えられないので、私の方針としてはこんな感じ。

1.そのオブジェクトが持っているメンバーを返す
 ⇒get

2.そのオブジェクトが外から値を持ってきて、メンバーにセットし、値は返さない。
 ⇒load

3.2に加え、値を返す。
 ⇒loadAndGet
 もしくはgetかloadかどちらか力点が置かれる方。値をセットすることが中心で、返す値は参考程度ならload。キャッシュのためにメンバーにセットし、値を返すことが中心ならget

4.そのオブジェクトが外から値を取ってきて、メンバーにはセットせずに、値を返す。
 ⇒fetch, find, retrieve

あと、引数に渡されたオブジェクトに、値をセットするなら、
void setTo(HogeObject obj, String param1..)

ちなみに、HTTPのメソッドの、GET,POST,PUTなどもクライアントが主語になっているが、これはこれでそれ以上メソッドの数が増える心配もないし、クライアントが主語で統一されているので問題はない。HEADやOPTIONは置いといて。

ブログはWeb2.0にあらず

Web2.0なんて、定義のはっきりしないバズワードなので、どうでもいいのだが、ブログというのは結局日記から抜け出せていない。Web1.0の送り手から受け手への一方向の通信なのだ。

そこにコメントやトラックバックが加わったところで、依然送り手ドリブンであることには変わりない。送り手が記事を書かない限りコメントは書けない。

よく質問はブログのコメントに書いてね、と言われることがあるが、どの記事に書いたらいいのか迷ってしまう。
最新の記事は、質問内容とはまるで関係ないし、質問に関係のある記事は1年も前の記事だとすると、コメントするのに躊躇してしまう。大概のブログでは古い記事へのコメントでも、コメント一覧のトップに出るが、それであっても古い記事へのコメントはなんとなく期限切れの感じがする。

同じことはSNSの日記についても言える。

で、ほしいと思うのは、読者ドリブンの機能だ。いわゆる公開質問の機能がブログやSNSにあったらいいと思う。(というのはかなり昔のブログにも書いたのだが再度強く思う)。

通常質問をする場合、メールを投げることになるが、その内容を一般に公開したいときがある。メールの公開にはメーリングリストというものがあるが、メーリングリストの趣旨はあくまでもそのメーリングリストのテーマにかかわるものだけで、その人を中心にした質問内容には適さない場合が多い。

こういうものがあると、関係のないブログへのコメントからスタートしなくてすむ。そのスレッドを承認制にすれば、ブログ作者の都合の悪い質問は無視すればいい。

また、こういう記事を書いてほしい、こういうことを説明してほしいという読者のリクエストに答えて、ブログ作者が書き始めるというかたちでもいい。

そのようにして、そのブログ作者を話題の中心にしたトピックが展開される。既存のブログ記事と表示をどうするかは、うまくスタイルを分けて見分けがつくようになるといい。

既存のブログでそういうことができるのを私は知らない。
個人が発信する日記、グループが扱う掲示板・コミュニティ・サークルといった発想から抜け出せないから、こういうものを実装することがない。Movable Typeというお偉いさんが始めない限りはどこもやることはないだろう。
自分でやればいいのだがそこまでの気概はない。
プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。