TOPに戻る
鬱るんです
躁鬱病のITエンジニア「はまー」が心と体の模様を記した雑記帳。 大手IT企業で心身ともにぼろぼろになり退職した後、ほそぼそと働いたり事業を立ち上げようとして頓挫したり、作業所に通ったり障害者雇用で働いたりと紆余曲折したが、今は無職な毎日。

カテゴリー:IT関連

最近、うちのサーバへの中国からの攻撃が激しくなってきた。前からちょいちょいあったのだが、何か狙われているのか、巡回リストに入れられてしまったのか。

たとえば、Apacheのログだがこんな感じである。

XXX.XXX.XXX.XXX - - [04/Oct/2013:16:46:55 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "https://www.yet-another-world.jp/" "Mozilla/5.0 (Windows NT 5.1; rv:21.0) Gecko/20100101 Firefox/21.0"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:46:56 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 251 "https://www.yet-another-world.jp/" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:46:57 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 244 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:00 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:01 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:02 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 252 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:02 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 247 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:02 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:02 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:03 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:03 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:03 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 247 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:03 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:03 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 247 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:04 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:05 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:06 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:08 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:08 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:08 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/xxx?yy=ZZZ" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:08 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 403 246 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:08 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:09 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 248 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:09 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 259 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:09 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"
XXX.XXX.XXX.XXX - - [04/Oct/2013:16:47:09 +0900] "GET /xxx?yyy=zzz HTTP/1.1" 404 249 "https://www.yet-another-world.jp/xxx.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)"

えっと、マスクし過ぎて何のこっちゃわからんな。

最初の XXX.XXX.XXX.XXX IPアドレスだが、ドメインを調べると中国。この攻撃はいろんなアドレスから来てドメインも違ったりするが、ほとんど中国。たまに「え、こんな国のローカルなプロバイダから?」とか「こんな国の大学から?」というのがあるが、おそらく踏み台にされているのだろう。

そして

GET /xxx?yyy=zzz

の部分は思い切りやばいので全部マスクしているが、よくあるオープンソースのソフトウェアの脆弱性をスキャンしているアクセスである。ここも実に多種多様なものがあるが、今のところうちのサーバでの実害は確認されていない。

一応、WebアプリをインストールしてできるデフォルトのURL名をダミーのものに変更してたり、ある程度自衛策を取っている。他にもいろいろ自衛策を取っているが、セキュリティ上これ以上はシークレットとしておく。

で、こいつらを野放しにしておくのはやばいので、ここ数日tcpdumpで国内のドメイン以外のHTTPパケットを監視して、中国からのアクセスを徹底的にはじくように、iptablesで拒否設定をしていった。
(この国内のドメインを除外するのが、まためんどうなのだが)

この状態でパケットをキャプチャしたところ、

17:50:28.915356 IP YYY.YYY.YYY.252.27209 > www.yet-another-world.jp.http: Flags [S], seq 3660266636, win 5840, options [mss 1414,sackOK,TS val 3107755091 ecr 0,nop,wscale 7], length 0
17:50:28.933282 IP YYY.YYY.YYY.254.36535 > www.yet-another-world.jp.http: Flags [S], seq 2816240399, win 5840, options [mss 1414,sackOK,TS val 3107755093 ecr 0,nop,wscale 7], length 0
17:50:29.036749 IP YYY.YYY.YYY.251.59846 > www.yet-another-world.jp.http: Flags [S], seq 3943735479, win 5840, options [mss 1414,sackOK,TS val 3107755094 ecr 0,nop,wscale 7], length 0
17:50:31.913208 IP YYY.YYY.YYY.252.27209 > www.yet-another-world.jp.http: Flags [S], seq 3660266636, win 5840, options [mss 1414,sackOK,TS val 3107758091 ecr 0,nop,wscale 7], length 0
17:50:31.933704 IP YYY.YYY.YYY.254.36535 > www.yet-another-world.jp.http: Flags [S], seq 2816240399, win 5840, options [mss 1414,sackOK,TS val 3107758093 ecr 0,nop,wscale 7], length 0
17:50:32.043700 IP YYY.YYY.YYY.251.59846 > www.yet-another-world.jp.http: Flags [S], seq 3943735479, win 5840, options [mss 1414,sackOK,TS val 3107758094 ecr 0,nop,wscale 7], length 0
17:50:37.920898 IP YYY.YYY.YYY.252.27209 > www.yet-another-world.jp.http: Flags [S], seq 3660266636, win 5840, options [mss 1414,sackOK,TS val 3107764091 ecr 0,nop,wscale 7], length 0
17:50:37.933830 IP YYY.YYY.YYY.254.36535 > www.yet-another-world.jp.http: Flags [S], seq 2816240399, win 5840, options [mss 1414,sackOK,TS val 3107764093 ecr 0,nop,wscale 7], length 0
17:50:38.019773 IP YYY.YYY.YYY.251.59846 > www.yet-another-world.jp.http: Flags [S], seq 3943735479, win 5840, options [mss 1414,sackOK,TS val 3107764094 ecr 0,nop,wscale 7], length 0
17:50:52.221834 IP XXX.XXX.XXX.197.33121 > www.yet-another-world.jp.http: Flags [S], seq 780497650, win 5840, options [mss 1414,sackOK,TS val 3107778368 ecr 0,nop,wscale 7], length 0
17:50:52.222416 IP YYY.YYY.YYY.254.32617 > www.yet-another-world.jp.http: Flags [S], seq 1913758381, win 5840, options [mss 1414,sackOK,TS val 3107778368 ecr 0,nop,wscale 7], length 0
17:50:52.297975 IP XXX.XXX.XXX.195.18811 > www.yet-another-world.jp.http: Flags [S], seq 4064625666, win 5840, options [mss 1414,sackOK,TS val 3107778368 ecr 0,nop,wscale 7], length 0
17:50:55.224160 IP XXX.XXX.XXX.197.33121 > www.yet-another-world.jp.http: Flags [S], seq 780497650, win 5840, options [mss 1414,sackOK,TS val 3107781368 ecr 0,nop,wscale 7], length 0
17:50:55.224740 IP YYY.YYY.YYY.254.32617 > www.yet-another-world.jp.http: Flags [S], seq 1913758381, win 5840, options [mss 1414,sackOK,TS val 3107781368 ecr 0,nop,wscale 7], length 0
17:50:55.281786 IP XXX.XXX.XXX.195.18811 > www.yet-another-world.jp.http: Flags [S], seq 4064625666, win 5840, options [mss 1414,sackOK,TS val 3107781368 ecr 0,nop,wscale 7], length 0
17:51:01.215081 IP XXX.XXX.XXX.197.33121 > www.yet-another-world.jp.http: Flags [S], seq 780497650, win 5840, options [mss 1414,sackOK,TS val 3107787368 ecr 0,nop,wscale 7], length 0
17:51:01.215658 IP YYY.YYY.YYY.254.32617 > www.yet-another-world.jp.http: Flags [S], seq 1913758381, win 5840, options [mss 1414,sackOK,TS val 3107787368 ecr 0,nop,wscale 7], length 0
17:51:01.270561 IP XXX.XXX.XXX.195.18811 > www.yet-another-world.jp.http: Flags [S], seq 4064625666, win 5840, options [mss 1414,sackOK,TS val 3107787368 ecr 0,nop,wscale 7], length 0
17:51:16.711444 IP YYY.YYY.YYY.253.51768 > www.yet-another-world.jp.http: Flags [S], seq 3986689040, win 5840, options [mss 1414,sackOK,TS val 3107802895 ecr 0,nop,wscale 7], length 0
17:51:16.724150 IP YYY.YYY.YYY.253.51053 > www.yet-another-world.jp.http: Flags [S], seq 156159522, win 5840, options [mss 1414,sackOK,TS val 3107802908 ecr 0,nop,wscale 7], length 0
17:51:19.709377 IP YYY.YYY.YYY.253.51768 > www.yet-another-world.jp.http: Flags [S], seq 3986689040, win 5840, options [mss 1414,sackOK,TS val 3107805895 ecr 0,nop,wscale 7], length 0
17:51:25.719377 IP YYY.YYY.YYY.253.51768 > www.yet-another-world.jp.http: Flags [S], seq 3986689040, win 5840, options [mss 1414,sackOK,TS val 3107811895 ecr 0,nop,wscale 7], length 0
17:51:25.731864 IP YYY.YYY.YYY.253.51053 > www.yet-another-world.jp.http: Flags [S], seq 156159522, win 5840, options [mss 1414,sackOK,TS val 3107811908 ecr 0,nop,wscale 7], length 0
17:51:40.291081 IP XXX.XXX.XXX.198.42042 > www.yet-another-world.jp.http: Flags [S], seq 408652217, win 5840, options [mss 1414,sackOK,TS val 3107826451 ecr 0,nop,wscale 7], length 0
17:51:40.394600 IP XXX.XXX.XXX.195.36872 > www.yet-another-world.jp.http: Flags [S], seq 2416484271, win 5840, options [mss 1414,sackOK,TS val 3107826452 ecr 0,nop,wscale 7], length 0
17:51:43.291114 IP XXX.XXX.XXX.198.42042 > www.yet-another-world.jp.http: Flags [S], seq 408652217, win 5840, options [mss 1414,sackOK,TS val 3107829451 ecr 0,nop,wscale 7], length 0
17:51:43.395736 IP XXX.XXX.XXX.195.36872 > www.yet-another-world.jp.http: Flags [S], seq 2416484271, win 5840, options [mss 1414,sackOK,TS val 3107829452 ecr 0,nop,wscale 7], length 0
17:51:49.291753 IP XXX.XXX.XXX.198.42042 > www.yet-another-world.jp.http: Flags [S], seq 408652217, win 5840, options [mss 1414,sackOK,TS val 3107835451 ecr 0,nop,wscale 7], length 0
17:51:49.412701 IP XXX.XXX.XXX.195.36872 > www.yet-another-world.jp.http: Flags [S], seq 2416484271, win 5840, options [mss 1414,sackOK,TS val 3107835452 ecr 0,nop,wscale 7], length 0
17:53:48.949628 IP YYY.YYY.YYY.225.64464 > www.yet-another-world.jp.http: Flags [S], seq 3227601749, win 5840, options [mss 1414,sackOK,TS val 3106630723 ecr 0,nop,wscale 7], length 0
17:53:51.955147 IP YYY.YYY.YYY.225.64464 > www.yet-another-world.jp.http: Flags [S], seq 3227601749, win 5840, options [mss 1414,sackOK,TS val 3106633723 ecr 0,nop,wscale 7], length 0
17:53:57.944256 IP YYY.YYY.YYY.225.64464 > www.yet-another-world.jp.http: Flags [S], seq 3227601749, win 5840, options [mss 1414,sackOK,TS val 3106639723 ecr 0,nop,wscale 7], length 0
17:56:55.389229 IP XXX.XXX.XXX.239.26606 > www.yet-another-world.jp.http: Flags [S], seq 1910939701, win 5840, options [mss 1414,sackOK,TS val 3107659822 ecr 0,nop,wscale 7], length 0
17:56:58.390876 IP XXX.XXX.XXX.239.26606 > www.yet-another-world.jp.http: Flags [S], seq 1910939701, win 5840, options [mss 1414,sackOK,TS val 3107662822 ecr 0,nop,wscale 7], length 0
17:57:04.381205 IP XXX.XXX.XXX.239.26606 > www.yet-another-world.jp.http: Flags [S], seq 1910939701, win 5840, options [mss 1414,sackOK,TS val 3107668822 ecr 0,nop,wscale 7], length 0
17:58:12.026979 IP YYY.YYY.YYY.226.48274 > www.yet-another-world.jp.http: Flags [S], seq 3200372275, win 5840, options [mss 1414,sackOK,TS val 3106893787 ecr 0,nop,wscale 7], length 0
17:58:15.046810 IP YYY.YYY.YYY.226.48274 > www.yet-another-world.jp.http: Flags [S], seq 3200372275, win 5840, options [mss 1414,sackOK,TS val 3106896787 ecr 0,nop,wscale 7], length 0
17:58:21.034143 IP YYY.YYY.YYY.226.48274 > www.yet-another-world.jp.http: Flags [S], seq 3200372275, win 5840, options [mss 1414,sackOK,TS val 3106902788 ecr 0,nop,wscale 7], length 0

こんな感じ。SYNパケットを送り付けてくるが、ACKを返さないのでこんなことになっている。しかし、アクセスは数秒に1回か、多くて1秒に数回なので、とりあえず様子見。抜き取られて困るような重要な情報はほとんどないのだが、踏み台にされると困る。

 

以前、自分が某研究機関でネットワーク管理の仕事をしていたとき、ときどき不正アクセスの被害を受けたサーバの解析の仕事がまわってきた。あるサーバは、どこかのアジアの国からの「古典的な攻撃」を受けて侵入を許し、オーストラリアの銀行のフィッシングサイトが作られかけていた。確認した限りでは実害は出ていないようだったが、それは、まだフィッシングサイトが完成するより前に、サーバの管理者が異常に気づいてネットワークから切り離し、うちに持ち込んだからである。日頃の監視は非常に重要である。

 

技術の進歩とともに、新しい仕組みが生まれれば、また新しい脆弱性も生まれていく。イタチごっこではあるが、それに食らいついていくしかない。一番のセキュリティーホールは、日本人のセキュリティに対する意識の低さだろう。各省庁のWebサイトなんぞ、何回改ざんされたら気が済むのだろうか。

予告通り、Googleリーダーがサービスを終了した。

何に乗り換えるかいろいろ試してみたが、結局Feedlyに落ち着いた。どうやらそういう人が多いようだ。

と言うわけで、Feedly Followのボタンをこっそり追加してみた。

単なる自己満足の世界。

iPad、使いまくっている。超、超、超、超、超便利~。

いちいちデスクトップPCの前に座る必要がなくなった。ノートPC<なんかよりもよりポータブルで、スマホよりも画面が大きくて使いやすい。Retinaディスプレイの画面の美しさにはぐうの音も出ない。

しかし、難点を挙げるとする、すぐに画面が指紋だらけになること。これはこれでしかたがないか、それともノングレアのフィルムでも貼るか。いやいやノングレアなんて貼ったらせっかくの美しい画面が台無しである。グレアでも指紋がつきにくいものはあるが、そもそもガラケー時代でも、まともにフィルムを貼れた記憶が無い。どうして気泡が入ってしまうのだ。ああ不器用。

他に情報がないか探していたら、「iPad>の画面は対指紋性撥油コーティングが使われているので、フィルムを貼らずに、綺麗に拭き取ればいい」という動画を見つけた。

よくやりがちなのは、ティッシュで拭くこと。ティッシュペーパーはけっこう固いので、汚れが落ちにくい、というよりも汚れを引き伸ばしているような感じになり、さらにコーティングに傷がつきやすいのでお勧めしないとのこと。うう、思い切りティッシュで拭いていたよ。

その次によくある方法として、メガネクリーナーで拭くというもの。ティッシュよりはましだが、これももう一歩。これも試していたよ。

最後に紹介されていたのが、車の洗車用の布。ボディーを傷つけないようにマイクロファイバーでできている。これだと軽く拭くだけで簡単に綺麗にきれいになるし、コーティングを傷つけないで済むという。マイクロファイバーであれば、別に車の洗車用の布でなくてもいいので、家にあったシャムワウで試してみた。あっという間にきれいになった。

よしよしお手入れも簡単にできるようになったし、あとは全体を保護するためにカバーでも買おうかなあ。片手で持って片手で操作していると、ツルッといきそうで怖い。これもお勧めをネットで調べるとするか。

Movable Typeのバージョン5.2β4がリリースされたので、思い切ってアップグレードしてみた。ベータ版に手を出すのは危険なので、今まで避けていたのだが、リリースノートを読むと、記事を書くときのエディタが新しくなったという記述を見て、ちょっと手を出してみた。

実は今までは、どういうコントロールをしているのかわからないが、スマホから記事をアップできなかったのだ。いや、アップできないのでなく、そもそも記事を書くテキストボックスが表示されなかった。標準ブラウザでなく、他のブラウザでも全部同じ結果。これでは記事そのものが書けないのでアップもなにもあったものではない。携帯からブログをアップするときは、メールで指定のアドレスに記事を送ると、その内容が投稿されるというサービスを利用していた。これはこれで手軽でいいのだが、プレビューができなかったりカテゴリを指定できなかぅたりして、やはりいまいちだった。

アップグレードすると、この問題が解消されるかな、と期待して試してみたところ、見事にテキスト入力コントロールが表示され、ブログを書くことができるようになった。ということで、これはスマホから書いている。ちゃんとアップロードできるかな。

最近しんどいことが多いが、頭が働くとき(おもに深夜)には、ブログをちょこちょこ改造している。大幅なデザイン変更を除いては、ほとんど誰も気がつかないような細かいところを少しずつカスタマイズしている。今日は昨日と打って変わって朝から調子がいいので、またカスタマイズしてみた。今までのしょぼい検索ボタンを、GoogleAPIを使ってGoogleカスタム検索に変えてみたのだ。
 
 
いろいろカスタマイズしようとして「ここをこうしたい!」と取り掛かるが、何をどうしたらそうなるのか、なかなかうまくいかずに試行錯誤している。そもそも私はウェブ周りの知識には乏しいのだ。
 
 
思えば自分ははずっとインフラの道を進んできた。大学での研究テーマも「分散OSにおける耐障害性」というようなインフラ的なものだった。就職しても、ずっとインフラの仕事をしてきた。
 
 
大学を卒業して最初の会社に就職した20年ほど前は、「オープン化」「ダウンサイジング」という言葉が飛び交っていた頃で、メインフレームを中心としたシステム構成から、商用Unixで構成されたクライアント・サーバ型オープンシステムへの過渡期だった。Linuxはビジネスに使えるほど成熟しておらず、Windowsもまだサーバとして使うのには、不安定すぎた。そういう中で、Unix用のミドルウェアを開発したり、サーバやネットワーク周りのインフラをずっと担当してきた。
 
 
技術の進歩が早いこのIT業界では、常に新しい知識、スキルを身に付けることが要求される。ついていけなくなったら、その時点で自分は「エンジニア」を名乗る資格はなくなるだろう、そう思っている。
 
 
しかし、業務でしか身につけられない知識、スキルもある。インフラなんてのはその典型で、実際にサーバのクラスタリングやら本格的な仮想化やらルータやスイッチの設定やら、自宅で本を読んだりネットで勉強したところで身にはつかない。まあ、金が余りあるほどあれば、自分でサーバルームを作ってサーバとネットワーク機器をわんさか買えばできなくもないが。
 
 
ずっと仕事をしていないと、頭はどんどん鈍っていく。最近ブログの改造を始めてから、「ウェブ関連の技術だったら家でもいくらでも勉強できるではないか」と今さらながら気がついた。そこで、少しずつブログをカスタマイズすることによって、いろんな知識を断片的に拾い集めていっている。せっかくインフラの知識が役に立って、自宅サーバでブログを書いているのだ。インフラのスキルは自宅では身につかないが、ウェブ関連なら自宅でもできる。少しでも何かを身につけておきたい。そして、頭を使わないと、どんどん脳みそが錆び付いてしまう。
 
 
そんなこんなで、今さらながらいろいろ勉強している。勉強、というよりかは遊んでいる、という方が自分の感覚に近いのだが、DOMやらXHTMLやらAjaxやら、ちゃんと中身まで理解していなかったので、今までいろんなサイトで「これはどうやっているんだろう?」とぼんやりと思っていたのが、「なるほどこの技術を使っているのか」ということがわかるようになってきた。
 
 
このブログはMovable Typeという比較的メジャーなCMS(Content Management System)を使っている。その中で使えるMTMLという言語がある。いや、言語というか、コンテンツを作成する際のテンプレートの中で使える拡張タグであるが、変数も条件文もループも使えるし、基本的なプログラム機能を持ったメタタグといったところか。HTMLの中にMTMLを混ぜ込んでいって、ブログ記事やらアーカイブページなどのテンプレートを作成する。
 
 
Movable Type自体はPerlで書かれているが、その中でPHPのコードが出力されたり、さらにそのPHPでJavascriptをリクエスト時に作成していたりする。MTML、Perl、PHP、Javascriptの文法がごった混ぜである。いちいち文法を見直す。そしてレイアウトの細かい調整ではCSSをいじるのだが、このCSSも本当に初歩的なことしか知らなかったので、いろいろ勉強になっている。IEとChromeでFirefoxで見え方が違ったので、CSSハックも使っているのだが、あまりこういうやり方は好きではないなあ。
 
 
まあ、調子がよいときはできるだけ頭を動かして、新しいことをやってみよう。