Archive for the ‘Linux’ Category

いや、そんなに大したことではない。PCのHDDを交換する件で紆余曲折し、構成や製品を決めて注文したのが、さっき届いたのだ。

当初は、全部のHDD(3台)を交換する必要があると思っていたので、新しいのを2台買って全部で3万円以上掛かる予定だった。が、良く考えて、ビデオ用のHDDは全く問題がなく、ほとんど使わないし、バックアップはあるし、壊れた場合に復旧に時間が掛かっても問題ないので、壊れるまで(あと2年くらい?)使うことにした。

それで、買うのは1台で良くなった。容量は4TBが要ると思っていたのだが、良く考えたら3TBでいいことが分かった。

製品の候補は以下だった。全部、サーバー(NAS)用の3TB品である。

  • HGST 0S03663: 約1.4万円
  • WD WD30EFRX: 約1.2万円
  • Seagate ST3000VN007: 約1.1万円

いろいろなレビューや口コミを読んだのだが、お互いに相反・矛盾していたので、とても迷った。経験上、HGSTはいい物だというのは分かっていたのだが、現在はWD傘下なので、どうも怪しい気がする。実際、回転数が7200rpmと高速のせいか、熱いとかうるさいとかいう悪評がある。ただ、Backblaze社の2016年版のレポートでは、故障率が他社(WD、Seagate、東芝)の1/3以下と良い。が、それも本当に信用できるのか、怪しい。

それでWDにも傾いたのだが、Backblazeのレポートでは一番故障率が高かったし、例のタイマー(ヘッドを頻繁にアンロードする)を仕掛けているのが嫌だったので、却下した。

残ったSeagateは悪評が高いし、僕の中でも悪いイメージなのだが、良く考えてみると、使っていて壊れたことはない。ファームウェアに問題があって交換したことがあったのと、サポートがひどかった程度だ。今使っている悪評の高い製品(ST3000DM001)ですら壊れていない。そして、回転数が5900rpmと少し低いせいなのか、熱さとか騒音についての評判は良さそうだった。

それで、一昨日はHGSTが候補だったのだが、昨日はSeagateになった。更に、Amazonを見ていたら、容量の同じ別製品(ST3000VX002)が約8800円と安かったので、それを注文した。監視カメラ用だが、24時間の連続動作を想定しているので、デスクトップPC用には充分だと考えた(Backblazeは、サーバー用でもデスクトップ用でも故障率は変わらないという見解で、実際にデスクトップ用をサーバーに使っているが、異論が多いので、本当のところは良くわからない)。

まあ、HDDは機械製品なので、結局は賭けなのだと思う。壊れる時は壊れるけど、大丈夫な物がほとんどなのだろう。故障率が高い製品・メーカーはあるが、実際に手元に来た物が壊れるかどうかは「運」ではないだろうか。僕は、今までHDDが壊れた経験はほとんどないし、この5-10年は全くない気がする。

という訳で、いろいろな賭けをしたおかげで、3万円以上だった見積もりが1万円未満になった。届いたHDDをPCに繫いだら無事認識できて、今はbadblocksというコマンドで不良ブロックのチェック中である。このチェックは、昔と違って実際には余り意味がないような気がするのだが、もし初期不良があったら交換してもらいたいので、やっている。あと3時間くらい掛かりそうだ。チェックが終わったら、データの移行を始めるつもりだ。

感想は、今のところは全く問題なく、うまく行った感じだ。騒音は(エアコンや音楽のせいか)動いているのが分からないほど静かだし、熱に関しても、不良チェックで2時間くらい酷使しても35℃くらいまでしか上がっていない(室温: 23℃)。なお、ケースを開放しておくと、通風が悪いためにHDDの温度が上がってしまうので、今は中に仮置きしている。

あと、どういう訳か、AmazonはHDDの梱包がひどいという苦情が多かったので、これにするまでは別の会社に注文するつもりだったのだが、この製品が安いのはAmazonだけなので、別のものを一緒に頼んだ。すると、目論見通り、いつもの空間たっぷりの梱包で届いた。実際には、HDDのヘッドは非稼働時には安全な位置にあるので、落下とかすごく激しい振動とか踏み潰しのようなひどいことがない限り、簡易な梱包で問題ないと思う。それに、いつもの梱包だって、ビニールで底面に固定されているので、振動には無力だ。

余談だが、この製品は2014年頃に発売された物で、箱のラベルが何となく古ぼけていたので、「何年間も倉庫に眠っていた古い物?」と心配したのだが、本体ラベルのDate欄には、"16"で始まる2016年らしき番号が書いてあったので、ちょっと安心した。それから、Amazonの製品ページでは、ラベルは綺麗なブルーだったのだが、実際には上のような色気ないものだった。まあ、ラベルで信頼性や性能が決まるわけではないので、問題ない。

製造年について: 調べたら、Dateの先頭の2桁("16")は確かに製造年を示しているが、7月開始の「会計年度」のため、僕のは2015年10月製造のようだ。1年半くらい倉庫で寝ていたようだが、その程度なら問題ないし、ちゃんと動いているので良しとする。(3/25 10:43)

ディスクのチェック結果は問題なく、(当然ながら)不良ブロックは全くなかった。それでデータの移行を始めたのだが、コピーに時間が掛かるのは仕方ないものの、Windowsからの移行の時にシンボリックリンク(Windowsの「ショートカット」と類似のもの)を多用したため、予想外に手間が掛かることが分かった。手を抜くと、いつかはそのツケを払うことになるようだ。。。 (3/24 7:15)

ファイルのコピーとシンボリックリンクの修正が終わり、ひとまずHDD交換は完了だ。いくつか気付いた点を書く。

  • 新HDDの温度は低目で、室温が15℃程度の場合、コピー中でも35℃程度までしか上がらなかった。また、アイドル時の温度は約25℃(室温: 約20℃)。ちなみに、前から使っているHGSTは約29℃、SSDは約23℃で、温度だけなら長持ちしそうな予感がする。
  • NTFS中の未解決シンボリックリンクがコピー時に空のファイルになってしまったので、スクリプトで修正した。
  • 使用しなくなったHDDを接続しないと、起動に失敗するようになった。 ← HDDのマウント時(/etc/fstab)に通常のデバイス名(例: "/dev/sdb")を指定すると駄目なようだ。ブートローダーやLinuxの以前の設定とデバイス名が変わったためか。 → デバイス名でなくUUIDを指定したら直った。 (→ 参照) 今までは大丈夫だったのだが・・・
  • 起動時・使用中に、時々、小さく短いビープ音が鳴るようになったのだが、原因不明。どこから出ているのか(新しいHDD)?? 2004年にあった、HGSTのHDDから猫の鳴き声が聞こえる現象と同類?
  • 現在の新HDDの使用量: 約1.8TB (69%), 空き: 約870GB。ここには音楽、写真、ドキュメントを入れるのだが、CDだったら千枚は入るから、HDDが壊れるまでに容量が不足する心配はないだろう。
  • HDDには関係ないが、言語を英語(LANG=C)にしてThunderbirdを起動したら、名前が日本語のローカルフォルダが扱えなくなってしまった。フォルダ名を英語にすれば直ったが、いつもながら出来が悪い。

(2017/3/25 8:06, 9:58, 11:17)

HDDに特別な高速性は求めていないのだが、興味があったので、新しいHDDの速度を測定してみた。Windowsのように安直なツールはないようなので、ちょっと調べて、ddコマンドで1Gバイトのアクセス速度を測った。他のディスク(ADataのSSDと日立(HGSTになる前)のHDD)でも測定した。

書き込み (コマンド: dd if=/dev/zero of=テストファイル名 bs=1G count=1 oflag=dsync)

  • AData SSD (SX900): 687 MB/s
  • Seagate HDD (ST3000VX002): 106 MB/s
  • 日立 HDD (HDS5C3030ALA630): 157 MB/s

読み出し (コマンド: dd of=/dev/null if=テストファイル名 bs=1G count=1 oflag=dsync)

  • AData SSD: 773 MB/s
  • Seagate HDD: 807MB/s
  • 日立 HDD: 659 MB/s

※上記はそれぞれ1-2回しか測定していないし、他のプロセスも停めていないので、あくまでも目安である。

意外にも、Seagateの書き込みは日立より遅かった。実用には充分なので問題はないのだが、理由が知りたいと思った。回転数はどちらも同等(5400-5900rpm)で、日立は3GbpsのSATAインタフェースで接続されている(Seagateは6Gbps)し、ファイルシステムはNTFSなので(Seagateはext4)、日立の方が遅くなってもいいのに不思議だ。やっぱり、昔の日立は前身のIBMの成果が残っていて優秀だったのかも知れない。それから、HDDではSATAインタフェースの速度を高速にしても、(特に書き込み速度に関しては)余り意味がなさそうだ。

なお、Seagateには音楽ファイルが入っているので、書き込み速度測定中に音飛びが発生した。 (3/25 14:47)

その後、「ビープ音」(→ 同様の音)が全く消えない(約5-10分に1回鳴る。HDDを使用していない時に鳴ることが多い感じ)ので調べたら、Seagateには限らないが結構あることのようだ。しかも、Seagateには(口コミ投稿の件数が)多い感じだ。どうも、中のメカが動く時に音が出るらしい。正常に動いているならいいのではあるが、そのうち壊れるという話も読んだし、普通の動作音でないために音楽の邪魔になるのが耐えられない。

そんな訳でAmazonに返品を希望して承認されたので、今、再びデータの移動をしようとしている。まるで流浪の民だ。

別のに買い換えるとしたら、もうHGSTしか残っていないのだが、高いうえに熱や音の点では賭けになる。なので、一時的な退避先に使おうとしている「前のSeagateをそのまま使い続ければいいのでは?」という気もして来た。

やっぱり、客観的なデータを信じて論理的な考えをする方がいいようだ。今回は、詰めのところ(「壊れる時は壊れるけど、(略)実際に手元に来た物が壊れるかどうかは「運」ではないだろうか。僕は、今までHDDが壊れた経験は(略)」)で、今まで壊れていなかった経験を自分に都合良く解釈してしまったのが敗因だった。その例では、

実際に手元に来た物が壊れるかどうかは故障率に比例するのではないだろうか。今まで壊れたことがなかったのは運が良かっただけで、全く今後の保証にはならないのだから、少しでも故障率が低い製品を選ぶべきだ。

と考えるべきだった。

それにしても、こんなに評判が悪いのに会社が存続できているSeagateには、逆に感心する。 (3/26 11:18)

意外に早くSeagateから回答が来た。ビープ音は電源容量の過不足("insufficient or excess power supply")から来るので、接続を変えてみろとのことだが、そもそも、「電源が過剰」であることなんて判定できるのだろうか? 電圧が高いという意味か。 いずれにしても、電源容量は充分足りている(少し前まで、1台多くのHDDを使っていて問題なかった)し、そんなに頻繁に鳴るということは、電源がかなり不安定だということだが、PCは全く問題なく動いているので、あり得ない。不安定なのは、HDD内部の電源回路なのではないか。それに、回答が来る前に指示と同じことをやって改善しなかったから、効果はない。

これは、サポートが問題の原因や状況を把握しておらず、この後何度もやりとりをしてようやく理解され、最後は解決策はない(仕様など)とか、(分からないから)こっちの環境の問題に帰着させられるという、良くあるイライラさせられるパターンのようだ。 こんなのに付き合って疲れるのはごめんなので、もちろん返事はしない。 (3/26 22:05, 3/27 7:32)

 

届いて5日目にST3000VX002を返品 (2017/3/27 7:28追加)

  •   0
  •   0

Linux Mintのデスクトップ環境は、Xfceを概ね過不足なく使っているのだが、ひとつ使いにくいことがある。ウインドウのサイズ変更をする時、ウインドウの端をマウスで掴んでドラッグするのだが、掴む領域(枠)が余りにも狭いのだ(調べたら3画素(ドット)だった)。その範囲(図中、青と赤色の部分)にマウスを入れて掴むのは結構神経を遣うし、手や眼が疲れる。

設定で広くしようと思ったのだが、設定マネージャー(Windowsのコントロールパネルに相当する)にはないので検索したら、なかなか面倒だった。Xfce(のウインドウマネージャ、xfwm4)は、ウインドウの端を画像(xpm)で描画しているので、枠を太くするには、その画像を修正する必要がある。そして、その画像はウインドウの各場所用に何個もあるのだ。左上、左、左下、下・・・といった具合で、10個くらい修正した。xpmは画像ではあるのだが、中身はテキストで記述されているので、修正はエディタでできた。

枠の幅が広いほど使いやすくなるが、見た目がかっこ悪く(スタイリッシュでなく)なってしまうので(例: 幅が9画素の場合)、試行錯誤して7画素でちょうどいい感じになった。また、Mint-Xでは、枠の色は暗い色(影を表しているのだろう)と明るい色の2色が使われているのだが、暗い色を増やすのも、明るい色だけを増やすのも今一つだったので、その間に中間的な明るさの色を入れた。画素数の配分は、暗、中、明をそれぞれ1, 2, 4画素にした。

今改めて見ると、昔のMacOS 8とか9を思い出させる気がする。おもしろいことに、Windows 7はどうなっているか、全く思い出せない(検索する気もしない)。仕事で散々使っているのだが、全然興味がない・好きじゃないようだ。いずれにしても、あれは全然美しくないだろう。

実は、この方法でも調整できない部分がある。ウインドウ上部の枠(図中、青色の部分)だ。ここはタイトル領域と枠が同じ画像になっているせいなのか、画像の高さを広げてもマウスで掴める部分は広がらなかった(もし広げられるようにするとしたら、ウインドウマネージャに画像認識機能が要りそうだ)。調整方法を検索した時に見つかったページでも、この部分に関しては さらっと何も書かれていなかった(僕が読み飛ばしたのかも知れない)。きっと、プログラム中に固定的に書いてあるのだろう。Xfceの問題点なのではないだろうか。

それにしても、いまだにアナクロ的に、こういうパーツを画像ファイルから持って来て描画する理由やメリットが分からない。これでは、ディスプレイの画素密度(分解能)が変わったら、見た目や使い勝手が全然違ってしまう。プログラムで描画すれば、いつも同じにできるし自由に設定変更できるのに。Xfceは軽量なのが売りだから、あえてそうしていないのかも知れないが、そんなに重いのだろうか。重いのなら、一度描画したものを画像にしてキャッシュすればいいと思う。

まあ、いずれにしても、いつも使う左・下・右の部分が太くなって大分使いやすくなったので、良しとした。

以下、実際に調整してみて分かった、細かいことを書く。

  • 調整する画像は、/usr/share/themes/(テーマ名)/xfwm4/left-active.xpmなどであるが、テーマによっては、存在しない場合がある。この場合は、そのテーマの元になっているテーマのものを調整する。
    • 例: Mint-X-Sandの場合には、Mint-Xのものを調整する。
  • 画像(xpm)を変更後、xfwm4 --replace & を実行すると反映されるが、&を忘れるとひどいことになってしまう。それを防ぐ、もっと手軽な方法がある。 Xfce Theme Manager(パッケージ名: xfce-theme-manager)のWindow Bordersに使用可能なテーマ名が表示されるので、それを選択すれば、即座に枠だけに反映される。
  • システムのxpmを調整する代わりに、自分のホームディレクトリに調整したものを置くこともできる。~/.themes/(テーマ名)/xfwm4である。この場合、テーマ名は自分で適宜設定する。
    • 例: Mint-X-Wide
  • どうしてか、Xfce Theme Managerにプレビューが2個出たり、プレビューが出なくなってしまう場合があるが、xpmが正しければ正常に動作するので、気にする必要はない。

(3/21 7:40 加筆・修正)

PS. 書こうと思っていて書くのを忘れていた。ちょっとしたことだが、これに前後してもう一個カスタマイズをした。ウインドウのタイトルバーの右端に並ぶボタンは、僕の使っているテーマでは最小化(_)の右に閉じる(×)ボタンがあるのだが、2つの間隔が狭いので、たまに、最小化を押そうと思って閉じるを押してしまうことがある。

それで、ボタンの間隔は変更できないようなので(こういう場合は、なかなか不自由な環境だ)、2つの間に無害なボタン(メニュー(▼))を入れた。そうすれば、手が滑って最小化の隣を押してしまってもメニューが出るだけなので、被害はない。

これをやる時、昔のMac(今はどうなっているか覚えていないし、知りたくもない)のように、閉じるを左端に置くことも考えた。それなら間違いようがない。が、それでは余りにも標準から離れてしまって、他のLinix Mintも揃えないと使いづらくなるし、何となく、作った人の意図を踏みにじるような気がしたので止めた(まあ、こんなボタン配置にした時点で、既に踏みにじっている気はするが)。

余談: UIだったか、機械の操作系の配置だったか、「安全な物と危険な物は隣(近く)に置かない」というルールがあった気がする。これは本当に重要だと思う。そういう点では、このテーマを作った人は、アフォだと思う。もちろん、メニューに「フォーマット」と「取り出し」が並ぶ窓社なんて、アフォの集団だ。

↑訂正: Mint-Xのデフォルト設定では、最小化と閉じるボタンの間に最大化があるので、上記のルールは守られていた。アフォだったのは、自分で最大化ボタンを取り除いたのを忘れて偉そうなことを書いた僕だった。(3/21 19:25)

それから、「最大化(□)」という、僕にとっては邪悪の権化とか無用の長物としか言いようがないボタンは表示しないことにしているw

Xfceのウインドウのボタンの設定

(2017/3/20 13:52)

  •   0
  •   0

検索しても見つからなかったので、Linux関係のメモを(かなりニッチかも)。

1. [Linux Mint 18] デジタルカメラをUSB接続した時に、自動起動コマンドが重複起動する場合の対処

現象: 設定マネージャーの「リムーバブルドライブとメディア」の「カメラ」で「接続されたら写真を取り込む」をOnにしている時、デジタルカメラをUSB接続すると、自動起動設定したコマンドが2回(以上)起動されてしまう。

原因: 不明

対処: (関連する設定は他になく、)Mint側では対処不可なようなので、自動起動させるコマンド(自作)側で対処した。

1. 設定: コマンドにデバイス名を渡すようにする。デバイス名は%dで指定できる。

例: /home/user/bin/import-images.sh "%d"

2. コマンド側: 2回目(以降)の起動ではデバイス名が渡されない(例の場合、引数がない)ので、その場合は何もしないで終了するようにする。

備考: コマンドが自作のものでない場合も、一旦、スクリプト(デバイス名の有無をチェックし、デバイス名が指定されていたら、本来のプログラムを起動する)を起動するようにすれば、対応可能。

その後、カメラや場合によって、デバイス名が渡されて複数起動する場合があることが分かったので、起動スクリプト内でflockコマンドを使って排他制御するようにした。 (2017/4/8 追記)

2. [smartmontools] smartctlなどで、AData SX900のSMARTの属性(状態)を正しく表示させる方法

現象: smartctlやGSmartControlなどでAData SX900のSMARTを表示すると、SX900固有の属性が認識されず、デフォルトの名前と意味で表示される。 (例: #231は本来は"SSD Life Left"だが、”Temperature”となる)

原因: smartmontoolsのドライブのDB (/var/lib/smartmontools/drivedb/drivedb.h)の機種判定用のパターンが実際と異なっている(発売後にSX900の出す名前が変わった?)ため。

対処: 以下のいずれか。

a. デフォルトのDBを修正する。

"ADATA SSD S[PX]900 (64|128|256|512)GB-DL2|"の行の次に次の行を追加するか、元の行を次のように変更する。

"ADATA S[PX]900|"

b. 自分のDBを作り、smartctlなどに-Bオプションで指定する。自分のDBは、デフォルトのDBからSX900の部分(正確には"SandForce Driven SSDs"のブロック)を抜き出して、判定パターンを上のものに変更する。

 

1の解決策を見つけたおかげで、今では、デジカメを接続しただけで自動的に画像を取り込むことができるようになって便利だし、本来やりたかったことができたので、とても気分がいい。

2も同様で、今までは、GSmartControlでSX900の状態を見ると、温度(本来は残寿命)が警告になっていたりして、「使えない」ものだったのだが、これでまともになった。 更に、smartdでの状態監視も正しくできるようになったはずだ。

気になることをずっと忘れずに・諦めずにいて、考え続けたり試行錯誤したりすることは、大抵は徒労に終わるのだが、成功することもある。

  •   0
  •   0

サーバのSSL証明書をLet's encrypt(LE)にした時にThunderbirdなどが文句を言ったのは、Windows 7がLEに対応してない(LE対応の証明書が入っていない)せいだと思い込んでいたのだが、それは誤りだったことに今頃気付いた。

先日、たまたまLinux Mintのファイルマネージャでサーバと接続してみたら、やっぱり同じ警告が出たので、今日、その原因を調べてみた。すると、証明書にはサーバ自体のものと、認証局までのもの(中間証明書)の2種類があって、両方をサーバに指定する必要があったのだが、僕はサーバのものしか指定していなかったので、証明書が不完全になっていた。

そのために、ThunderbirdやLinux Mintのファイルマネージャが文句を言っていたのだ。ブラウザ(VivaldiやFirefox)はなぜか何も言わない(確認しても、「証明書は正しい」と言う)ので、問題の発見が遅れた。

それで、さっき、2つの証明書をサーバに設定したら、見事にファイルマネージャの警告が出なくなった。Thunderbirdは、最初に接続した時に警告を解除したので変化が分からないが、きっと大丈夫だろう。

それで、この問題が原因で、iPhoneがカレンダーを同期しなくなる問題が起こっていたのかも知れないとヌカ喜びしたのだが、やっぱり関係なかった。ただ、iCloudの設定を変えると、いきなりアクセスが始まるので、その辺りに鍵がありそうだ。

  •   0
  •   0

テキストエディタは、WindowsではNotepad++を使っていたのだが、Linuxにはないので、(いろいろ試した後に残った、)jEditを使っていた。まあ悪くなかったのだが、昨日、Atomが更新されたというニュースを目にして、ちょっと試してみた。以前試した時は、いろいろ不満があったので却下したのだが、しばらく経って改善されたのではと思ったのだ。

実際に使ってみると、結構良かった。僕が必要な機能はほとんど備えている。そして、表示がシンプル(jEditは昔のソフトのせいか、「ゴテゴテ」している)なのは好ましいし、最新のソフトのせいか、細かいところが使いやすそうだ。キー割り当ても、デフォルトでほとんど僕の慣れと同じだから、設定する手間がない。なお、jEditの「ハイパーサーチ」(検索結果を一覧表示して、押すとジャンプできる)と、選択した単語をハイライト表示する機能がなかったが、find-listとhighlight-selectedいうパッケージを追加したら、できた。

細かいことでは、色遣いが落ち着いていて目に優しい。jEditの色設定はいかにも「テキトー」だったので、自分で調整しろということだったのかも知れないが、いろいろな言語ごとにいちいち調整する気は起きなかった。あと、なぜか、同じフォントを使ってもjEditより綺麗なのもいい。

それから、ごく当たり前のことだが、日本語がまともに使えるのは大きい(jEditは、大抵日本語を入力できなかったので、その場合は別のを使っていた)。

今、一番欲しいのは、プログラムのブロックの範囲を左端に表示する機能だ。Atomでも、ブロックを囲む括弧({}など)同士の背景色を変えられるが、ブロックが大きくてウインドウに収まらない場合には見えなくなってしまうので、jEditの方が便利だ(そもそも、そんな大きなブロックは作るべきでないのではあるが、できてしまったものは仕方ない・・・)。

↑ 近い機能として、Atomにはブロックを畳む機能がある。ブロックの一部をクリックしてから行番号の右の空欄にカーソルを置くと、ブロックの最初の行に"V"が表示されるので、それをクリックすると、そのブロックが畳まれる。なお、jEditのブロックの範囲を示す線も、クリックするとそのブロックが畳まれる。

最後に、一番気に入らないことは、Google製であることだ。仕様や使用条件が勝手に変わるかも知れないし、いつ「終了」になるか分かったものではない。でも、その時は、別のいいものが出ていそうだから、まあいいか。

  •   0
  •   0

懸案だった、サーバのOS更新が無事終わった。更新後に再起動する時は、果たしてちゃんと立ち上がるか、少しドキドキしていた。結構大きいヤマが片付いて、一安心だ。あと4-5年は、こういった作業は不要だろう。

大きな問題はなかったのだが、いくつか気付いた点があったので、書いておく。

  • サーバには、なぜかdo-release-upgrade(OS更新スクリプト)がなかったが、パッケージupdate-manager-coreをインストールするだけで解決した。
  • テスト環境で起こった、do-release-upgradeの実行時に(Python(プログラミング言語)が)エラーになる問題は、なぜか起こらなかった。不思議だ。← 上に書いたように、do-release-upgradeを後からインストールしたからか?
  • なぜか、更新時にaptitude(ちょっと便利なパッケージ管理コマンド)が削除されたので、再度入れた。
  • テスト環境同様、更新後にrunlevel(OSの動作モードのようなもの)が5になっていたので、systemctlコマンドで2相当にしようとしたのだが、runlevelで見ると3になってしまった。でも、プロセス一覧を見ると、余計なものは動いていなかったので良しとした。おそらく、もうrunlevelも/etc/rc*.dの起動スクリプトも意味がないのだろう。だったら削除してほしい。。。
  • 作業で一番時間が掛かったのはバックアップで、圧縮後のサイズが9GBくらいになるせいか、1回80分くらい掛かった。更新自体は、最初は40分、2回目は20分くらいで終わった(それも結構長い気はする)。

そして、やっぱり、何をするにしても、特に、リスクのあることだったら、充分な準備をする価値はあると思った。

(23:47 若干加筆)

 

PS. みんなやっていることかも知れないけど、僕がコマンドライン(ターミナル)で作業をする時は、以下のようにしている。

  1. 実行するコマンドや順序を考えて(あるいは、どこかのページからコピーして)、どこか(例: Dropbox PaperやEvernote)に書く。
  2. それをターミナルにコピー・ペーストして実行する。

コマンドの例(PHPのバージョンを5から7に):
sudo aptitude remove php5
sudo aptitude install php php-cgi php-cli php-curl php-fpm php-gd php-intl php-mysql php-sqlite3 php-ftp php-net-socket php-sockets php-mbstring php-zip php-pdo-mysql php-exif php-apcu

こうすると、後で同じことや同様なことをするのが楽だし、何を実行するかあらかじめ考えるから、間違いが起こる可能性が減る。それに、上のような長大なコマンドだって、タイプミスせずに一発で打てる。更に、何をしたかの記録が残るから、後で何か問題が起こった場合にも、その時実行した処理に問題がなかったかを検討することができる。

また、トラブル対処などで、その場で(アドリブで?)コマンドを実行してしまった場合でも、なるべく、実行したコマンド文字列をコピーして、「**したら動いた」のように残すようにしている。

上のように書くと、「コマンドラインなんて古臭くて面倒だな」と思う人が多いかも知れないが、逆に便利だと思う。もし、GUIで上のPHPの例と同様な作業を記録するとしたら、「*を起動して、*を検索して、*と*と(中略)と*にチェックを入れて、インストールボタンを押す」なんて書くか、スクリーンショットを撮るしかないだろう。

前者の場合、オプションが多いと書くだけでも面倒なうえに、後日再実行しようとしてもコピー・ペーストは無理だから手間が多くなるし、後者の場合、手間に加えて、画像中の文字の検索は無理だから、後で調べるのが困難になるだろう(Evernoteは文字認識するから、検索できるかも知れない)。

  •   0
  •   0

ブログサーバーのOSを更新するため、2/26(日)に本サーバーを停めます。作業終了までは、断続的な動作になる可能性があります。

その日のうちに復帰する予定ですが、予期せぬ問題が起こった場合は、しばらく停まる可能性があります。

作業が終わりましたら、この投稿に追記してお知らせします。

よろしくお願いします。

2/26 10:56: 無事、OSの(2段階)更新が終わり、動作確認中です。ここまでの所要時間は約3時間でした。大きな問題はなかったです。

2/26 13時 動作確認が終わりました。正常運用に戻りました。

  •   0
  •   0

想定外のことがあって、しばらく休みになった。自宅謹慎とかではなくて、インフルエンザである。それで、懸案のブログサーバーのOS更新を試してみた。KUSANAGIを使わないのであれば、確認・移行用に新たなサーバー(VPS)を借りなくても、自分のPCに仮想環境を作って、無料でいくらでも試せることに気付いたのだ(KUSANAGIも仮想マシンを配布しているのかも知れないけど、使う気がないので、パスした)。

試した結果は、いくつか気になる点や注意事項はあるものの、現行のサーバーをインプレースで(「上書き」)更新しても大丈夫そうだった。今日1日(実質半日)で、仮想環境で、古かったOSを最新版に更新でき、テスト用ブログサーバーが動いた。しかも、PHPを7.0にしたせいか、何もしなくても4倍くらい速くなった。

最も気になるのは、「ゴミ」である。今使っているOSは古いため、最新版に更新するには、2回(2段階で)更新する必要がある。その過程でゴミが残って(あるいは、不足が生じて)動作に悪影響がないかと、今までの数年間の運用や試行錯誤でさまざまなゴミが溜まっているだろうから、その影響も気になる。

もしゴミをなくしたいなら、新しいサーバを借りて、最初からセットアップするべきだが、それはかなりの手間だ。

まあ、趣味だし、とりあえず動いたから、上書き更新でもいいような気がする(が、今までの経験上、そうやって手を抜くと、あとで思わぬトラブルが勃発して慌てるのだが)。それならほとんど時間が掛からないでできるし、トラブル対処の勘所も分かったので、もう少し考えてみよう。

以下は、更新に当たって起こったできごとや注意事項などのメモである。OS名を明記しないので、余り参考にならないかも知れない(が、よく読めば、自明なはずである)。

  • OSの更新は、基本的に、do-release-upgradeコマンドでできる(これは、ご丁寧にも、古い版のOSにログインした時に表示されたので、何も調べなくても分かった)。ただし、更新が失敗する場合やパッケージがあった。
    • 1つ前の版から最新にする時、do-release-upgradeが実行できなかった。これは、pythonが古くてaptというモジュールがなかったからのようで、一旦削除してインストールしなおしたら、動くするようになった。
    • mysqlのDBのディレクトリ名(/var/lib/mysql/*)に異常なものがあって、更新に失敗した。使っていないものだったので、そのディレクトリを削除したら成功した。
  • 現行サーバーの環境をコピーするため、ディスクの内容を新しい仮想環境に上書きしたのだが、ファイルの選択がいい加減だったので、/etc/fstabまで上書きしてしまい、ディスクのマウントがおかしくなってしまった。まあ、当たり前のことであるが、/が読み出しのみでマウントされて、fstabの修正もできなかったので、手で読み書き可にマウントしなおして編集できるようにした。
  • PHPはパッケージ版を使ってみた。すると、php-fpmはなぜか/etc/rc?.dから起動できず、プログラムの場所も分からず、再起動するにはOSを再起動しないといけなくて、面倒だった。良く調べたら、場所は/usr/sbin/php-fpm7.0だった。また、なぜか、/etc/init.d/php7.0-fpm startなら起動した。起動スクリプトの仕様が変わったようだが、他にも同様なことがあるので、要調査だ。
  • パッケージ版のPHPは、現在ビルド時に指定している、さまざまなモジュールをapt-getに"php-curl"のように指定して追加すれば、今使っているものと同等の機能のものがインストールできた。
  • 当然ながら、パッケージ版のPHPに移行するには、元々の(自分でビルドした)PHP関連コマンドを削除しないと、誤動作する。
  • ブログ(WordPress)を正しく動作させるためには、仮想環境にドメイン名を付け、それに合わせて、webサーバの設定とWordPressの設定(設定ファイルと「サイトアドレス」)を変える必要があった。webサーバの設定はもう少し綺麗にしたいが、仕様が難解で難しい。。。
  • ブログでは、以前PHP 7を試した時に生じた問題(ウィジェットの設定画面がおかしい)が再発した。しかし、検索しても同様の問題はないので、更に調べたら、自作のウィジェットが原因だった。一部の標準ウィジェットをカスタマイズするため、コピー・変更して使っていたのだが、その使い方がPHP 7に互換でなかったようだ。これはフックにできないだろうか。
  • PHP 7.0にしたら、ブログの表示は約4倍速になった。ただし、正規表現での検索は10倍くらい遅くなった。自作したものなので、効率の悪い点がありそうだ。また、ページを最初に表示する時は遅い。これは、PHP 7.0の動作(JITやキャッシュ?)に関係しているのかも知れない。
  • もう一つのブログや他のwebサービスも、問題なく動いている感じだ。
  • カレンダー・アドレス帳サーバーは、最初は予想外のエラー(HTTP 400)が出て動かず、ちょっと苦労したが、何とかなった。設定の、「信頼するドメイン」に、サーバー自身のドメインを追加する必要があるようだ。それがどういう意味なのか(自分すら信頼できないのか??)、今ひとつ分からない。
  • パッケージ版のwebサーバーも試したが、ログやSSL証明書の場所の設定を若干修正する程度で問題なく動いた。僕の用途では、最小構成で充分なようなので、得した気分だ。(20:47)
  • パッケージ版のPHPのバージョンは最新ではなく、約3か月遅れで、辛うじて許せるレベルだ。一方、webサーバーは、約10か月遅れなので、ちょっと古い感じだ。今までwebサーバーの問題を見たことがないから古くてもいいが、心配なのは、セキュリティ面だ。
  • https(SSL)の証明書は、現行サーバからコピーしたものではブラウザに文句を言われたが、sshの鍵は、コピーしたものがそのまま使えた。確かにそういうものだが、本当にそれでいいのかと思う・・・
  • OSを仮想環境にインストールしたせいか、runlevelが5(デスクトップ用らしい)になっていて、時々文句を言われた。直し方は不明だが、とりあえず動いたし、実環境は2なので、問題ない。

(2/16 17:21追記) その後、準備や調査をした結果を書く。

  • php-fpmが/etc/rc?.dから起動できなかった問題は、Linuxの起動時のプログラム起動システムが(、さまざまなものを経て、)今は、systemdというものに変わっているためだった。ただ、昔ながらの起動スクリプト(/etc/init.d/*や/etc/rc?.d/*)も残っているので、それを使ったら騙され失敗した。何とも中途半端だ。だから、php-fpmは、正しくはsystemctlコマンドで起動するべきだったのだ。だが、これもいつまで続くか分からないし、手で自作のサーバープログラムを追加するのは面倒そうなので、なかなか覚える気がしない。
  • ランレベルも同様で、昔は設定ファイル(/etc/inittab)があったのに、今はなくなっていて、"systemctl set-default multi-user"などのようにして変更するそうなので、分かる訳がなかった。
  • なかなか苦労して、webサーバの設定をかなり綺麗に簡素にでき、行数を半分以下にできた。今までは、文法が難解なので、いろいろなサイトのコピーをベースにして、おそるおそるいじっていたため、ゴミが多かったのだが、今回は観念して腰を据えて、気合を入れて文法を理解しつつ抜本的に作りなおしたので、「どうしてこうなんだろう?」という箇所はなくなり、ゴミもほぼ0になった。また、非推奨の処理もなくせた。でも、これがサーバの高速化に繋がるかと言えばそうでもない。だが、保守性の向上とかセキュリティホールができにくくなることには繋がる。以下に新旧の行数の比較を載せる。
    • 現行: 705行 (2ファイル)
    • 改良後: 310行 (4ファイル)
  • 自作のウィジェットがPHP 7.0でエラーになる問題も対処できた。どういう訳か、作成当時にエラーになったので止めていた方法(元になるウィジェットのサブクラスを作る)がすんなり通ったので、PHP 7.0でのエラーは起こらなくなり、コピーの部分もほとんどなくなった。不思議なことに、それが今のPHP 5でも通ったので、当時のPHP 5にバグがあったのか、僕の思い込みだったのか不明だ。

そんな訳で、OS更新までに残る作業は、作り直したwebサーバの設定の動作確認程度である。これが、(手でやる場合には)拒否・通過設定しているURLをブラウザで1個1個開いていくという、なかなか手間が掛かるうえに間違いやすい作業なのだが、設定修正のたびに繰り返すのは嫌なので、確認用スクリプトを作って自動化したいと思っている。

(2/18 17:02追記) その後、サーバのセキュリティ関連設定確認用スクリプトを作って確認し、問題を見付けて修正して、問題なくなったことが分かったのだが、その後でブログを見たら、みごとに崩れていて、とても参った。「完璧な設定」に見えたのは、どうも、サーバの各種プログラムの不思議な動作(いちいち停めないと駄目だったり、OSの再起動すら要る場合がある)やブラウザのキャッシュによって作られた「幻」だったようだ。

今でも、「修正できたと思ったら、実は駄目だった」の繰り返しである。このwebサーバは、なかなか一筋縄に行かないようだ。

それから、その設定確認用スクリプトを作っている時にも、大いにはまった。スクリプトは、準備として、外部(web)からアクセスできない場所にファイルを作る(それをアクセスしても、サーバの設定でブロックされることを確認する)のだが、2回目に実行すると、必ずサーバにssh接続ができなくなってしまう。いろいろな原因を疑って一つずつ潰して行ったのだが、原因が分からなかった。そして、試してみたら、現行のサーバでも同じ現象が起こった。それで、かなり悩んで、ふと、(自分で設定した)IPフィルタ(簡易なファイアウォール)かも知れないと思って調べたら、本当にそうだった。

ブログサーバを立ち上げた頃に、sshを頻繁に繰り返す攻撃を無効化する設定を、どこからか見付けて入れていたのだ。その後、そんな設定をしたなんてことはすっかり忘れていたのだが、今回の設定確認用スクリプトは、確認用ファイルを作るために、まさに頻繁にssh接続するので、すぐに限界(例: N回/時間)に達してしまっていた。OS更新テスト用の仮想環境も、ブログサーバの内容をほぼまるごとコピーしたので、設定が有効になっていたのだ。全くあてにしていなかったのにちゃんと動いてくれてうれしかった反面、思わぬ落とし穴にどうしたものかと思った。

一時的に無効にすることは可能だが、何度もやるうちに戻し忘れるのが嫌だ。それで、いろいろ考えて、確認用ファイルの作成と削除は、1ファイルごとにssh接続せず、まとめて1回のsshで実行するようにした。その(長々とした)コマンドを作るのがかなりの手間だったが、とりあえず動いて、問題は起こりにくくなった。めでたし、なのか??

(2/19 8:30追記) 大変な苦労の末、サーバの設定の改良が終わった。仮想環境では再起動しても壊れなかったので、おそらく大丈夫だろう。そして、今朝、実サーバにも適用した。いくつか問題が見つかったので、修正した。今のこれが幻でないことを祈るばかりである。

ちょっと残念なのは、いくつか、例外的な「汚い」処理が必要だったことだ。まあ、今の僕の技量ではそこまでってことだ。でも、今までの設定に比べたら、随分まともになったと思う。そんな訳で、設定の行数は361行に増えた。

  •   0
  •   0

ブログサーバーのOS更新の件。

KUSANAGIについて、一番気になっている点(複数のブログ/httpサービスが実現できるのか)を調べたのだが、ドキュメントが貧弱過ぎて、確実なことは分からなかった。あと、全体をKUSANAGI固有の環境とか操作手順(コマンド)に変えてしまっているのが、(僕に言わせれば)何ともセンスが悪い。更に、セキュリティについては、元々良い訳ではなく、自分で設定を変更して向上させる必要があるようだった。しかも、そのレベルが低い。「(独自環境にしたんだから)そんなのデフォルトでやっとけよ」って感じだ。

そして、こんな(言い過ぎかも知れないが、いい加減な)会社に少なくとも10年も依存していいのかという疑念すら生じた。例えば、WordPressの更新がリアルタイムにでき(てい)るのだろうか? とか、数年で会社がなくなることはないのだろうか? などだ。そもそも、高速化しなくたって、何も問題はないのだ。

大体、あのキャラ(わざわざそんなのを作ったこと自体)も、起動時の大げさなバナーも全然気に入らない!

そんな訳で、僕の体温に反比例して、KUSANAGI熱は一気に醒めてしまった。

CentOSについても、10年のサポート期間は魅力だが、(今使っているOSの)5年だって大きな問題はないと思える。5年に1度、ちょっと手間を掛ければいいだけだ。逆に、10年も経つと、次のOSはものすごく変わっていて、更新は更に大変ではないだろうか。仕事でCentOSを使う可能性はあるが、そんなの会社でやれば充分で、自宅でまで苦労したくない。OSなんて、(WindowsやMacのなどを除いて)何だって良くて、ちゃんと動けばいいのだ。

という訳で、今は、今使っているOSの最新版に更新する方向に傾きつつある。

  •   0
  •   0

このブログサーバーのOSは、かなり古い。まだサポート期間内だが、もうすぐ切れる。それで、そろそろ最新版に更新しようかと思っている。それで、昨日、手順や起こりうる問題などを考えたり検索したりしていたら、思わぬ新機軸が見つかり、それまでの考えとは全く違う方向に行く(暫定の)結論になった。

まず、コンセプトや目指すところは、それまでの「現状維持」(単に今のOSを更新する)から、以下になった。

  • 管理の手間を減らす。
    • 毎月のようにPHPを更新(ソースからビルド)しているが、もう止めたくなった。
    • Webサーバの更新も、頻度は低いが、やっぱり面倒。
  • ブログの高速化 : 遅くても問題はないが、速い方が気持ちいい。

手段としてはKUSANAGIというシステムに移行する。

実際には、使っているサーバー会社のサポートするOSのページを見たら、KUSANAGIもサポートしているのを知り、それ(以前見たことがあるのだが)を使えばブログ(WordPress)を劇的に高速化できそうなことに気付いた。しかも、WordPressの環境が最初から全部構築されているので、PHPやwebサーバーなどの更新は自動で行われそうだし(そうでなくても更新のコマンドを実行するだけだろう)、Let's encryptのSSL証明書のサポートも入っているようなので、管理の手間がかなり減りそうなことが分かった。

KUSANAGIでは、副次的ではあるが、セキュリティの強化も期待できそうだ(少なくとも今よりは良くなりそうだし、自分でセキュリティに配慮する負担は減るだろう)。更に、新しいLinuxの勉強もできそうだ(というか、しなくてはならない)。というのは、サーバー会社が提供するKUSANAGIはCentOSで動くのだが、(それは今と同じLinuxではあるが、)系統が違うので、管理方法や操作が若干異なる。でも、仕事で使いそうだし、覚えておいて損はないと思う。また、CentOSはサポート期間が10年と長いのが魅力的だ(今のは5年程度)。

次に、移行手順だが、今使っているサーバーをいきなりKUSANAGIに変えることは無理だし危険だし苦労が多いので、そうはせず、「軟着陸」させる。

実際には、今のOSを更新するだけと考えていた時から、直接更新せずに一旦別のサーバーを借りて、そこで動作確認してから移行することを考えていた。それで、サーバー会社のページでKUSANAGIを見つけたのである。

移行手順は以下を考えている。

  1. 移行先のサーバーを借りる。(OS=KUSANAGIで設定)
  2. 新サーバーに、仮のドメイン名を付ける。(サーバー会社が提供するのが使える?)
  3. 新サーバーに、今のサーバーのコンテンツなどをコピーする。
  4. しばらく(3か月以内を目標)、動作確認と調整を行う。
  5. 新旧サーバーの切り替え
    1. 新旧サーバーのwebサーバーを停止する。
    2. 新サーバーのコンテンツを最新にする。
    3. 新サーバーのドメイン名を今のに変える。
    4. 新サーバーのwebサーバーを起動する。
  6. 仮のドメイン名の契約を終了する。
  7. 新サーバーの安定動作を確認後(3か月程度)、旧サーバーの契約を終了する。

移行期間は長くて半年程度と考えているので、コストは1万円未満(新旧サーバーの重複期間の使用料+仮ドメイン名の費用)だろう。

懸念事項は以下である。

  • KUSANAGIに致命的な問題がないか? → 出てからしばらく経っているので、大丈夫では?
  • いつまでKUSANAGIが続くか? → 終わったらまた考える。どうせ、後継が出てくるだろう。
  • 今使っているWordPressの機能・設定・プラグインが全部動くか。→ 駄目な時は代替を探す。
  • PHPが高速版(HHVM)に置き換わるが、他のPHPのプログラムが問題なく動くか。→ 動作確認して、調整する。それでも駄目なら、HHVMを使わない。
  • 自分で追加した機能がうまく移行できるか。→ 同等のものがKUSANAGIにあればそれを使い、なければ自分のを動かす。
  • HHVMがFacebook製なのが気に入らない。→ MSよりはマシなので、我慢する。
  • "KUSANAGI"とか"HHVM" (Hip Hop VM)とか、名前が気に入らない。KUSANAGIのキャラも気に入らない。→ 我慢する。
  •   0
  •   1

Wi-Fiルーターを交換した頃から、時々、PCを休止する時にハングするようになった。休止とルーターは全く関係ないと思うのだが、妙な符合である。古いルーターは壊れてしまったので、元の環境では試せないから、全く関係ないともいえない。

結論としては、解決していない。今日、休止時にPCの電源を完全に切るようにLinuxを設定して(/etc/pm/config.d/hibernate_modeにHIBERNATE_MODE="shutdown"と書く)、様子を見ようとしている。これだとキーボードを押しても復帰せず、毎回電源ボタンを押す必要があるが、ハングするよりはマシだと思う。

他に、休止でなくスタンバイ(スリープ)にするという手もある(Linuxでは、デフォルトでは休止は無効になっており、こちらが推奨されている。Linux Mintだけが休止を有効にしている)のだが、停電とか間違って電源を落としたりした時に保存した状態が失われるので、避けたい。

ハングした時、pm-suspendのログでは最後まで成功したように書いてあるし、ホットキー(Alt+PrintScreen+R+S+E+I+U+O: 下線を押したまま、次のキーを連続して打つ)での終了・停止は可能なので、おそらく、PCを微妙なスタンバイ状態(S4?)にするのに失敗している、あるいは、何かを待ち続けているのではないかと想像している。

なお、今までに以下を試したが、効果がなかった。

  1. 休止前に、メモリ中のキャッシュやバッファを書き出す。
  2. 休止前に、ネットワークを停める。
  3. /etc/pm/sleep.d/下のスクリプトの順序を変更する。
  4. BIOSの”Memory remap feature”を無効にする。

BIOSの設定を変えた後は、しばらく(10日間くらい)大丈夫だったので、ぬか喜びしていたのだが、今日再発してしまった。理論的に考えれば、それは当たり前で、もしBIOSが原因なら、もっと頻繁に現象が起こるし、Windowsでも駄目だったはずだからだ。

結局、上記の休止時にPCの電源を切る設定は効果がなかった。設定の5日後(1/26)にハングした。そのため、休止は諦めて、スリープ(スタンバイ)を使うことにした。まだまだLinuxの休止は難しいようだ。。。(1/27 3:19)

 

PS. この問題については解決に至っていないのだが、ArchLinuxのWikiには、僕が使っているLinux Mintとは異なる場合があるながらも、さまざまな有益な情報やヒントが書いてあって、大変役立っている。

PS2. Linuxの休止からの復帰は、(体感で)Windowsの数倍速い。Windows 7の時は復帰完了を待つのにイライラしたが、Linuxだとほんの数秒で終わるから(メモリの使用量が少ないからなのかも知れない)、全然苦にならない。そういうこともあって、是非、休止をちゃんと使えるようにしたいのだ。(1/22 6:55)

  •   2
  •   0

以前から気になっていたのだが、Vivaldi(Linux版)で、フォーム(文字入力欄)に入力をする際、日本語入力のモード反映が遅れるのか、1文字目がおかしくなる。

具体的には、日本語入力(ローマ字入力)がONなのに、最初の1文字だけアルファベット(半角)で入る。例えば、「あいうえお」と入れたのに、「aいうえお」になる。

最初の文字がおかしいのを見て、反射的に日本語入力切り替え(全/半)キーを押すと、(それまでONだったので)逆にOFFになってしまって、全部打ち込み直しになる。それで、文字を入れる時は、日本語入力の状態アイコンを慎重に確認し続ける必要があって、入力のスピードが落ちるし、大体毎回打ち込み直しさせられるのにも、イライラしていた。

それが、先日、ダメモトで検索してみたら、関連しそうなページを見つけた。リンク先の「アドレスのオートコンプリートを無効に」である。書いてある現象がほとんど同じだったので、試しにオートコンプリートをOFFにしてみたら、まだ2日間程度ではあるが、問題が起こっていない。

なお、これはLinux版だけの問題なのか、他の版(Windowsなど)でも起こるのかは不明だ(確か、Windowsでは起こっていなかった気がする)。ちなみに、僕の環境は以下である。

  • OS: Linux Mint 18
  • 日本語入力環境: Fcitx+Mozc
  • Vivaldi: 1.6.689.46

また、Chromeでも同様の現象があると聞いたことがあるが、上の情報が見つかる前に、スペルチェックをOFFにすると直るという情報が出て来た(Vivaldiにはスペルチェック機能はない)。また、もしアドレスのオートコンプリートがあるなら、それも効くのかも知れない。

PS. 題に追加したように、これは効果がないのかも知れない。以前よりはいい感じだが、やっぱり、1文字目や2文字目がおかしいことがある。まあ、諦めずに試行錯誤しよう。。。(1/11 21:28)

  •   0
  •   0

(個人用プログラムで公開する予定がないので、それについて書いてもあまり意味がないかも知れないが、デジカメ画像の取り扱いにまつわる問題や、それへの対処方法のヒントとして書く)

数か月前からの懸案だった、デジカメからLinuxへの画像取り込みプログラムの「1万枚問題」への対応ができた。これで概ね完成だ。

問題への対処として、カメラ内の親ディレクトリ名もカメラ識別記号の生成要素にすることにした。そのため、カメラ内の親ディレクトリが変わると、画像ファイル名に追加される識別記号も変わる(はずである)。

例(".JPG"の前の10桁の数字が識別記号):

  • カメラA内の、親ディレクトリが"DCIM/147CANON/"の画像ファイル名: "IMG_1234_1234567890.JPG"
  • カメラA内の、親ディレクトリが"DCIM/148CANON/"の画像ファイル名: "IMG_3456_9876543210.JPG"
  • カメラB内の、親ディレクトリが"DCIM/100APPLE/"の画像ファイル名: "IMG_0039_0918273645.JPG"

内部的には、カメラや画像の識別記号が2種類に増えた。一つは、以前から使っていた、カメラの型名やSNなどから生成される値。もう一つは、上記の、親ディレクトリ名も含めて生成される値である。前者は、取り込み済み画像ファイル一覧の中でカメラごとにファイル名を保存するために使用し(ファイル名は、親ディレクトリ別に保存するようにした)、後者は、各種のカメラから取り込んだ画像ファイル(カメラ間・カメラ内でファイル名が重複する可能性がある)を区別するために使用する。

それから、以下の便利な機能も追加した。

  • 画像の保存ディレクトリを、(以前は手動でやっていたが、)自動的に3か月ごとに区切る。(例: "2017/2017_01-03/2017_01_08"の太字の部分) こうすることで、年直下のディレクトリ数が減って、すっきりする(月ごとでもいいが、以前に合わせて3か月ごとにした)。
  • 新しく取り込んだファイルの判別が容易になるように、特定のディレクトリ(例: "New")に、取り込んだファイルへのシンボリックリンクを作る。取り込んだファイルの後処理(例: タグ付けやコメントの記載)が終わったら、そのシンボリックリンクを削除すれば、「新しい」という情報を簡単にクリアできる。
  •   0
  •   0

交換したルーター(WSR-300HP)はほぼ問題なく動いている。換えた後から、ちょっとした問題が起こるようになったこと以外は。PCを休止して復帰させた後、ネットの調子が悪いのだ。

僕はDropbox Paperに日記を書いていて、毎朝、起きたら、とりあえず起床時刻や室温・気温などを書くので(初めにそう決めた訳ではないのだが、最初の頃、その日の最初に書くことがなくて、とりあえず書いていたら、習慣になった)、そこで繋がらないと、その日の出鼻をくじかれた気がするので、なんとしても直したかった。

交換した次の日は、復帰後、ネットに繋がらなかった。もう壊れたかと思ったが、しばらく待ったら使えるようになったと思う。ただ、その日はキーボードも効かず(抜き差ししたら直った)、PCを休止する時にハングしたので、Linux自体の調子も悪かったのかも知れない。

その次の日は、復帰後、VivaldiからPaperに繋がらなかった。が、5分くらい待ったら使えるようになった。

その次の日(昨日)は、復帰後、10分以上待っても繋がらなかったが、Paperのサーバにpingしたら使えるようになった。それで、ルータで、PCのIPアドレスをDHCPの固定割り当てにしてみた。

しかし、昼寝の後の復帰後はやっぱり駄目だった。不思議なことに、他のサイトは問題なく、ChromeからならPaperに繋がった。また、Wi-FiのiPhoneも問題ない。そして、PCのEthernetを落として再開させたら繋がるようになった。ルーターのログには、Ethernetの再開時に、PCからDHCPの要求が来ていた。それでDHCPの相性問題だと考え、PCのIPアドレスをDHCPでなく、手動割り当てにしてみた。

そして今朝。無事、復帰直後からPaperが使えた。しばらく様子を見ないと確定しないが、PC(Linux)とルーターのDHCPの相性が悪いようだ。Linux(ルーターのサポートOS一覧にないw)だし、休止が絡んでいるし、問題が起こるのが特定サイトなので、メーカーのサポートに連絡しても、まず直らない気がする。

あ、今気付いたのだが、ルーターの動作モード(ルーター/ブリッジ)の切り替えスイッチを「自動」にしているのが関係しているのかも知れない。他に有線の機器がないので、PCの復帰後はルーターになるかどうかの判定が不安定になったり、判定している間のパケットを落とすために問題が起こるのかも知れない。そういえば、別の理由だったと思うが、前のルーターもルーターに固定していた。もう関係ないと思うけど、とりあえず、「ルーター」に固定した。(← iPhoneではずっとWi-Fiが使えているので、「自動」でもルーターモードから変わっていないと思う。: 8:20)

残念ながら、IPアドレスを手動設定にしても効果がなかった(復帰後にネットに繋がらなくなった)ので、ルーターとLinuxの相性(復帰時の動作?)問題のようだ。それで、休止からの復帰時に、ネットワークインタフェースを一旦落としてから上げるスクリプトを/etc/pm/sleep.dに追加した。この時、DHCPでないと、ルーティングやDNSの設定もしなくてはならないので、DHCPにするように/etc/network/interfacesに記載した(デフォルトだとGUIの設定が使われるのだが、それはこのファイルとは別のようだ。統一した方がいいと以前から思っていたが、何か理由があるのか。)

その前に、以前効果があったので、復帰時に単にpingをしてみるようにした。

さて、効果はあるだろうか? (12/19 5:13)

pingは今一つだった。Thunderbirdはすぐに繋がったのだが、VivaldiからのPaperは、タブによって数分待てば繋がったりそうでなかったりだった。何が原因なのか分からないが、今度は、復帰時にdhclientを実行してみる。これは、DHCPでの初期化処理を行うもので、ネットワークインタフェースを一旦落としてから上げる処理の代わりだ。これなら確実な気がする。(12/19 19:39)

dhclientは効果があったようだが、まだ安心はできない。何となく寒いと(10℃前後?)駄目な気がするが、さすがにそれはないだろう。そして、今朝は別の問題が起こった。復帰後しばらくしてからネットが切れた。今度は、ルーターからプロバイダまでのPPPoE接続が切れた感じだった。それで、「インターネット@スタート」なる意味不明なモードを止めて、普通のPPPoEモードに変えた。また、切れた頃にNTPでの時刻更新が行われていて、その影響も考えられたので、NTPも止めた。時刻なんて飾りですからw

まったく、WSR-300HPはバグだらけの製品の気がして来た。良くあれでベストセラーになっているものだ。壊れたWHR-G301が復活するといいのだが、何度やっても駄目なので、今度問題が起こったら別のを探そうと思う。(12/20 19:37)

dhclientはバッグラウンドで動くプロセスなのを知らず(何となく気になっていたが、問題が起こらなかったので、そのままにしていた)、復帰のたびに起動していたら、頻繁に再要求するようになって、使用中にネットが切れたりするようになってしまった。それで、休止の時に、取得したアドレスなどを解放して停める(dhclient -r)ようにした。(12/22 5:31)

その後、GUI(NetworkManager)の関連コマンド(nmcli)でネットワークインタフェースの停止と起動ができることが分かり、なるべくOSは標準状態で使いたいので、それを使って、復帰時に一旦Ethernetを停止し、再度起動するようにした。これだと、ネットワークインタフェースの停止だけでなく、DHCPの初期化処理も行われるので確実だ。数日間、問題が起こっていない。(12/26 4:01)

 

PS. これとは関係ないが、ルーターがらみなので書く。Wi-Fiの出力についてである。僕はルーターの近く(半径3m未満)でしかiPhoneを使わないので、フルパワーの必要がなく、出力を落とせば外部からルーター(AP)が見える確率が減って、不正アクセスの可能性も減ると思ったので、下げた。今は25%にしているが、電波強度は問題ないようだ(Wi-Fiミレルというアプリで見たら、大体80%を超えていた)。10%の出力でも試したいが、ルーターの選択肢にないのでできない。

PS2. 更に別件だが、稿を改めるのも面倒なので書く。Wi-FiミレルのキャプチャをiPhoneから取ろうとして、失敗した。iPhoneへのアクセスにはgphoto2を使っているのだが、ファイル一覧が取れないことが多いのだ。何度か繰り返すと成功するので、gphoto2とiPhoneの相性だろう。それで、急遽、画像取り込みプログラムにリトライ処理を追加した。

この問題はiOSを10.2に上げるまでは起こっていなかったので、またしてもAppleにしてやられた感じだ。いい加減、まともなソフトを出して欲しい! ちゃんと高いお金払ってるんだからさ!! そういうお金が、下らない「革新」のために使われているのかと思うと、頭に来る。

ファイル一覧取得のエラーの件、ファイル一覧を取る前に250msの待ちを入れたら、エラーが起こらなくなって、リトライは不要な感じだ。その前にはカメラ情報を取得しているだけで、他の機器では待ちなしで問題ないのだが、iOS 10.2は反応が遅くなったようだ。(12/18 18:23 追記)

(7:46, 8:20 題を変更、若干修正・追記, 12/18 18:23 iPhoneの問題に追記)

  •   0
  •   2

先日、ボロボロになっているのに気付いたヘッドフォン(DENON AH-D5000)のイヤーパッドだが、結局、PALADIAという純正でない物(約1300円)を注文し、昨日届いた。口コミに「届くのが遅い」と書いてあったので、年内に届くかなと思っていたのだが、予定より2日も早く、中国から届いた。

外見は、口コミどおりパッドが薄い。あと、やっぱり、ちょっとしょぼい。でも、「良く見れば」とか「何となく」のレベルだし、値段相応なので、問題はない。ただ、手順の説明書などが何もなかったので、ちょっと心細いものはあった。が、webを探せば、交換について書いたページは多い。

いつものように、不器用な僕は交換に苦労した。なかなかパッドが外れなかった。パッドを本体に止めている白い板の爪が堅くて、回してもパッドばかり回って板は回らず、外れなかった。「軽く回すと簡単に外れる」と書いてあるページがあったが、個体差があるのかも知れない。

そのままでは板が回らないし作業しにくいので、まず、古いパッドを引っ張って外し、裸になった板(→ 写真3枚目)の爪の辺りを細いマイナスドライバーで押した。こういう場合、力を入れ過ぎて指を怪我をしたり、物を壊したりするのが通例なので、慎重にゆっくりやったら、外れた。が、やっぱり、ちょっと失敗した。ドライバーを強く押し過ぎたせいか、板と本体の隙間にドライバーが入ってしまい、板の爪付近が割れ、本体にも傷が付いた。でも、一箇所だけだし、見えない部分なので、実害はない。そして、良くあることだが、なぜか、2個目を外すのには余り苦労しなかった。学習の効果なのだろうか?

新しいパッドは若干小さめで、板を嵌めるマチも狭くて、嵌めるのにちょっと手間取ったが、なんとかなった。本体にも問題なく付いて、交換が終わった。苦労したとはいえ、約40分くらいで終わった。回転を良くするためか、白い固定板に油が付いていたので、指がベトベト、かつ、表皮のかけらがくっついて汚くなった。

外見は、どうしてか、わずかな違和感があるのだが、知らない人には純正と言っても全く分からないと思う。ただ、ちょっと聴いた感じだが、若干、音量が下がって音も軽くなった気がする。低音が減ったのかも知れない。でも、僕はヘッドフォンは補助的な物と思っているので、問題ない。

交換してから気付いたのだが、ヘッドバンド(というのか?)部の表皮の剥がれや頭脂汚れもひどいので、実は裁縫をする必要があったのかも知れない。

 

(2017/9/7 2:45追記) その後(7月頃)、パッドが固定板から外れてしまったので、両面テープで固定板に貼り付けた。やはり、マチが狭いのが良くないようだ。まだ大丈夫だが、剥がれたら新しい物に買い換えようと思っている。

 

PS. いつの間にか、WordPressが便利になっていた。digiKamで画像ファイルに付けたコメント(CommentかImageDescriptionかUserCommentかNotesかDescriptionかその他か)が、自動で画像下のコメント(キャプション)になる。これからは、どんどんコメントを入れたくなった。ただ、digiKamはコメントをさまざまなフィールド(少なくとも上記の全部)に入れまくるので、それはいかがなものかと思った。

どのフィールドにコメントを入れるかは、digiKamの設定で変えられるようだ。デフォルトだと7つのフィールドに対して読み書きするようになっている。同様に、評価(★)とタグも選択できる。さて、WordPressはどこを見ているのか? 「面倒だから、このままでいいか」という悪魔のささやきが聞こえたw 実際、画像のサイズに対して、コメントやタグのサイズなんてたかが知れているので、重複して保存したところで大きな問題ではない。(18:57)

  •   0
  •   2

1か月以上前に開始した、CrashPlanの初期バックアップがようやく終わった。約1.4TB (開始時は1.2TBだった)を38日間でアップロードしたので、平均アップロード速度は約430KB/s(約37GB/日)となる(圧縮や重複排除機能があるから、実際の通信速度はこれより低いだろう)。

なお、平日昼間は休止していたので、稼働時はもっと高速で、平均送信速度620KB/s(5Mbps)前後だった。また、どういう訳か時々通信が停まるのだが、停まっていない時は約1MB/s程度出ていた。

CrashPlanは、Windowsで使っていたBackblazeよりは遅いのだが、速過ぎるとプロバイダの帯域制限が掛かるので(実際に、Backblazeの時は警告が来たので、通信量制限プログラムを作った)、これくらいで良しとするべきだろう。ただ、時々通信が停まるのは何とかして欲しい。

(11/24 5:19 追記) それから、「バックアップ受信」(他人からのバックアップデータを自分のPCに保存する)を無効にすると、なぜか、本来のサーバへのバックアップが停まってしまうようだ。他人からのバックアップを受け付ける意味が分からないから止めたいが、無理なようだ。ルータがあるし(あってもサーバ経由で受信するのかも)、バックアップコードを公開してないから大丈夫だとは思うが、気持ちが悪いので、受信する時間(長さ)を0分にして実質的に受信しないようにした。

  •   0
  •   0

毎年のことだが、この時期になると、妙に、「早く作らないと」とそわそわする。昔だったら、うだうだしているうちに年賀葉書が売り切れたり、印刷が間に合わなくなることがあったが、今はそんな心配は要らないのに。。。

レイアウトは毎年のを使い回して、画像(イラスト)を新しく選び、文字(賀詞)と文字の色を変えた程度なのだが、結構時間を使った。イラストは、例年のように猫だ。黒猫にしたかったが、今年は丁度いいのがなかったので、日本的な猫にした。自分で描ければいいけれど、そんな能力は全くないので、他の方が描いた作品を選ぶしかない。でも、次点は黒猫のだったので、ブログ用に使った。

葉書用の絵柄は、柔らかく自然で明るい(ポップな感じもするが、使っている色が和風なせいか、そこまでくだけてない)色遣いで、新年らしくていい感じだと思う。ちょっと堅い感じがしたので、最初は選ばないつもりだったのだが、試しに配置してみたら結構いい感じだったので、採用した。新年の挨拶だし僕もいい歳なので、少し堅い方がいいだろう。黒猫じゃないけど、あの柄(白、茶、焦げ茶)も好きだ。というか、大体の猫は好きだ。そのイラストはイラストACに載っていたもので、なかなか作者のセンスがいいと思って興味があったのだが、名前が"acworks"なので、個人ではないのだろう。

これであとは、業者に発注するだけだ。ちょっと気楽になった。

ブログ用のは、ちょっと手抜きだが、シンプルに作った。本当はそのイラストを葉書に使いたかったのだが、目上の方も含めていろいろな人に出すにはどうかなと、ちょっと気が引けたのだ。どうぞ、新年にご覧下さい。

のんびりしていたら、大変なことに気付いた。葉書に使ったイラストに書かれている花はタンポポのようだが、調べたら季節外れ(開花時期は3/10〜5/末頃(季節の花300より))なのだ。イラストを別のに変えるか、そのまま使うか、ペイントツールで花を消すかだが、色的に、消すとイマイチになってしまうので、消すのは良くない。調べても、正月に咲く、似たような花はない。仕方ないので、イラストを変えることにした。ガッカリと疲労。。。でも、発注する前に気付いて良かったよ。(18:30)

ちょっとサビ猫のイラストを探したのだが、いい物がなく、仕方ないので、ブログ用だった黒猫を葉書用に昇格させ、3番目だった可愛いのをブログ用にした。明日発注だ。多分大丈夫だろう。(19:44)

フォントを変えたり(たまには明朝体にしたくなった)、文字やイラストの大きさを微調整して、いつもの会社、イロドリに発注したのだが、近頃の僕はどこまでもうっかりしているらしく、年賀葉書でなく普通の葉書で注文してしまった。でも、それから1時間経たないうちに確認メールが来て、間違いが分かった。もし連絡がなかったら、間抜けで残念な新年を迎えるところだった。

それにしても、夜(22時近かった)だというのに、メール以外に電話までくれる熱心さに感心した。普通は、絵柄が何であろうと、「客の指定なんだから知らん」と、指定どおりにしてしまうじゃないか。とてもありがたい会社だ。ただ、「夜間の電話はなしで」という指定をしたはずだったが、葉書の種類と一緒にリセットされてしまった(ヘルプを見た時かも)のかも知れないから、不問にしたい。(11/22 22:15)

 

以下は余談。

数年前から、「黒猫」で画像を探すと、アニメ(元はラノベらしい)のキャラの女の子が出てくるようになった。ゴスロリみたいな服装で、古風な髪型が結構好きなのだが、さすがに使わない。そもそも、彼女は一体何なのか、いまだに分からないw

それから、写真は使わないことにしている。こんな子とか、出したい猫は多いのだが、会ったことも一緒に暮らしてもいないものを出すわけにはいかないと思う。イラストで人が入っているものも同様で、自分でない人間は入ってはいけないと思っている。

あと、猫のイラストで良くあるのは、ピンと立っているのだが、そういう月並みなのを描いて平気な顔して公開する人の気が知れない(もちろん、僕はそんなのも描けないけど)。特に黒猫は描きにくいせいか、そういうのが多い感じだ。

そうそう、僕は、柄がとても味わい深い、サビ猫も好きなのだが、イラストはなかなかなさそうだ。でも、実際に探しはしなかったので、来年は探してみよう。

あと、技術的なことだが、今年からLinuxに移行したので、原稿をMS Wordでなく、LibreOffice Writerを使って作った。それで、微妙に使い勝手が違ったり(業者の指示どおりにはできない)、ページサイズの指定がちゃんとできているのか分からなかったりして、最終的にちゃんと印刷されるのか不安はある。でもまあ、画面で見たら大体葉書のサイズだったし、pdfinfoで見たらサイズは去年と同じだったし、pdffontで見たらフォントは埋め込まれていると出たので、まあ大丈夫だろう。

最後に、今年からメールアドレスを書くのを止めた。随分長く書いていたのだが、賀状を見てメールをくれたという人は一人も居なかったからである。同じ理由で電話番号も数年前から書かないことにしたので、書いているのは名前と住所だけだ。技術が進むと昔に戻るのか。そのうち住所も要らなくなりそうだ。

 

  •   1
  •   1

Windowsの画像で、同じファイルを無駄にコピーしないように、ショートカットにしたものがあるのだが、それをLinuxに移す時、ショートカット中の、そのショートカットが参照しているファイル名を取り出す必要がある。

最初は、Linuxのstringsコマンドを使って自分で取り出そうとして、基本的にはできたのだが、日本語のファイル名はそんなに容易には取り出せないことに気付いて困った。その時、ふと、「もしかしたら、あの何でもできるexiftoolなら対応しているのでは?」と思って試したら、本当にできた。LocalBasePathでショートカットが参照しているファイル名が取り出せた。他に、WorkingDirectoryで作業ディレクトリが取り出せるようだ。

例:

exiftool -s3 -LocalBasePath ~/"Pictures/1961/祖父母のアルバム-001_サイズ変更.jpg - ショートカット.lnk" | nkf -u

D:\Butty\My Documents\My Pictures\from old albums\1. 祖父母のアルバム\001_サイズ変更.jpg

まったく感心した。そして、この機能を使って、ショートカットをLinuxのシンボリックリンクに変換する(実際にはシンボリックリンクを新たに作る)プログラムを作り、問題なく処理できて、digiKamで表示できるようになった。

なお、変換する時には、WindowsのディレクトリをLinuxのに変換する必要もあるが、汎用にするのは結構面倒なので、ひとまず画像の変換専用ということにして、WindowsとLinuxそれぞれのトップディレクトリを固定した。

例:

ショートカットが参照しているファイルがWindowsのトップ(D:\Butty\My Documents\My Pictures)以下だったら、Linuxのトップ(/home/butty/Pictures)に変換する。

※前提として、WindowsとLinuxのトップディレクトリの実体が同じである必要がある。

(11/20 5:41 若干加筆・修正)

  •   0
  •   0