アーカイブ「2014年12月」

nicを2本差しのゲートウェイサーバを構築していたのですが、

久しぶりにlinuxとハードウェアではまったので、

記録しておく。

 

【パターン1】

・centos6.6 + pcie x1 Marvel 88E8053

nicは大手量販店で購入したもの。

pcieのボードはこれしかなかった。。

→(結果)ドライバーをダウンロードして(ここから)、ビルドするものの、

ドライバーはロードできているが、nic自体を認識せず。

 

【パターン2】

・centos7.0 + pcie x1 Marvel 88E8053

→(結果)ドライバーのビルド自体失敗。

 

【パターン3】

・ubuntu14LTS + pcie x1 Marvel 88E8053

→(結果)ドライバーのビルド自体失敗。

 

どうやら、このドライバーは、

カーネル3系には対応していないようであった。

 

【パターン4】

・centos7.0 + buffalo LUA3-U2-ATX

→(結果)刺した瞬間うまくいった。

100MBPSだけどね。。

 

最近はlinuxでもかなりハードを認識するから

行けるかと踏んでいたが、

そんなこともないものでした。

 

ちなみに、2本刺しと書きましたが、

1本はオンボードで、こいつは問題なしでありました。(broadcom製)

 

投稿日時:2014年12月19日 14:19   カテゴリー:server   [コメントがあればどうぞ]

よく忘れるので、

virtualboxのネットワーク設定をメモ。

 

【目標】

  • ホストOSは固定IP(192.168.1.10)
  • ゲストOSは固定IP(192.168.1.11)
  • ホストOSとゲストOSは同一ネットワーク(255.255.255.0)
  • 同一ネットワーク内から、ゲストOSへ接続可能
  • ゲストOSは外部へ接続可能(※yumとかできないからね)

 

【手順】

  1. virtualboxのインストール
  2. ホストオンリーアダプターと、wifi(ホストが使っている)をブリッジ
  3. ブリッジしたアダプターのIPをwifiで使っていたものに変更(192.168.1.10)
  4. ゲストOSのネットワーク設定で、「ホストオンリーアダプター」を選択
  5. ゲストOSをインストールし、固定IP(192.168.1.11)を割り当てる

 

起動後、

ホストOSからゲストOSへssh接続で確認。

ゲストOSからpingを発行して、ホスト側(またはインターネット)につながればOK。

 

以上

 

投稿日時:2014年12月11日 15:32   カテゴリー:virtualbox   [コメントがあればどうぞ]

firefoxで開発に役立つプラグインを紹介します。

 

●Firebug

言わずと知れたデバッカー。

chromeよりやりやすいと思うのは自分だけか?

 

●FireMobileSimulator

携帯のUser-Agent等を設定できるシュミレーター。

今はあんまりつかわないけど。

 

●Live HTTP headers

たまにつかう。

ページを遷移しても、ヘッダーをキャプチャーしてくれるので、

Firebugをちょっとだけ補える。

 

●Modify Headers

拡張ヘッダーを送るときに使う。

chromeのDev Http Clientってのより、

ブラウザ感覚で送れてよいかな。

 

●Pearl Crescent Page Saver Basic

たまに画面キャプチャーをとるときに使う。

スクロール先も含めてキャプチャーしてくれるので、

そこがかなりうれしい。

 

投稿日時:2014年12月09日 16:03   カテゴリー:firefox   [コメントがあればどうぞ]

jdk7からjdk8に変えた時、

Runnableのスコープ外で宣言した変数が、

Runnable内でfinalを付けないで参照できた。

 

java7だと、


int numberLocal = 1;

Thread t = new Thread(new Runnable() {

    final int numberThread = numberLocal;

};

java8だと、


int numberLocal = 1;

Thread t = new Thread(new Runnable() {

    int numberThread = numberLocal;

};

のような感じで、java8だとfinalが不要らしい。

ただし、書き換えるとエラーになるので、

暗黙的なfinalということになるようです。

 

投稿日時:2014年12月09日 15:36   カテゴリー:java   [コメントがあればどうぞ]

前回ゲーム仕様を決めたので、

今回は詳細は処理フローを作成します。

以下のような感じを想定しています。

websocket_seq

上記イメージの解説です。

  1. マッチングサーバと接続します。
  2. エントリーに必要な情報をおくります。サーバ側が1人目の受付の場合、「受付完了」という情報を返します。もし、ここで、2人目なら、「成立完了」という情報を2人に返します。
  3. 「成立完了」を受け取ったクライアントは、マッチングサーバから抜けて、対戦サーバ側と接続します。
  4. 対戦サーバと接続したら、「準備完了」を送ります。ここで、2人がそろって初めて「開始」を返します。
  5. ゲーム中は、片側(相手)から送られた情報を、2人に送信します。
  6. 無事ゲームが終わったら(終了判断はクライアントに依存)、1人1人が別々に「終了」を送信し、「終了」を受け取ったら各人で、対戦サーバから抜けます。
  7. もし、ゲームが始まっている状態で、片側(相手)が切断したら、残っている方に「相手が切断した」という情報を送ります。今回の仕様では、相手の勝利となり、相手側は「終了」を送信します。

ポイントは4、6、7です。

4のとき、相手が来ないケースもあるので、制限時間以内に相手が来なかったらどのような情報を返すかをサーバ側で対応する必要があります。

6はなぜ2人に送信しないかというと、下手に2人に送信してしまうと、終了時のクライアントの表示を片側が変更可能となってしまうからです。

7は片方の切断時に、残っている方へ何かしらの通知を行う対応です。

 

pub/subを使わない前提である以上、

上記の操作をすべてメモリ上の変数にて制御をかけます。

(※当然サービスのレベルでは、何かしらのデータベースへ書き込む等がありますが、ここでは考慮しません。)

 

次は、サーバ側のクラス設計を書きます。

 

投稿日時:2014年12月01日 12:43   カテゴリー:java, node.js, websocket   [コメントがあればどうぞ]