カテゴリー: Client Side

[メモ] Xubuntuでおひとり様サーバーを立てるまで 2

前回の記事に引き続いてXubuntuサーバーの初期設定をメモ。今回はXmingを使ったリモートからのGUI操作関係の設定と、VALUE DOMAINDDNSを使ったサーバー公開の設定について。

続きを読む

[メモ] Xubuntuでおひとり様サーバーを立てるまで 1

余ってた古いPCにXubuntu 10.04を導入して自分専用サーバーを立てたので、初期設定等を忘れないうちにメモ。

主要な用途はSambaSFTPを使ったファイルサーバー。Webサーバーは立ててない。

Ubuntu Server Editionを使わずにXubuntuを選んだのは、XmingでアクセスしてGnuCashFontForgeを使うため。

ついでに、VALUE DOMAINDynamic DNSに対応していたので、これを使って外部から接続できるように設定してみた。

続きを読む

乱数の精度を調べてたらOpera Miniのバグを見つけた

前回の記事に引き続いてJavaScriptの乱数の精度を調べてたら、iPhone用のOpera Miniのバグを見つけた。

NumberオブジェクトのtoStringメソッドがうまく働いていないっぽい。

詳細は続きで。

続きを読む

JavaScriptの乱数の精度の話

前回の記事で予告したとおり、今回はJavaScriptのMath.random()で生成できる乱数の精度の話。

前回の記事で、JavaScriptでは2^53未満の正整数を扱うことができるということがわかったから、今回の記事では2^53未満のランダムな正整数を生成してみる。

具体的には↓のようなコード。

var ub = Math.pow(2, 53), list = [];
for (var i = 0; i < 16; i++) {
  list[i] = Math.floor(Math.random() * ub).toString(2);
  while (list[i].length < 53) { list[i] = "0" + list[i]; }  // padding
}
window.alert(list.join("\n"));

続きを読む

JavaScript (ECMAScript) の整数の精度と乱数の精度について

久しぶりにJavaScript (というよりECMAScript) のネタ。今日はECMAScriptで扱える整数と乱数について。

ECMAScriptの数値 (Number) はIEEE 754の倍精度浮動小数点数であると仕様書に明記されている。

ECMAScript Language Specification 5th edition

4.3.19 Number value

primitive value corresponding to a double-precision 64-bit binary format IEEE 754 value.

(強調は引用者)

ECMAScript Language Specification 3rd edition

4.3.20 Number Type

The type Number is a set of values representing numbers. In ECMAScript, the set of values represents the double-precision 64-bit format IEEE 754 values including the special “Not-a-Number” (NaN) values, positive infinity, and negative infinity.

(強調は引用者)

なので、倍精度IEEE 754値の精度の範囲内であれば、桁落ちの心配をせずに整数として扱うことができる。

続きを読む

[JavaScript] prototypeに直接代入しちゃうのってダメじゃなかったっけ?

JavaScript基礎文法最速マスター - なんとなく日記という記事がはてブ界隈で話題になっていたので、徒然なるままに読んでみて心に浮かんだことをそこはかとなく書きつけてみる。

続きを読む

[Windows] NTFSハードリンクで増分スナップショットをとるバックアップツールを作りました!

タイトルの通り、NTFSハードリンクを使って増分スナップショットを作成するバックアップツールを作ったので公開します。

LiosK's Rosids-Backup-Tool at master - GitHub

Rosids is a snapshot-style backup tool written in Python 3, emulates the things like pdumpfs, `rsync --link-dest' or Apple's Time Machine on Windows using NTFS hard links.

Rosidsは指定したフォルダのスナップショットを作成するだけの単純なバックアップツールですが、NTFSのハードリンク機能を使うことでバックアップに必要なディスク容量や所要時間を節約する機能を持っています。pdumpfsやrsyncの--link-destオプション (参考)、アップルのTime Machineのような機能だと言えば、わかる人にはわかるでしょうか。

Rosidsは、上に挙げたようなツール群と違って、はじめからWindowsをターゲットに作られているので、ジャンクションやファイル属性のようなWindows特有の機能に対するサポートが手厚いです。加えて、日本語環境でテストされているので、Unicodeファイル名に対する配慮もされています。

細かい特徴や詳しい使い方については続きで。

続きを読む

[JavaScript] ランダムなひらがな列を出力するBookmarklet

ちょっとした用事があって、16文字のランダムなひらがな列を生成する単純なBookmarkletを書いたのでメモ。

Bookmarklet

(function(lb, ub, n) {
    var cs = Array(n), span = ub - lb + 1;
    for (var i = 0; i < n; i++) {
        cs[i] = lb + Math.floor(Math.random() * span);
    }
    return String.fromCharCode.apply(String, cs);
})(0x3041, 0x3093, 16)

ソースを見ればわかるとおり、16文字という文字数はコードの最後に指定しているので、そこを書き換えれば任意の長さのひらがな列が生成できます。

ひらがなの範囲は、Unicodeのひらがなの範囲を参考に、「ぁ (U+3041)」から「ん (U+3093)」にしてみました。

[Concurrent Haskell] 無限リストが止まらない

HaskellのControl.Concurrent.Chanを使って、簡単な並行処理プログラムを作ろうとして試行錯誤したのでメモ。

Control.Concurrent.ChanはHaskellで並行処理をするときに使うことができるFIFOキューライブラリ。複数のスレッドからキューにデータを流し込んで、別のスレッドがそのデータを読み取って処理をしたりすることができる。

Control.Concurrent.Chanを使えば、スレッド間の排他処理とかを全く考えずに済むので、簡単に並行処理プログラムを書けるかと思っていたけど、処理終了時の扱いに悩んだので、ちょこちょこと試行錯誤してみた。

詳細は続きで。

続きを読む

NTFSについて調べたのでメモ

諸事情あってNTFSについて調べたので、自分なりに理解したところをメモ。

基本的には、

の二つのサイトに書いてあることから必要な部分を抜粋しているだけだけど、説明を省略してる部分もあるし間違ってる部分もあるかも。

続きを読む