asmackでXMPPのPreference情報を取得する
asmack + openfireでチャットについて調査中
相手先の状態(Presence)を取得するには、ユーザーのRosterが登録されていなければならない。Rosterはユーザーの追加を行うことでできるが、通常は一方通行の関係となる(subscribeがfrom, to)。ユーザーが追加されたことは検知できるので、追加された側もPresense.Type.subscribeを相手に送ってあげることで双方向の関係となり、相手のPreferenceの変更をRosterListenerで取得することができる。
openvzで開発環境を作る #4
ブリッジの続き
作成したブリッジにコンテナ用のvethが自動で刺さるよう、以下の設定ファイルを新規で作成します。
#!/bin/bash EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"
openvzで開発環境を作る #3
DMZ環境を用意します。ネットワークは10.0.0.0/24としておき、全てのPCが単一のブリッジにつながるようにしておきます。
まずはホストで以下の設定を行ってリブートします。
"/etc/sysconfig/network-script/ifcfg-br0"(新規作成)
DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=10.0.0.1 NETMASK=255.255.255.0 NETWORK=10.0.0.0 ONBOOT=yes
これでリブートすると、br0インターフェイスが見えるはず。
#ifconfig br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::488c:fbff:fef0:31ff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:800 (800.0 b)
ルーティングテーブルにも10.0.0.0/24は全てbr0にいくようになっています。
#route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.0.0 * 255.255.255.0 U 0 0 0 br0 192.168.11.0 * 255.255.255.0 U 0 0 0 wlan0 link-local * 255.255.0.0 U 1003 0 0 wlan0 link-local * 255.255.0.0 U 1005 0 0 br0 default buffalo.setup 0.0.0.0 UG 0 0 0 wlan0
CentOS 6.3に古いUSB無線LANを導入
古いパソコンにCentOS 6.3をいれたまではよかったけど、USB無線LANの導入に手こずったので備忘録的にブログに記録
[状況]
OS: CentOS 6.3 (minimam)
無線LAN: WLI-U2-KG54 (Buffalo)
[記録]
- 普通にCentOSを導入。yumでモジュールを最新にする。
- yumで"wireless-tools"をインストール
- こことかここを見ながら導入。DHCPサーバからIPを取得するところまではいけたものの次のようなエラーがずっと出る。
phy0 -> rt2500usb_set_device_state: Error - Device failed to enter state 3 (-16). phy0 -> rt2x00lib_autowakeup: Error - Device failed to wakeup.
- このページを見て"iwconfig wlan0 power off"で直るとかかれていたので、入力したら直った。
Javaで現在実行中のメソッドの情報を取得する方法
Javaで実行中のメソッドの情報は、旧来は次のような方法が用いられていた。
String methodName = new Throwable().getStackTrace()[0].getMethodName()
しかしこれはパフォーマンス的にはあまりいい方法ではないし、リフレクションのMethodオブジェクトではないのでその他の情報が取れない。Java 1.5からは次の方法で現在実行中のメソッドのMethodオブジェクトが取得できる。
Method method = new Object(){}.getClass().getEnclosingMethod();
パフォーマンス的にどうかはわからないが、Methodオブジェクトが取得できるのはいいと思う。
openvzで開発環境を作る #2
[]開発環境用のマシンにcentos 6を入れる。限られたリソースを有効に使いたいので、CentOS-6.x-i386-minimal.isoを使ってインストールする。ここでインストールしたOSはOpenVZのホストであり、かつクライアント環境、開発環境、テスト環境を結ぶルーターでもある。
minimalだと特に何も聞かれずにインストールが進む。インストールが完了してrootでログインができたら、次の作業を行う。
- ネットワークの設定
"/etc/sysconfig/network-script/ifcfg-eth0"ファイルを、次のように編集する。
DEVICE="eth0" BOOTPROTO="static" IPADDR=192.168.11.101 # ルータと同じネットワークでかぶらないもの NETMASK=255.255.255.0 # ルータと同じ設定 GATEWAY=192.168.11.1 # ブロードバンド ルーターのアドレス HWADDR="(元の値をそのまま使う)" NM_CONTROLLED="yes" ONBOOT="yes" # noからyesに変更 TYPE="Ethernet" UUID="(元の値をそのまま使う)"
- ホスト名の変更
[root@localhost ~]hostname router
- 作業用ユーザの作成
[root@router ~]# useradd kenji [root@router ~]# passwd kenji [root@router ~]# vigr (開いた画面で、wheelという列に追加したユーザー("kenji")を追加する
再起動をするとこのマシンにはリモートで接続できるようになる。以降の作業は、使いなれた日頃使っているマシンからsshで接続して作業する。
openvzで開発環境を作る #1
開発をする時には、開発用のCMSサーバ、Jenkinsサーバ、テストサーバなどもろもろのサービスが必要。でも、一つのサーバの中にサービスを詰め込むと障害があった時に大変なので、なるべく別々のサーバにしたい。
そこで、openvzを使って物理的に一台のマシンに複数のサーバを立てることにする。その覚え書き。
物理構成:
- 普段使っているコンピュータ
- 開発環境用のコンピュータ(数10ギガバイトのHDD, 1〜2Gのメモリ)
- インターネットに出られる環境(ブロードバンドルーターのLAN側のアドレスを覚えておくこと)