Zabbixエージェント実行時のファイアウォール [Zabbix]
WOL 最後の一手 [Windows]
Listからremoveするための正しい実装 [Java]
JavaでListからremove()する際には、equals()をオーバーライドしないと正しい挙動をしない可能性があるという書き込みを見つけました。
これはひとつの変数に、2回以上newして作成したインスタンス格納した場合に注意すべき内容です。
Listにデータを詰めるときには、for文の中でよくこのパターンをやりますよね。
そもそもインスタンス作成の考えをきっちり抑えていないと、この過ちを犯すことになります。私も言われてみて、そりゃそうだと膝を叩きました。
一つの変数を使いまわしても、都度インスタンス生成すればどんどん新たな空間が割り当てられるわけです。equals()をオーバーライドしないでのremove()は本当の削除対象と合致しているか、曖昧になっているわけです。
そこで明示的にマッチさせるため。equals()をオーバーライドするわけです。
public boolean equals(Object o) {
if(o instanceof TargetClass) {
return this.name.equals(((TargetClass)o).name);
} else {
return false;
}
}
案外見逃してそう。
glassfish フォルダ内のファイル一覧表示 [glassfish]
glassfishでフォルダ内のファイル一覧を表示する方法についてです。
config/domin.xml
<configs>
<config name="server-config">
<system-property name="JMS_PROVIDER_PORT" description="Port Number that JMS Service will listen for remote clients connection." value="7676"></system-property>
<http-service>
<access-log></access-log>
<virtual-server network-listeners="http-listener-1,http-listener-2" id="server">
<property name="allowLinking" value="true"></property> ⇒追加
GUIの場合
Configurations⇒server-config⇒Virtual Servers⇒server
Virtual Serversで以下の項目を追加
Name allowLinking
Value true
config/default-web.xml
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
:
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value> ⇒ falseをtrueに変更
</init-param>
これでdocroot下のファイルを参照できます。
docroot/logs
http://hogehoge:8080/logs/
別フォルダの場合はシンボリックリンクを使いました。
例:/tmp/docroot/applogsを参照したい場合
cd docroot
ln -s /tmp/docroot/applogs ./applogs
http://hogehoge:8080/applogs/
注意
URLの最後に / をつけないとエラーになります。
config/default-web.xmlの情報が見つからなくて苦労しました…
動き出したWindows Updateを強制的に中断する [Windows]
問題解決についてはさておき、走り出したUpdateを中断させる方法です。
管理者としてコマンドプロンプトを起動し、以下のコマンドを実行します。
net stop wuauserv
これでUpdateのサービスは停止します。
停止したら、個別の問題を解決していきます。
glassfish 起動エラー [glassfish]
【発生内容】
[root@hogehoge ~]# /opt/glassfish4/glassfish/bin/asadmin start-domain
Bad Network Configuration. DNS can not resolve the hostname:
java.net.UnknownHostException: hogehoge: hogehoge: unknown error
Waiting for domain1 to start ..............................Error starting domain domain1.
The server exited prematurely with exit code 0.
Before it died, it produced the following output:
:
重大: Cannot determine host name, will use localhost exclusively
java.net.UnknownHostException: hogehoge: hogehoge: unknown error
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at com.sun.enterprise.util.net.NetUtils.getCanonicalHostName(NetUtils.java:300)
at com.sun.enterprise.v3.server.SystemTasksImpl.setSystemPropertiesFromEnv(SystemTasksImpl.java:157)
単なる警告であれば、無視してもglassfishは起動するが、重大エラーだと起動しない。
この場合は、/etc/hostsを編集する必要あり。
【対応方法】
編集前
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
編集後
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 hogehoge
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
ネットワークの再起動を忘れず。
[root@hogehoge ~]# /etc/rc.d/init.d/network restart
別テーブルの値で対象テーブルの値を更新 [Oracle]
テーブルの値を更新する際に、別のテーブルからもってくる。oracleでやってみました。
TABLE_A
KEY_A number(10,0)
KEY_B number(10,0)
COL1 varchar2(10)
TABLE_B
KEY_B number(10,0)
COL1 varchar2(10)
TABLE_AのCOL1にTABLE_BのCOL1の値をセットする。
【誤ったやりかた】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_A a,TABLE_B b where a.KEY_B=b.KEY_B);
こんなエラーが発生
SQLエラー: ORA-01427: 単一行副問合せにより2つ以上の行が戻されます
01427. 00000 - "single-row subquery returns more than one row"
副問合せ内のfromに更新対象テーブルを記載してはダメ!
【正しいやり方】
update TABLE_A a
set COL1 = (select b.COL1 from TABLE_B b where a.KEY_B=b.KEY_B);
これで解決しました。
ドメインの種類 [サーバ]
調査する過程を忘れないように備忘録として残します。
今回はドメインの移管についてです。
ドメイン移管で発生する費用はドメインの種類によって異なりますので、種類を整理しておきます。
■属性型JPドメイン名
CO.JP(企業)、AC.JP(大学等)など、組織の種別ごとに区別されたドメイン名。
例:sample.co.jp
■汎用JPドメイン名
個人でも組織でも、日本に住所があれば誰でも登録できるJPドメイン名。
漢字やひらがななどを用いた日本語ドメイン名も登録できる。
例:sample.jp、サンプル.jp
■gTLDドメイン名(gTLD: generic TLD)
いわゆる.comなど。
インターネットで使われるトップレベルドメイン(TLD)のうち、全世界の人々にサブドメイン名を取得する権利があるもの。
ICANNが管理を行い、ICANNが認定した世界中のレジストラと呼ばれる業者が割り当て業務を行っている。
詳細はこちら
■都道府県型JPドメイン名
「○○○.kanagawa.jp」、「○○○.東京.jp」のように、全国47都道府県の名称を含むJPドメイン名。
個人でも組織でも、日本に住所があれば誰でも登録できる。漢字やひらがななどを用いた日本語ドメイン名も登録できる。
例:sample.kanagawa.jp、サンプル.東京.jp
primefaces デフォルト・スタイルシートをカスタマイズ [JSF]
何も設定しないと、こんな感じでスタイルシートがロードされる。
<link type="text/css" rel="stylesheet" href="/(ルート)/faces/javax.faces.resource/theme.css?ln=primefaces-aristo" />
これをまず無効にするにはweb.xmlに以下の内容を追記する。
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>none</param-value>
</context-param>
あとはprimefacesのjarファイルを解凍して、resources下に必要なものをコピー。
cssを好きなようにカスタマイズする。
xhtmlファイル
<link type="text/css" rel="stylesheet" href="resources/primefaces-aristo/theme.css" />
jarファイルのありかはこちら。
Junitでprivateメソッドをてすとする [Java]
テストしたいコード
public class Hoge() {
private String find(String a, int b) {
:
return result;
}
}
これに対するテストコードはこんな感じ。
Hoge hoge = new Hoge();
Method method = Hoge.class.getDeclaredMethod("find", String.class, int.class);
method.setAccessible(true);
String actual = (String)method.invoke(hoge, "key", 2);
デバッグで追っていくとちゃんとfindが呼び出されている。
しかしこのprivateメソッド内で@EJBのJPAを呼び出しているのでが、ここで例外発生。
java.lang.reflect.InvocationTargetException
調査継続中です。