ページ

2014年10月30日木曜日

計算方法を調べるよりもLaTeXで図を作成する方が面倒だった

前回は水平線までの距離を計算する方法を調べたが、せっかく調べたのだからLaTeXで綺麗に印刷したいと思うものである。しかし計算方法を調べるよりもLaTeXで図を作成する方がずっと大変だった。 単純な図だからわざわざInkscapeなどのツールで画像を作成するよりもpicture環境などで直接描画した方がよろしかろうと思ったのだ。しかしこれが大変だった。
適当な直径の円を書きたければ circle コマンドを使えばいいが、直線との接点の座標はどうやって決めたらよいのか、いちいち計算するのがとても面倒だったのだ。しかも図はピクセル単位というかドット単位でしか描画できないのに計算結果はきれいな整数にはなってくれない。見た目ではわからないからだいたいあっていればいいのだけど計算すること自体が手間である。
もっと頭のよい方法があるはずである。ようするに今回は円周上の点との接線をうまく描けばいいのだから円周上の点の座標が綺麗な整数値になってくれる r と x と y の組み合わせを見つければ良いのである。 そこで散々頭を悩ました結果、単に r2 = x2 + y2 としたときの r, x, y の全てが整数になる組み合わせをリストアップすれば済むことに気が付いた。
しかしこのような組み合わせを簡単に見つけるのは難しい、32 + 42 = 52 のような簡単な例ならすぐに思いつくが今回のように割と x と y の比が大きめの組み合わせはどうやって調べたらいいのだろうか。
それで中高生向けの数学の本などを読んでいたら面白いのをみつけた。
隣り合った2つの奇数、たとえば 5 と 7 をとります。このとき、次のような分数の式が成り立ちます。
1   1   12
- + - = --
5   7   35
この分母と分子に現れる 35 と 12 は
352 + 122 = 372
となっています。したがって、35 と 12 を直角にはさむ 2辺とする直角三角形をつくることができます。
同じようなことを、他の隣り合った奇数を使ってできるでしょうか。・・・
--志賀浩二「中高一貫数学コース 数学1」(p125)
なるほどこれは面白い。確かめてみよう。
確かめるために次の python プログラムを用意。
#!/usr/bin/python
from math import *
for i in range(1,101):
 if i % 2 != 0:
  j = i + 2
  a = 2*i+2
  b = i**2 + 2*i
  print " 1     1    {0:3d}".format(a)
  print "--- + --- = ---     {0}^2 + {1}^2 = {2}^2".format(a,b,sqrt(a**2 + b**2))
  print "{0:3d}   {1:3d}   {2:3d} ,".format(i,j,b)
  print
実行結果。
 1     1      4
--- + --- = ---     4^2 + 3^2 = 5.0^2
  1     3     3 ,

 1     1      8
--- + --- = ---     8^2 + 15^2 = 17.0^2
  3     5    15 ,

 1     1     12
--- + --- = ---     12^2 + 35^2 = 37.0^2
  5     7    35 ,

 1     1     16
--- + --- = ---     16^2 + 63^2 = 65.0^2
  7     9    63 ,

 1     1     20
--- + --- = ---     20^2 + 99^2 = 101.0^2
  9    11    99 ,

 1     1     24
--- + --- = ---     24^2 + 143^2 = 145.0^2
 11    13   143 ,

 1     1     28
--- + --- = ---     28^2 + 195^2 = 197.0^2
 13    15   195 ,

~~~中略~~~

 1     1    192
--- + --- = ---     192^2 + 9215^2 = 9217.0^2
 95    97   9215 ,

 1     1    196
--- + --- = ---     196^2 + 9603^2 = 9605.0^2
 97    99   9603 ,

 1     1    200
--- + --- = ---     200^2 + 9999^2 = 10001.0^2
 99   101   9999 ,
ということで、どうやら確からしいので確かめると、
奇数というのは任意の整数 n に対して 2n - 1 となる整数だが、2n - 1 の次の奇数は 2n + 1 である。
先程の式に当てはめると
   1         1       2n + 1 + 2n - 1        4n
------- + ------- = ----------------- = ----------
 2n -1     2n + 1   (2n - 1)*(2n + 1)    4n2 - 1
となり、これは
(4n)2 + (4n2 - 1)2 = 16n4 + 8n2 + 1
つまり
(4n)2 + (4n2 - 1)2 = (4n2 + 1)2
となるので右辺は必ず整数の2乗となるのがわかる。
しかし、次の python プログラムを実行して r2 = x2 + y2 において r , x , y が全て整数となる組み合わせ探すと更にたくさんあることがわかる。
#!/usr/bin/python
from math import *
for x in range(1, 101):
 for y in range(1, 1001):
  if x <= y and sqrt( x**2 + y**2 ) == round( sqrt( x**2 + y**2 ) , 0):
   print '{0}\t{1}\t{2:.0f}'.format(x , y , sqrt(x**2+y**2))
実行結果
3 4 5
5 12 13
6 8 10
7 24 25
8 15 17
9 12 15
9 40 41
10 24 26
11 60 61
12 16 20
12 35 37
13 84 85
14 48 50
15 20 25
15 36 39
15 112 113
~~~省略~~~
35 120 125
~~~省略~~~
99 132 165
99 168 195
99 440 451
99 540 549
100 105 145
100 240 260
100 495 505
100 621 629
こうやって見ると今回は半径130px前後の円を描きたいので 352 + 1202 = 1252 の組み合わせが手ごろな感じがする。 つまり半径125pxの円上の点の座標が x, y ともに整数値になるのは x = 35 , y = 120 または x = 120 , y = 35 の場合とわかる。 これを使えば円の接線の方程式を求める計算の手間が省略できてLaTeXのpicture環境で次のように描画すればよい。
% 35^2 + 120^2 = 125^2
% 135 + 35 =170 , 135 + 120 = 255
\begin{center}
\begin{picture}(270,280)
 \put(135,135){\circle{250}}
 \put(135,135){\line(7,24){35}}
 \put(170,255){\line(-24,7){35}}
 \put(135,135){\line(0,1){130.2}}
 \put(128,127){O}
 \put(128,262){h}
 \put(152,262){d}
 \put(128,197){r}
 \put(157,195){r}
\end{picture}
\end{center}
図の領域を幅270高さ280とすると、picture環境の原点は左下の角なので、ここから座標(135,135)を中心とした半径125の円を描くことにする。 接線と円の接点の座標は(135+35, 135+120)にすればよい。また接線の傾きは -35/120 = -7/24 である。 直角の記号を描きたいなら接線の傾きはわかっているので比較的簡単に求められる。
 %170-12,255+3.5 ,-7/-24, 3.5
 %170-3.5,255-12 ,-24/7, 12
 \put(158,258.5){\line(-7,-24){3.5}}
 \put(166.5,243){\line(-24,7){12}}
というのを追加すればよい。残念ながら全て整数にはならなかったが何も考えずに半径 r を100とか150とか高さ h を 10 とかにしてしまうと接点を計算した時にきれいな整数になることはまずないのだから、それに比べたらずいぶんマシである。

こうして作ったPDFファイルが次のものである。

https://drive.google.com/file/d/0B8A5Lx3UeWQcVHVuMXFqcVFWRHM/view?usp=sharing

これでもう水平線までの距離について悩まなくて済むばかりでなく似たような図を描画するときに円の接線と接点を決めるのが楽になる。

2014年10月28日火曜日

水平線までのおよその距離を計算する方法を調べてみた

大雑把に水平線までの距離を計算したくなったので考えたり調べたりしてみた。
それで計算してみたらだいたいこんな感じになった。


水平線までの距離を d [m] 、目の高さを h [m] として、
地球の半径は地球の円周の長さが 4.0 × 104 [km] だから
 2πr = 4.0 × 104 × 103
      r = 4.0 × 104 × 103 / 2π
        = 2.0 × 107 / π
なので r = 6.37×106 [m] 、地球の直径 2r = 1.27×107 [m] となる。
目の高さ h [m] での水平線までの距離 d [m] は
d2 + r2 = (r + h)2
d = sqrt{ (2r + h) h }
となる。目の高さ h は地球の半径 r に対してとても小さいので (2r + h) の h は実用上は無視できるほど小さくなるので d = sqrt{ 2rh } として問題なし。
数値を入れてみると次の通り。
d = sqrt{ 12.7 × h × 106 } = sqrt{ 12.7 × h } × 10[m]
もっと精度を上げると d = 3568 × sqrt{ h } [m] になるが、実際には大気の屈折でもっと遠くまで見えてしまうらしい。
だから d = sqrt{ 13 × h } × 10[m] で大雑把な計算としては十分なようだ。

2013年2月12日火曜日

久しぶりに JNetHack がやりたくなった。

昔なつかしのJNetHackを調べると Debian Package にはもうないようだ。

自分でコンパイルするの面倒くさいと思いながらも、ないものは仕方がないので、参考URLに書いてある方法でコンパイルしたらできた。

参考URL:
http://rltm9940.blogspot.jp/2011/08/debian-gnu-linux-602squeezejnethack.html

NetHack本体
http://sourceforge.jp/projects/jnethack/downloads/9091/nethack-343-src.tgz/

JNetHackのパッチ
http://sourceforge.jp/projects/jnethack/downloads/30862/jnethack-3.4.3-0.10.diff.gz/

以下手順
必要そうなパッケージを入れる。
# su
# aptitude install bison build-essential flex libncurses-dev

今回はホームディレクトリに入れる。
hoge$ whoami
hoge
hoge$ mkdir ~/nethack
hoge$ cd ~/nethack

nethack-343-src.tgz と jnethack-3.4.3-0.10.diff.gz を ~/nethack に保存。

hoge$ tar zxvf nethack-343.tgz
hoge$ cd nethack-3.4.3
hoge$ zcat ../jnethack-3.4.3-0.10.diff.gz | patch -p1
hoge$ sh sys/unix/setup.sh

hoge$ vi Makefile

PREFIX = /home/hoge/nethack/usr
GAMEUID = hoge
GAMEGRP = hoge


hoge$ vi src/Makefile

# flags for Linux
#   compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include
# LFLAGS = -L/usr/X11R6/lib

hoge$ vi util/Makefile

# flags for Linux
#   compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include
# LFLAGS = -L/usr/X11R6/lib

hoge$ vi include/unixconf.h

#define SYSV        /* define for System V, Solaris 2.x, newer  
#define LINUX   /* Another Unix clone */
#define TERMINFO    /* uses terminfo rather than termcap */
#define TIMED_DELAY     /* usleep() */

hoge$ vi include/config.h

Debianの場合gzipは/usr/bin/gzipに存在しないようだ。

#define DLB     /* not supported on all platforms */
#define COMPRESS "/bin/gzip"    /* FSF gzip compression */
/*# define XI18N*/

hoge$ make all
hoge$ make install
hoge$ cd ~/nethack/usr/games
hoge$ ./jnethack

NetHack, Copyright 1985-2003
         By Stichting Mathematisch Centrum and M. Stephenson.
         See license for details.

NetHack[日本語版], Copyright 1993 - 1996
         By I. Numata , S. Miyashita and N. Hamada.
    for 3.4,  Copyright 2002 - 2008
         By K.Shirakata.


キャラクターの種族,職業,性別,属性を適当に選んでよろしいですか?[ynq]





実行できた。めでたしめでたし。

2012年8月1日水曜日

古い体温計だからか

風邪を引いたっぽいから体温を測ろうと思い長年使っていた電子体温計のスイッチを押しても反応がないので、どうやら電池切れのようだ。しかし精密ドライバーがないので交換できずにいた。

精密ドライバーを用意してふたを外して電池の型番を調べてみた。SR41SWと書いてある。近所のスーパーマーケットではLR41とかは置いてあってもSR41とかは置いてない。SRのSは酸化銀電池を意味するらしいが、Lはアルカリ電池を意味するらしい。形も電圧も似たようなものだから互換性はあるようなのだが、酸化銀電池の方が長持ちらしい。

しかし、どの程度電圧が低下しているのかと思いテスターで測ってみると、1.58[V]もあるね・・・。この電池は1.55[V]のはずなんだが、全然電圧低くなってない。

ということは、電子体温計の方が壊れたのか?

もう20年くらい使っているような気がするのだが、実際いつ製造されたものなのか分からないので調べてみようと型番を検索しても出てこないし・・・。相当古いってことだろうか。

それで電池を入れ直してもう一度スイッチを押してみると、ちゃんと動作した。

36.8℃くらいだから平熱より少し高いな。まだ風邪ちゃんと治ってないな。まだ咳ときどき出るし。

とりあえず興味本位でテスターで電圧測っておいて良かった。無駄な買い物しないで済んだ。

でも動作不安定なのも困るな。しばらく様子見て、やっぱり変だったら体温計を買い換えた方がいいんだろうな。

それはそうと、テスターって便利だな。

2012年7月12日木曜日

平均にも色々あるようだ

統計の教科書を読みながら久しぶりに Common Lispに触れてみる。

平均と言って、普段使っているのは算術平均。

(1 2 3 4 5)

というリストがあるとして、全要素を合計した値を要素数で割れば良い。

> (+ 1 2 3 4 5)
15

> (/ (+ 1 2 3 4 5) 5)
3

リスト (1 2 3 4 5) の算術平均は 3 と出た。

しかし、成長率とか増加率のような比率を平均したい場合には算術平均は使えないので代わりに幾何平均を使う。

(0.1 0.2 0.3 0.4 0.5)

というリストがある場合。めんどうなので各要素に 1 を足しておく。

mapcar が便利。

> (mapcar #'(lambda (x) (+ x 1)) '(0.1 0.2 0.3 0.4 0.5))
(1.1 1.2 1.3 1.4 1.5)

それで要素全部を掛け算する。

> (* 1.1 1.2 1.3 1.4 1.5)
3.6036

このリストが各年の成長率だとしたら 5 年間で約 3.6 倍になるらしい。

それでは平均して 1 年あたり何パーセントずつ成長しているのかを計算するには

算術平均なら

> (/ (+ 1.1 1.2 1.3 1.4 1.5)  5)
1.3

1.3 という数になる。つまり平均30パーセント増。
要素数が 5 で、それぞれ 1.3倍ずつ増えていくのだから 1.3 の 5 乗になるはず。
実際に計算してみると

> (expt 1.3 5)
3.712929

となるので、さっきの 3.6036 とは違う。だから算術平均では駄目。
そこで全要素の積を計算し、要素数 n 個なら n 乗根を出せば良い。

> (expt (* 1.1 1.2 1.3 1.4 1.5) (/ 1 5))
1.2922523

平均して29パーセントの成長率と言える。しかし、各要素に 1 を足さないで (0.1 0.2 0.3 0.4 0.5) のままで同じ計算 (expt (* 0.1 0.2 0.3 0.4 0.5) 0.2) をすると違う結果 0.26 になる。これで平均26パーセントの成長率だと思ってしまうと間違いになるから注意しないといけない。

それから或る区間を往復した場合の平均速度のような場合は調和平均を使う。

60kmの距離を行きは10 [km/h]、帰りは6[km/h]で往復した場合の平均速度は

> (/ (+ 10 6) 2)
8

算術平均で 8 [km/h] としたら間違い。
60kmの距離を10[km/h] の速さで移動したら所要時間は 60/10 = 6 時間、60kmの距離を 6[km/h] の速さで移動したら所要時間は 60/6 = 10 時間、所要時間の合計は 6 + 10 = 16 時間、距離は 60×2 = 120[km] なので、平均速度は 120/16 = 15/2 = 7.5[km/h] となる。

この場合のリストは (10 6) で、要素数が2個しかないけど、要素数が多い場合はやっぱり mapcar が便利

> (setf a '(10 6))
(10 6)
> (list '/ 1 (list '* (list '/ 1 (length a)) (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a))))
(/ 1 (* (/ 1 2) (+ 1/10 1/6)))
> (eval (list '/ 1 (list '* (list '/ 1 (length a)) (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a)))))
15/2
> (/ 15 2.0)
7.5

ちゃんと 7.5 になってる。

与えられた数字のリストを用いて算術平均、幾何平均、調和平均を出力する clisp のプログラムを作ってみようと考え本を読みながら試行錯誤。

とりあえずこんなのができた。

$ cat sample.lisp
#!/usr/bin/clisp
(defun readlist (&rest args)
        (values (read-from-string
                (concatenate 'string "("
                        (apply #'read-line args)
                        ")"))))

(setf a (readlist))
(setf len (length a))
(format t "list:~A, length:~A~%" a len)

(format t "~%arithmetic average:~%" )
(setf b (cons '+ a))
(format t "~A=~F~%" b (eval b))
(setf c (list '/ b len))
(format t "~A=~F~%" c (eval c))

(format t "~%geometric average:~%")
(setf d (cons '* a))
(format t "~A=~F~%" d (eval d))
(setf e (list 'expt d (/ 1 len)))
(format t "~A=~F~%" e (eval e))

(format t "~%harmonic average:~%")
(setf f (cons '+ (mapcar #'(lambda (x) (/ 1 x)) a)))
(format t "~A=~F~%" f (eval f))
(setf g (list '/ 1 (list '* '(/ 1 len) f)))
(format t "~A=~F~%" g (eval g))


$ echo 1 2 3 4 5 | ./sample.lisp
list:(1 2 3 4 5), length:5

arithmetic average:
(+ 1 2 3 4 5)=15.0
(/ (+ 1 2 3 4 5) 5)=3.0

geometric average:
(* 1 2 3 4 5)=120.0
(EXPT (* 1 2 3 4 5) 1/5)=2.6051712

harmonic average:
(+ 1 1/2 1/3 1/4 1/5)=2.2833333
(/ 1 (* (/ 1 LEN) (+ 1 1/2 1/3 1/4 1/5)))=2.189781

2012年5月24日木曜日

嗚呼悲しいショック失望した・・・。

先月頃の新聞で近所の千葉県立現代産業科学館が除染対象に選ばれていることに気がついて「おや?福島からはけっこう距離があるのになんで除染しなきゃいけないんだ?」と不思議に思った。

で、風向きかな、千葉県は意外と汚染されていたようだ。子供を外で遊ばせてはいけないようだ。通学以外での外出は極力控えるべきだ。引越しする程ではなさそうだ。などと思った。

そして、無目的にYouTubeを眺めていると、ふと福島原発関連の動画に気がついて見てみた。

いつものように、「嗚呼、危険なのを知りながら放置し続けた自分を含む全国民の罪だわ。観念してガンに怯えて暮らすしかないんだわ。ガンになっても『ただちに死ぬわけではない』のだから。」などと思っていた。しかし。

http://www.youtube.com/watch?v=GjwQHW78Afs&feature=relmfu

あれ?おや?えーーーー!

ラジオとかでは3号機の爆発がこんなに大きかったなんて聞いてないぞ。

水素爆発って聞いていたけど、映像を見る限り水素爆発であそこまで吹き上げるとは思えない。たぶん本当に即発臨界による爆発だろう。

アメリカが退避勧告してた範囲が大袈裟なのは用心深いからだろうと思っていたのだが、これを見る限りでは妥当だったみたい。

隣の建物から配管をつたって水素が入り込むなんてヘンだなと思いはしたが、政府を信用する事にしていたから、非常にがっかりした。

これは、たぶんチェルノブイリを越えている。

2012年3月31日土曜日

lenny -> squeeze めんどうだった。

ここ数日気分が滅入っていた。

お腹の調子が悪かったと言うのもあるが、Debian lenny なマシンで perl から csv ファイルを扱いたいからって Perl モジュールを aptitude でインストールしようと試みたのだ。

で、なにやらやたらといつもの事だけど依存関係でいろんなパッケージがアップグレードされていくし、なぜかカーネルのバージョンアップもされたりする。

しかし、失敗する。

目的のパッケージがインストールできさえすればいいんだけど、今回は目的のパッケージがインストールされないばかりかシステムに必須と思えるようなコマンドまで消えてしまっている。

嗚呼、さんざん警告を無視し続けてだましだまし使い続けてきたが、もうさすがに限界なのか、X Window System も使えなくなってしまった。かなりまずい。

いろいろ aptitude を試してみたけど駄目だなぁと。というか aptitude が機能しない。

きっと再起動したら正常に起動しなくなっているんだろうなと思いつつも、現状を打開したいので再起動。

嗚呼、やっぱりまともに起動しなくなっていた。

とりあえず initramfs な環境でどうしようかなぁと・・・。どうしようもないから別のカーネルで起動。するとなんとか起動はした。新しいカーネルでは起動できなくなっていたようだ。

そうか、ソフトウェアRAIDで設定したRAID1のディスクが認識できていないようだ。LVMも微妙な感じだ。

嗚呼、困った。再起動前の状態を事前に記録しておけば良かった。元に戻すにしても元がどうなっていたんだっけ?

まぁ、いいや。深く考えない。

とにかく initrd の再作成が必要なようだ。で initrd を再作成したんだけど、そうしたら今度は古いほうのカーネルでも起動しなくなってしまった・・・。嗚呼、困った。

つまり、lenny から squeeze へのバージョンアップがいつの間にか進んでいて、あまりアップグレードしたくなかったんだけど、面倒な事になるから。だけど、使っているうちにどんどん依存関係上アップグレードが進行してしまい、カーネルのバージョンアップが必要なわけで、しかしなぜか失敗しているので困った。

/var/cache/apt/archive あたりに保存されていた新しいカーネルを dpkg で手動でインストールしようとしたら原因が分かった。root filesystem が容量不足だ。/lib にモジュールが入れられない。

ということで、以前も /usr が容量不足だったときに /home をソフトウェアRAIDでRAID1構成にした新しいハードディスク上に置いて、/home に使っていたLVMボリュームを /usr に割り当てていたのだ。その /usr として使っていたのは容量が中途半端だからって放置していたんだけど、/ で容量不足なら昔の /usr を割り当てれば良いではないかと考え debian の install CD から rescue モードで起動して root filesystem の中身を以前の usr に移して fstab を書き換えたいんだけど /usr/bin/vi が見つからないのは何故?しかたないので LVM のラベル名を変更して fstab そのままでも良いようにした。

しかし、それでもまだ問題は解決しない。

/ の容量に余裕ができたから aptitude でカーネルやらなにやらをどんどんアップグレードしていくけれど、古いカーネル用の initrd を再作成したら古いカーネルでも起動しなくなったじゃないか。

嗚呼、困った、でもオプションで all を指定しなかったから古くも新しくも無い中くらいのカーネルで起動できた。どうやら lenny から squeeze へのアップグレードの際の注意点をよく読めという話のようだ。

なにしろ起動するたびにソフトウェアRAIDのディスクを手動で認識させ、LVMを手動でACTIVEにしないと/homeが見つからないから大変。なんか udev の挙動が変。/dev/shm も消えているし。udev は最新のカーネルパッケージを要求しているのにカーネルがインストールできなかったので "/" ファイルシステムの容量を大きくしてインストールできるようにして、やっとカーネルのアップグレードができたと思ったんだけど、やっぱり最新のカーネルでは起動できない。

嗚呼、どうやらGRUBを最新にしないと mdadm で作ったRAIDは見えなかったらしい。その他いろいろやってようやく一番新しいカーネルでも起動できるようになった。

それで xorg も再設定。NVIDIAカーネルも入れて X も立ち上がるところまで修復できた。それで日常の業務を行うスクリプトを走らせるとなんか止まる。

mysqldump がエラー出してる。

ええい面倒だということで mysql 関連パッケージをアップグレード。

そしたら今度は mysql サーバー自体が動かなくなってしまった・・・。

嗚呼、困った。本当に困った。

で、結局 my.cnf の中身が不正なんじゃないかということが分かってきたので試しに my.cnf をリネームして /etc/init.d/mysql start とかしてみるとすんなり起動した。

今までの my.cnf のメモリーの取り方は間違っていたみたいだ。やたらとパフォーマンスが悪くていろいろ試していたのが今回のバージョンアップで引っかかってしまった。

そうしてようやくやっと、ほぼ元の状態と同じ程度に使えるようになった。

でも、リモートホストからのMySQLの接続が失敗する。GRANTで許可するネットワークのサブネットを指定しても接続元のホスト名で拒否されてしまう。どうやらIPアドレスの範囲で許可したつもりでも名前解決を行いホスト名で判断されてしまう。

困った。GRANTで許可するホスト名を指定しないと駄目なのかも。

とりあえず使えるようにはなった。多少変更が必要そうだけど大丈夫そうだ。まあこんなものだ。ときどきバージョンアップせざるを得なくなって苦労するんだ。

ここ数日、自分用のサーバーが使い物にならなくなっていたので気分が悪かった。いわゆる基幹サーバーとかだったらもっと気分が悪いのだろう。自分はもっと小規模なホームサーバーちっくな自分しか使っていないようなサーバーだからあんまり困らなかったけど、自分は困るけど。何日か使えなくなってもあまり深刻にならないで済む。とはいえ月末だから月が変わる前に直しておかないと毎月のデータ抽出に支障が出る。つまり1週間以内に直さなくてはいけなかったのだ。間に合ってよかった。