してログ

仮想マシンをボリューム間で移動することがあったのでそのメモです。ssh でそのままコピーすると、シンがシックになっちゃうので、ディスクイメージだけは vmkfstools を使用します(それ以外は普通にコピーして構いません)。

基本的には、vmdk と vmx をコピーするだけの単純な作業になります。データストアにかなり負荷を掛けますので、夜間など利用が少ない時間帯に行うことをお勧めします。

ディスクイメージのコピー

まず、スナップショットがある場合は統合しておきます。コピーは下記のようなコマンドになりますが、-d はシンプロビジョニングにする指定になります。-a オプションはアダプター種別で、付けても無視されたので無しでいいと思います。

vmkfstools -i /vmfs/volumes/src_vol/src_vm/src_vm.vmdk /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmdk -d thin

ちなみに、スナップショット統合し忘れて ~000001.vmdk のほうをコピーしたことがあるのですが、「スナップショットの管理」の「すべて削除」はエラーで不能でしたが、「ディスクの統合」ではうまく解消できたようです。

vmx ファイルのコピー

他のファイルはいらない(逆にあると起動しない)ので vmx ファイルだけコピーします。ディスクイメージの名前を変更した場合は、vmx をテキストエディタで編集し、変更したファイル名を置換します。

cp /vmfs/volumes/src_vol/src_vm/src_vm.vmx /vmfs/volumes/dst_vol/dst_vm/dst_vm.vmx

仮想マシンの登録変更

古い仮想マシンを登録解除し、コピーした仮想マシンを登録し直します。初回起動時にコピーか移動か尋ねられると思いますので、移動を選択しておきます。実際に起動してみて問題が無ければ、古い仮想マシンはボリュームから削除して構いません。

中古で買ったパソコンの回復ドライブを作成しようと思い、Windows10 が示した 8GB の USB メモリを用意したんですが、半分ぐらい進んだ時点で「エラーが発生しました」とかで失敗してしまいました。理由も何も示されないのは、もはや Windows10 の伝統芸能なんでしょうか。

これさ、8GB の USB メモリでいいと思うじゃん
これさ、8GB の USB メモリでいいと思うじゃん

結論から言うと容量不足なわけで、16GB の USB メモリに作成し直したところ 9.18GB ほど必要だったことが分かりました。 ちなみに、失敗した USB メモリを見てみると約半分ぐらい容量が残っていて、これだけ見ると容量不足と気が付きにくいんでは無いでしょうか。恐らくは、初期の Windows10 は 8GB に収まっており、あのメッセージは固定テキストで実装されているんだと思いますね。準備に結構時間が掛かっているにも関わらず、正確な見積もり容量すら計算していないとか、相変わらずお粗末な OS ですよね。

Windows7 のころまでは subst というコマンドを使って実現していましたが、最近の Windows では利用できなくなっていました。このコマンドをレジストリに登録することで解決できるようですが、設定も解除も面倒なので別の方法を紹介します。

やり方はすごい単純で、ネットワークドライブを自分自身のディレクトリに設定してしまうというものです。コマンド操作もレジストリ編集も出てきませんので、subst+起動バッチを使うよりお手軽かも知れません。

  1. ドライブにしたいディレクトリのプロパティを開き、[共有]>[詳細な共有]>[このフォルダーを共有する] にチェックを付ける(必要に応じてアクセス許可も設定します)
  2. エクスプローラでネットワークから、自分のPC名を探して開きます
  3. 先ほど設定した共有名を右クリックし「ネットワークドライブの割り当て」を選択します
  4. 最後にドライブレターを選んで [完了] を押します
こんな地域が地球上にあるとは思わなかった
こんな地域が地球上にあるとは思わなかった

デバッグしてたら、白夜や極夜の地域で表示が崩れてしまい、最初バグだろうと思っていたのが実は正しかったようです。プログラムとしては、日中の範囲は日の出時刻と日の入り時刻で管理し、それぞれ1回あるか無いかしか判断していませんでした。これを、今回配列に変更し複数の日の出、日の入りいイベントを管理できるように改修してみました。

恐らく、白夜や極夜が明ける最初の1日しかこのようなことは起こらないのでは無いかと思いますが、どの地域でも完璧に表示したいので対応しました。ただし「どの地域でも」とは言いましたが極点の2地点だけは別です。極点ではすべての方角が、南もしくは北になるのでここだけは表示できないと思います(どんな表示になるか後でやってみよう)。

Windows10 バージョン1809 あたりからデフォルトの設定が変わったのか、ウィンドウの境界線が描かれなくなったりしていました。アップデートしてずっと使っているPCなら設定が引き継がれますが、新規インストールなどの場合はちょっと戸惑う点です。前から思っていますが、フラットデザインはあまり好きじゃない部分ってこういうところです。そこにボタンがあるのが視覚的に分からなかったり、どのウィンドウが手前なのか分かり難かったり、明らかに利便性を損ねていると思います。

アクセントカラーを境界線に適用する

デスクトップで右クリックして、[個人設定]>[色]>[タイトルバーとウィンドウの境界線] にチェックを入れます。タイトルバーにも色が付いてしまうのがイマイチですが、境界線が付くので好みの色があってフラットデザインが好きならこちらの設定が良いでしょう。また、リモートデスクトップで視覚効果をオフにしたい場合もこちらがいいと思います。

こちらの場合は色を固定した方がいい
こちらの場合は色を固定した方がいい

アクティブウィンドウに影を付ける

エクスプローラのPCアイコンを右クリックして、[システムのプロパティ]>[システムの詳細設定]>[パフォーマンスの設定]>[ウィンドウの下に影を表示する] にチェックを入れます。アクセントカラーだと見た目が大きく変わってしまいますが、こちらはウィンドウのデザインはそのままに周囲に影を落とします。Windows7 の Aero や MacOSX がお好きな方(私も)はこちらが断然お勧めです。

やっぱりこっちがお勧め
やっぱりこっちがお勧め

ついでにゴミ箱の削除確認を出すようにする

最近の Windows では削除確認が無く直接ゴミ箱に入るようですが、何となく不安だし間違えたときメンドクサイので今までどおりがいいです。設定方法は、ゴミ箱を右クリックして [プロパティ]>[削除の確認メッセージを表示する] になります。

ネットで探しても、シンプルで使い勝手が良いカレンダー作成関数が無かったので自作してみました。そのまま使えて、余計なコードが入って無くて、カスタマイズもしやすい、そんな関数になっていると思います。

カレンダー作成関数
function build_calendar(mon,cell) {

	var cur = new Date(mon.getTime());
	var lst = new Date(mon.getTime());

	cur.setHours(0,0,0,0);
	cur.setDate(1);
	cur.setDate(-cur.getDay()+1);

	lst.setMonth(mon.getMonth()+1,0);
	lst.setDate(lst.getDate()+7-lst.getDay()-1);

	var tbody = '';

	tbody += '<table>';
	tbody += '<tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr>';

	while (cur<=lst) {

		tbody += (cur.getDay()==0 ? '<tr>' : '');
		tbody += '<td>'+cell(cur)+'</td>';
		tbody += (cur.getDay()==6 ? '</tr>' : '');

		cur.setDate(cur.getDate()+1);
	}

	tbody += '</table>';

	return tbody;
}

使い方

第1引数に作成したい月の Date オブジェクト(月内であれば何でも良い)を、第2引数で日付セルのコールバック関数を渡してください。セルをコールバック関数にしたことで、予定を入れたり、月齢を入れたり、自由にカスタマイズができます。

var html = build_calendar(new Date('2019/1/1'),function(cur){
	return cur.getDate();
});
出力結果
303112345
6789101112
13141516171819
20212223242526
272829303112

コールバック関数は引数で Date オブジェクトを渡してくるので、シンプルに getDate() で日付を返せば出力結果のようになります。その Date オブジェクトを別の関数(たとえば月齢計算など)に渡せば、情報をカレンダーに埋め込むことが可能になります。オプションを増やして、デフォルトの表示を付けたり、月内の日付以外は出さないようにしたり、汎用的に拡張してもいいかも知れません。

ロジック

コードを見れば分かる程度のことですが、簡単にロジックを説明しておきます。

  1. 渡された日付からその月の1日を求め、更にその週の日曜日(A)を求める
  2. 渡された日付からその月の末日を求め、更にその週の土曜日(B)を求める
  3. (A)から(B)までループさせながらテーブルタグを構成していく
  4. 各日付の中身は、渡されたコールバック関数を呼び出して任せる

シンプルにするための工夫としては、半端な前月と次月の日付を含めてループさせることで余計なパディングをしていないこと、<tr> タグの入れ方により変数の数を減らした点です。カレンダーのカスタマイズは CSS とコールバック関数でほとんどクリアできると思います。

昨日からサイトの構成を変更してたのですが、表題どおり iPhoneX だけメディアクエリが効いてないような症状に悩まさました。iPhone6 plus や Android では問題ないのに、iPhoneX だけ無視されるメディアクエリがあるようで、詳しくは分からないのですが複数ブロックに分けて書いてあるものをまとめたらうまく動く、という訳のわからん状態です。明らかにおかしな動きをしているので、iPhoneX のバグじゃないかと思います。

数年前に作っていた大気光象時計を、このサイトの右側に常時配置する向けに改造してたら「あれっこれ違うんじゃないの」と思ってしまったので、ついでに改良してみた。

24時間計を180度回転

昼間時間を扇形に示していると、24時間計は0時の位置を真下に置いたほうがいいと思いました。今までは真上だったので、昼間の範囲が下側に示されるので昼夜が逆転しているように見えるためです。

南半球の太陽方位

24時間計と同様の理由で、南半球では昼夜が逆転したように見えていました。とりあえず、同じように180度回転させてみましたが、逆回りにするか迷っています。北半球の我々は文字盤を南向きに見て、左(東)から昇って右(西)に沈むと自然に見えます。南半球の人は文字盤を北向きに見て、右(東)から昇って右(西)に沈むのがいいんじゃないかと思います(たぶん)。

ただ南半球はまだこんがらがってるので、じっくり考えて対応したいと思います。北半球はやはり、北を上にして左回りに太陽を動かすのが良さそうです。

24時間計の腕時計を見ると0時が上なのですが、昼間を上にするなら0時を下にしなければならなくなり、腕時計と逆になっちゃうけど仕方が無いです。同じような理由で、太陽方位も北半球だと南に向いて左(東)から昇り右(西)に沈むというのが自然なため、上が南で下が北という地図の見方と逆になってしまいます。こう考えると、南半球の表示のほうは地図を見る方向と一致して分かり易くて、なんか悔しいような気もします。

ネットワーク共有ファイルなどで開いているときに回線切断になったりすると、誰も開いていないファイルが使用中で編集ができなくなる場合があります。ちょうど昔の Windows で画像のサムネイルの thumb.db のせいでフォルダが削除できなくなったりする問題に似ています。MS-Office でも何らかの形でロックファイルみたいなものがあるんだと思いますが、そこらへんは知らなくても解消できる方法があったのでご紹介します。

設定方法

  • リボンメニューの余白で右クリックして「リボンのユーザー設定」を開く
  • ユーザー追加したグループがない場合は、右側のタブのどこかに予め作っておく
  • コマンドの選択から「リボンにないコマンド」または「すべてのコマンド」を選択する(コマンドリストが出るまで結構待たされる)
  • コマンドリストから「読み取り専用の設定/解除」を選択し(ユーザー追加のグループに)「追加>>」を押す
  • 設定が終わったら「OK」で適用する
すべてのコマンドのかなり下のほうにある
すべてのコマンドのかなり下のほうにある

追記1

ロックしたユーザーが別のユーザーだからか、上記コマンドでも「通知」しか選べないような場合がありました。NAS 上のファイルなので再起動を最終手段としていろいろと試してみたところ、別のフォルダーにそのファイルを移動したところ編集できるようになりました。もしかしたら勘違いかも知れないレベルの情報ですが、試してみる価値はあるかと思います。

追記2

追記1で書いた内容ですが、恐らく時間が経って編集可能になったというのが真相だと思います。ファイルを開きっぱなしのノートPCがスリープなどでネットワーク切断した場合、そのファイルをロックしたままになるとこのような状態になります。このような場合は「通知」を選んでしばらく放っておくと、「利用可能になりました」という通知が来ますので [編集] ボタンで復帰できます。

平成31年

新しい元号は4月1日に発表するらしいが、やっぱり天皇即位と同時に発表になった方がいいと思うんです。システムの変更なんてどうでもいいし、平成31年でも新元号元年でも受け付けれるよう柔軟に対応したらいいのに、なんか面白くないですよね。

そこで提案。4月1日に発表するのは「アルファベット1文字」だけにして「漢字」は5月1日に発表する、というのはどうでしょう。システム的には漢字でもアルファベットでも対応できるようにしておけばいいし、漢字に置き換える関数は暫定でアルファベットにしておけば問題は少ないと思いますよ。まぁ、これに関してシステム変更はそんなに手間でも無いし、普通に5月1日でもいいと思いますけどね。