JavaScriptでできること

〜HTML4にバイバイ〜




Corporation, Okinawa JAPAN

CLI教

宮里 忍

2010年12月24日




今宵、

JavaScriptの常識は崩れ去る

祝電




HTML4の話をしよう。

HTML4とバイバイするために。

by CLI教の教祖様

START
START
START
START
START
START
START
START
START
START

jQuery animate

START

[HTML]
<img class="animation" src="check.jpg" 
  style="position: absolute; left: 300px; top: 400px;" />

[JavaScriptの処理]
$(function() {
  $(".animation").mouseover(function () {
    $(this).animate({"left": "-=300px"}, 500);
  });
}
START

wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame




ふえるわかめ

wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame wakame




現れるタマ

jQuery sound

jquery.sound.js

[JavaScriptの処理]
$(".sound").mouseover(function () {
  $.fn.soundPlay({url: 'sazae.mid', playerId: 'embed_player'
    , command: 'play'});
});




ここで、原点に戻ろう




アプリケーションってなに?

アプリケーションの種類

  1. クライアントサーバ(C/S)
  2. GUIアプリケーション
  3. スタンドアロンアプリケーション
  4. Webアプリケーション
  5. バッチプログラム

アプリケーションを構成するもの

  1. ユーザインタフェース(入力と出力)
    • CLI
    • CUI
    • GUI
    • ブラウザ
  2. ファイルへの書き込みと読み込み(永続化)
    • ファイル
    • データベース

JavaScriptでできること

  1. ユーザインタフェース(入力と出力)
  2. ファイルへの書き込みと読み込み(永続化)

firefox拡張ファイルIO (input)

function open_file(filePath){
 var data = "";
 try {
   netscape.security.PrivilegeManager.enablePrivilege ('UniversalXPConnect');
   var file = Components.classes["@mozilla.org/file/local;1"].createInstance (Components.interfaces.nsILocalFile);
   file.initWithPath (filePath);
   var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
   fstream.init(file, -1, 0, 0);
   var charset = "UTF-8";
   //const replacementChar = Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER;
   replacementChar = Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER;
   var is = Components.classes["@mozilla.org/intl/converter-input-stream;1"].createInstance(Components.interfaces.nsIConverterInputStream);
   is.init(fstream, charset, 1024, replacementChar);
   var str = {};
   while (is.readString(4096, str) != 0) {
     data += str.value;
   }
  } catch (e) {
   throw e;
  }
  return data;
}

firefox拡張ファイルIO (output)

function writeToFile (filePath, content) {
 try {
   netscape.security.PrivilegeManager.enablePrivilege ('UniversalXPConnect');
   var file = Components.classes["@mozilla.org/file/local;1"].createInstance (Components.interfaces.nsILocalFile);
   file.initWithPath (filePath);
   if (! file.exists ()) file.create (0, 0664);
   var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance (Components.interfaces.nsIFileOutputStream);
   out.init (file, 0x20 | 0x02, 00004, null);
   var charset = "UTF-8";
   var conv = Components.classes["\@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream)
;
   conv.init(out, charset, 0, 0x0000);
   conv.writeString(content);
   conv.close();
  } catch (e) {
   throw e;
  }
}

JavaScriptはシングルスレッド

シングルスレッドなのでsleepやwaitができません。

setTimeout('my_function()',1000);
(詳しくはホワイトボードで)

JavaScript Scaffold

js-scaffold (詳しくはホワイトボードで)

まとめ

アプリケーションはUIとファイルIOでできている。
JavaScriptは両方ともできる。

JavaScriptで全てのアプケーションを書くことができる。

CLI forever