ぷろぐらむおいしいよ

技術ネタを適当に書いていきます。

Aterm病

さて、今回はとあるルータにまつわるお話。

Aterm病?

昔のNEC製の一部のルータを使った経験のある者の間ではいわゆる「Aterm病」と言われる症状が(たぶん)有名である。
その名前の通り、Atermという名前のついた種類のルータで起きる不具合(仕様?)だ。*1
その具体的な症状は、ネットワークが頻繁に切れるというもの。*2

その原因と対策について簡単に記す。

*1:ちなみに私はAterm BR500Vというルータで発症した

*2:最近は改善されてきているようだが

続きを読む

初学者未満向けの数学書

数学書は入門書であっても慣れていないと難しい。
ということで、最初の導入として分かりやすい本を挙げる。*1

レベル的には大学1年生?ぐらい向けのものから

*1:「分かりやすい」と「厳密である」は全然違うので、ちゃんとやるなら専門書を読まなければならない

続きを読む

Stringがnullの時に文字列を追加する

さて、ある変数が何のオブジェクトも参照してないときにメソッドを呼ぼうとしたりするとNullPointerExceptionになる。
その場合は分かりやすいが、"+"を使うときは注意が必要だ。

下記に簡単な例を示す。

public class Main {
	public static void main(String[] args) {
		String s = null;
		s += "hogehoge";
		System.out.println(s); //nullhogehogeが出力される

		String s2 = null;
		s2 = s2.concat("hogehoge"); //ここでエラーになる
		System.out.println(s2);
	}
}

nullなStringに対してメソッドの呼び出しはエラーになるが、"+"で文字列を追加した場合にはエラーにはならず先頭に"null"という文字列が付加される。*1

対処方法

冒頭には"+"に注意と書いたが、Stringに文字列を追加するときには"+"を頻繁に使うので、むしろ初期化のほうで対処したほうがよいと思われる。

標準の書き方は知らないが、*2

String s1 = "";
String s2 = new String();

このどちらかで初期化したほうが安全だと思われる。

もしくは

String s3;

とだけ書いておいて利用時にだけ文字列を代入するようにしても良いかもしれない。

このs3にいきなり

s3 += "hogehoge";

などとしようとすると、これはコンパイルエラーになる。

*1:JDK6で実行しているので、もしかしたら他のバージョンでは違う結果になるかもしれない

*2:知ってる人がいたら教えて欲しいかも、、

隠しファイルもFinderに表示する

Macだとデフォルトでは隠しファイルはFinderに表示されない。
(だからこそ隠しファイルという名前が付いてるのだが。
しかし隠しファイルが表示されないと色々不便なので、表示するようにする。

ターミナルから、

defaults write com.apple.finder AppleShowAllFiles -boolean true

と入力する。

そのあと

killall Finder

でFinderを再起動すると、隠しファイルが表示されるようになる。

Mac OS Xでマウスの速度を改善する

Macの標準設定だとマウスの動きが遅い。
一応「システム環境設定」->「マウス」->「軌跡の速さ」で変えられるものの、最大にしてもやはり遅い。
ということで、ターミナル上からもっと速い速度に設定する。

ターミナルを開いて、

defaults write "Apple Global Domain" com.apple.mouse.scaling -integer xx

と、入力して実行する。*1
xxには指定したい速度を入れる。(自分のところだと3

その後、再起動するか再ログインすると速度が変わる。

*1:-integerを付けないと上手くいかない時がある