WebDavサーバーを立ててWindows7とMacで使う

追記@2015-11-12

Windows7では、NetDriveというものを使えば簡単にマウントできるのですが、

– 容量の表示がおかしい(2TB程度のはずなのに10TBと表示されている)
– わたしの環境だとドライブ一覧のUIが乱れて、マウントしているディスクが見られない
– 一ヶ月の試用期間を過ぎると帯域制限されて使い物にならない
– $5ぐらいなら買っていたかもだが$40ぐらいする

というわけで、WebDavをやめてSambaにしました。Sambaは設定が面倒ですが、秘伝のタレ的なものを作ったのでこちらをどうぞ→ http://mitsuakikawamorita.com/blog/?p=3111


共有ドライブが欲しいなと思いました。自宅に省電力サーバーがあるので、NASを購入するよりそれを使うと安上がりです。

当初、Sambaを試してみたのですが、Macでは特に問題なかったのですがWindows7でどうしてもマウントできず、それではということでFTPにしようと思ったんですが、Macではファイルのアップロードができないとのことで、WebDavを試してみました。結果的には簡単にできたので良かったと思います。帯域については50MB/sほどで悪くはないです。もちろんGbでて欲しいのですが、帯域は何で決まるか把握できていません、iperfでGbでるLANなのですが、WebDavサーバーの性能が良くないのか(CPUがAtom N2800なので)、それともApacheのWebDavモジュールなのか、それともWebDavプロトコルそのもののオーバーヘッドなのか。。。

ともかくとしてあっさりWebDavサーバーを立ててMacとWindows7でマウントできたので、WebDavはおすすめではあります。

前提:
– サーバーのOSはUbuntu 12.04 (おそらくこれ以降のバージョンでも同様です)
– 認証なし (LAN内で使うことを前提、ユーザーによる権限等一切なし)
– UbuntuサーバーにWebDavを入れる (実質ApacheのWebDavモジュールですが)
– MacとWindows7でマウントできるようにする

手順:
1. サーバーでWebDavを使用可能にする
2. Macでマウントする
3. Windows7でマウントする

まず「1. サーバーでWebDavを使用可能にする」です。Ubuntuを前提とします。

# まずはWebDavモジュールを導入します。Apacheが入っていないとこのコマンドは有効でないかもしれないので、なければApacheを入れておきます。
$ sudo a2enmod dav
$ sudo a2enmod dav_fs

# WebDav用のディレクトリを作ります
$ sudo mkdir -p /var/www/webdav
$ sudo chown www-data /var/www/webdav

# Apacheの設定ファイルにWebDavを追加します (少し長いので後述してます)
$ sudo vi /etc/apache2/sites-available/default

# Apache2をリスタートします (serviceコマンドを使うべきかもです)
$ sudo /etc/init.d/apache2 restart

/etc/apache2/sites-available/default には以下のように追加します。
<VirtualHost *:80>
# ~中略~
Alias /webdav /var/www/webdav
    <Location /webdav>
    Options Indexes FollowSymLinks MultiViews
    Dav on
    </Location>
# ~中略~
</VirtualHost>

これでWebDavが有効になったはずです。ブラウザで、http://<サーバーのIPアドレス>/webdav にアクセスしてみると、以下のような感じでブラウジング可能になっていると思います。

webdav

では次に、「2. Macでマウントする」です。

Finderの上のメニューの「移動」→「サーバーへ接続」から、「サーバーアドレス:」に「http://<サーバーのIPアドレス>/webdav」と打ち込んで、「接続」ボタンを押します(↓の画像)。

スクリーンショット 2015-10-07 11.20.22

すると、ゲストかユーザーを選べます。今回WebDavサーバーは認証なしですのでゲストを選択して「選択」ボタンを押します(↓の画像)。

スクリーンショット 2015-10-07 11.21.00

これでFinderにマウントできました。

次に、「3. Windows7でマウントする」です。

Windows7ではWebDavはSSLでないと標準ではだめだそうです。回避方法はあるようなのですが(参考のQNAPの記事を参照)、今回はそれを試さず、QNAPの推奨の NetDrive というソフトウェアを使います。

このソフトウェアは、2015-10-07現在では30日の試用期間がありますが、試用期間を過ぎても、ドライブ一個は可能、自動接続ができなくなる、とのことです。

NetDriveをインストールして立ちあげて、↓のように設定をして、「セーブ」として「接続」を押すとマウントできます。「名前」を「WebDav」とすると、名前の重複があると怒られるので別の名前にしましょう。

2015年10月07日水曜日、webdav、netdriveの設定

注意点としては、
– 日本語ファイルはだめかもです (Apache側のコンフィグがおそらく必要です)

以上です。

参考:
http://moonstruckdrops.github.io/blog/2013/04/02/httpd-webdav/
https://www.qnap.com/i/jp/tutorial/con_show.php?op=showone&cid=80

JavascriptでsetIntervalでループさせて指定秒数後に停止する例

setIntervalで関数を回して、指定秒数後に止める例です。setInterval, clearInterval, setTimeoutの合わせ技です。いつも忘れるので備忘録的に残しておきます。

jsfiddle (developer toolを開いて実行してください) → https://jsfiddle.net/r94sowe4/

コード

<!DOCTYPE html>
<html>
    <head>
	<title>ボタンを押すと関数がsetIntervalで回され、指定秒数後に停止する例</title>
	<meta charset="UTF-8">
    </head>
    <body>
	<div>
	    <h2>ボタンを押すと関数がsetIntervalで回され、指定秒数後に停止する例</h2>
	    <p>Developer Toolを開いて、ボタンを押してください。</p>
	    <input type="number" name="time" id="time" value="3" min="1" max="100" required> (秒)
	    <br />
	    <input type="button" value="開始" onClick="start();">
	</div>

	<script>
	    var time;
	    var intervalID;

	    function start() {
		time = parseInt(document.getElementById('time').value, 10);

		intervalID = setInterval(loop, 0);
		setTimeout(function () {
		    clearInterval(intervalID);
		    console.log('loop has stopped after ' + (time) + ' sec!');
		}, time * 1000);
	    }

	    function loop() {
		console.log('I am the loop!');
	    }
	</script>
    </body>
</html>

コツとしては、clearIntervalを使いたい場合は、setIntervalを宣言的に使うって感じですかね。

MacのYosemiteでキーボードショートカットを割り当てる

人それぞれ独自のキーボード捌きがあるかと思います。私はアプリケーションのタブの移動では、command+k、command+lで移動したい派です。

それらを実現する方法はいくつかあります。今までは、

– BetterTouchTool

を主に使っていました。しかし上手くいかない点もあります、たとえばterminal.appでcommand+lをBetterTouchtoolで割り当てても、どうやらterminal.app独自のショートカットのクリアが発動してしまいます。

少し調査してみると、OSの機能でショートカットを割り当てられることを発見したので、↓に書いておきます。

システム環境設定

キーボード

ショートカット

アプリケーション

「+」ボタンを押して、ショートカットを割り当てたいアプリケーションを選択

右側のメニューに出現したアプリケーションを選択した状態で「+」ボタンを押す

ウィンドウが開くので「メニュータイトル」と「キーボードショートカット」を打ち込む
(このときメニュータイトルは一字一句正確に)

ショートカットが割り当てられる

↑実際これで動くようになりました。私のキーボードショートカットはかなりの部分がBetterTouchToolの上に載っていますが、徐々にこのOS内蔵の機能に移行するのが良さそうです。たくさんある場合、登録作業は少々面倒ですが^^;

Debianで特定のウィンドウを録画してmp4にする

前回はgifにしましたが今回はmp4にします。また、特定のデスクトップを録画する方法も追加しました。

ちなみにslackにはmp4のファイルをアップロードしても単なるファイルとして表示されて、動画としてインライン展開してくれない点には留意したほうが良いと思います@2015/04/27現在。gifにするべきですね。

環境は

– Debian
– recordmydesktop ($ sudo aptitude install recordmydesktop)
です。おそらくUbuntuでも同じです。

まず、xwininfoと打って、GUIで録画したいウィンドウをクリックします。

$ xwininfo

すると、

xwininfo: Window id: 0x2c0003e

などと表示されます。そしてこの値を使って、以下のようにします。

$ recordmydesktop --windowid 0x2c0003e

すると、そのウィンドウが録画されます。ターミナルに戻ってctrl+cとすると録画が終了し、エンコードし始めます。

out.ogvというファイル名で、ホームに出力されます。

これはogv形式なので、mp4にしてみます。Youtubeにアップロードする、などの手もあるかもですがローカルでやってみます。まずmemcoderをインストールして、次にmp4にエンコードします。

$ sudo aptitude install mencoder
$ mencoder out.ogv -oac mp3lame -ovc lavc -lavcopts vcodec=mp
eg4 -o output.mp4

こんな感じです。

Debianで画面を録画して軽量のgifにする

追記@2015-04-28

特定のWindowを録画するには、

$ xwininfo

として、マウスで調べたいwindowをクリックすることでwindowのidが表示されます。そして

$ recordmydesktop --windowid <windowのID>

とすればOKです。たとえばxwininfoの結果が0x2c0003eなら、

$ recordmydesktop --windowid 0x2c0003e

とします。


追記@2015-06-02

gifsicleでdelayのオプションがないと早送りな感じになるので、–delay=7としておおよそ撮影時と同じ速度になるように修正しました。


gifはたいていの環境で再生可能なので便利に使っています。何かを作って見せるときに画面を録画してgifにして貼っつけておくのが個人的な流行なので、Debianでもそれをやりたいなと思いました。ちなみにMacの場合、LICEcapというもので簡単に出来ます。

Debianで録画するには、

– recordmydesktopとffmpegとgifsicleをインストール
– recordmydesktopで録画
– ffmpegでgif化
– (オプション) gifsicleで軽量化 (ただし、gifsicleで処理すると早送りのような感じになります)

という手順です。

まず必要なパッケージをインストールします。

$ sudo aptitude install recordmydesktop ffmpeg gifsicle

そしてrecordmydesktopで録画します(GUIで「アプリケーション」→「サウンドとビデオ」にあると思います)。

録画して出来たファイル(video.ogvとします)、ffmpegでgifにして、さらに必要であればgifsicleで軽量化します。

$ ffmpeg -i video.ogv -pix_fmt rgb24 output.gif
$ gifsicle --delay=7 -O3 < output.gif > new.gif

以上です。gifsicleのdelayオプションで7ぐらいを指定すると、おおよそ撮影時の挙動に近いかと思います。ファイルサイズですが、

– recordmydesktopで撮影したファイル(ogv形式): 2.8MB
– ffmpegでgif化したもの: 437MB
– gifsicleで軽量化したもの: 756KB

でした。ogvは小さくていいんですが、MacやSlackでは再生されずなのでgifにしてます。