■ - iPhoneでGmailや連絡先と同期する方法 (2012-02-01)
Androidユーザーになって久しく、iPhoneでGmailや連絡先と同期する方法を忘れてしまいました。検索してみたところ、情報が古いものも多く、具体的なやり方がすぐに見つからなかったのでメモ。
- Googleの以下のページが一番詳しいです。
- http://support.google.com/mobile/bin/answer.py?hl=ja&answe..
Androidユーザーになって久しく、iPhoneでGmailや連絡先と同期する方法を忘れてしまいました。検索してみたところ、情報が古いものも多く、具体的なやり方がすぐに見つからなかったのでメモ。
JScriptでクリップボードを扱う方法。その昔、IEを使う方法が主流でしたが、今はセキュリティの関係で使えないので、代わりに、MS Officeをインストールすると使える「Forms.Form.1」がベスト。
function getClipboard() { // クリップボードを取得する関数
var ff = new ActiveXObject("Forms.Form.1");
var tb = ff.Controls.Add("Forms.TextBox.1").Object;
tb.MultiLine = true;
if (tb.CanPaste) tb.Paste();
return tb.Text;
tb = null; ff = null;
}
function setClipboard(text) { // クリップボードにコピーする関数
var ff = new ActiveXObject("Forms.Form.1");
var tb = ff.Controls.Add("Forms.TextBox.1").Object;
tb.MultiLine = true;
tb.Text = text;
tb.SelStart = 0;
tb.SelLength = tb.TextLength;
tb.Copy();
tb = null; ff = null;
}
仕事でJavaScriptをよく書いていますが、大きなライブラリ的なものを書くことは少ないので、なかなか深いところまで触る機会は少ないのです。となると、必然的に、あまり使わないJavaScriptの機能は忘れてしまうということに。特に、プロトタイプ的なオブジェクト指向は、よく考えないと使い方を間違えてしまいます。
そこで、再度、ここで確認。関数の中で「this.xxx」のように定義したプロパティは、インスタンスからも利用できます。
<script>
var DogClass = function () {
this.name = "dog";
this.age = 20;
this.naku = function () { return "wan!"; }
};
var taro = new DogClass();
alert(taro.age); // 20
alert(taro.naku()); // wan!
</script>
ちなみに、関数ないで定義したローカル変数をインスタンスから使うことはできません。
<script>
var DogClass = function () {
var name = "dog";
var age = 20;
};
var taro = new DogClass();
alert(taro.age); // undefined
</script>
そして、prototypeを使うと、各インスタンスの中で定義された定義を共通化することができます。逆に言えば、prototypeを使わないと、インスタンスを作るたびに、個々のインスタンスに新たなプロパティが作成されます。prototypeを使うと、各インスタンスのプロパティを共通化(リンクのような感じ?)することができます。
<script>
var DogClass = function () {
this.name = "dog";
this.age = 20;
};
DogClass.prototype.naku = function () { return "wan!"; };
var taro = new DogClass();
alert(taro.naku()); // wan!
</script>
とは言え、インスタンスのprototypeされたプロパティを書き換えると、新たな値が生成される(リンクではなくなる)ので、値を書き換えたからといって全てのインスタンスの値が書き換わる訳ではありません。
<script>
var DogClass = function () { this.age = 20; };
DogClass.prototype.name = "dog";
DogClass.prototype.naku = function () { return "wan:" + this.name; };
var taro = new DogClass(); // インスタンス taro を作成
taro.name = "taro"; // prototypeされた値を書き換え(新たな値が生成される)
var jiro = new DogClass(); // インスタンス jiro を作成
jiro.name = "jiro"; // prototypeされた値を書き換え(新たな値が生成される)
alert(taro.naku()); // wan:taro
alert(jiro.naku()); // wan:jiro
</script>
【参考】
技術評論社から出版されている「PHP公式資格教科書 PHP5技術者認定初級試験対応」について、本文に一部、誤りがありました。すみません。ここでその正誤表(速報)を紹介します。
問題文に「返り値の配列が空となるような$_POST['point']の値を2つ選択せよ。」とありますが、このソースでは文字列を代入しているので返り値が配列になることはありません。ソースコードに以下の修正が必要です。
2行目:$error = array(); 4行目:$error[] = "Your point must be a number."; 6行目:$error[] = "Your point must be at least 70 and no more than 90.";
セットされます。
ページ上部の第7章の説明が第6章のそれと完全に同一で「データベース」の説明としては不適切となっています。
「プログラム1」の4行目、条件式が書き込み可能な場合に「書き込みパーミッションがありません。」というメッセージを出力して終了するようになっていますので、メッセージ通り動作させるには、is_writable関数の前に否定の演算子「!」を付ける必要があります。
| コメントの一覧 | |
| 永田 勝利 | 「P122 第7章の説明 †ページ上部の第7章の説明が第6章のそれと完全に同一で「データベース」の説明としては不適切となっています。」とありますが、正しい記述はどのようなことですか。 (2012-01-09 00:03:44) |
| クジラ | 補足ありがとうございます。修正内容を記述しました。 (2012-02-04 00:56:25) |
WSH/JScriptでコマンド実行の方法をメモ
var shell = new ActiveXObject("WScript.Shell");
shell.Exec("notepad"); // コマンドを実行
終了まで待機する場合
var shell = new ActiveXObject("WScript.Shell");
var e = shell.Exec(cmd); // コマンドを実行
while (e.Status == 0) {
WScript.Sleep(100);
}