2012年5月30日水曜日

JSON in Javaのサンプル

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JSONTest {

 public static void main(String[] args) {
  JSONObject chat = new JSONObject();
  JSONArray messages = new JSONArray();
  JSONObject message = new JSONObject();
  try {
   chat.put("username", "fc");
   chat.put("chat", messages);
   messages.put(message);
   message.put("username", "user1");
   message.put("message", "hello");
   System.out.println(chat.toString());
  } catch (JSONException e) {
   e.printStackTrace();
  }

 }

}
JSONライブラリには色々ありますがJSON公式のorg.json.*パッケージをまずは使いますよね? ライブラリはJSON in Javaから入手できます。 このうちJSONObjectとJSONArrayを使ったサンプルプログラムを作ってみました。 これを動かすと以下のようなJSONが出力されます。 たぶん複雑になると直に書くより楽になるはず。
{"username":"fc","chat":[{"message":"hello","username":"user1"}]}

setIntervalとclearIntervalのサンプル

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Count Test</title>
</head>
<body>
 <script language="JavaScript">
  var id = setInterval("count()", 300);
  var i = 0;
  function count() {
   var counter = document.getElementById("counter");
   counter.value = i;
   i++;

  }
  function stop() {
   clearInterval(id);
  }
 </script>
 <input type="text" id="counter"></input>
 <button type="button" onclick="stop()">stop</button>
</body>
</html>
ただカウントしていってボタンを押すとストップするだけです。 Count Test

2012年5月19日土曜日

HelloWorld(Socket編)

Socketを使ったHelloWorldです。
クライアントがサーバにアクセスするとhelloという文字列が返却されます。

ServerTest.java
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerTest {
 public static void main(String[] args) {
  int port = 5000;
  try {
   ServerSocket serverSocket = new ServerSocket(port);
   while (true) {
    Socket socket = serverSocket.accept();
    OutputStream os = socket.getOutputStream();
    DataOutputStream dos = new DataOutputStream(os);
    dos.writeBytes("hello");
    socket.close();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}
ClientTest.java
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;

public class ClientTest {
  public static void main(String[] args) {
  String host = "localhost";
  int port = 5000;
  Socket socket = new Socket();
  try {
   socket.connect(new InetSocketAddress(host, port));
   InputStream is = socket.getInputStream();
   DataInputStream dis = new DataInputStream(is);
   byte[] buffer = new byte[1024];
   StringBuffer sb = new StringBuffer();
   int length = 0;
   while ((length = dis.read(buffer)) != -1) {
    sb.append(new String(buffer, 0, length));
    System.out.println(sb.toString());
   }
   socket.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

2012年5月14日月曜日

Cookieの参照方法(Chrome編)


ChromeでCookieの参照方法を調べたところ3つあったのでメモします。

1)JavaScript documentオブジェクトを参照する。
 
 ①アドレス欄にjavascript:document.cookie;と入力する。

 こちらはどのブラウザでも確認できると思います。

2)開発ツールを利用する。

 ①右クリック後に要素を検証を選択。
 ②Developer Toolsダイアログの表示後にResourcesタブを選択。
 ③Cookiesの要素を選択するとCookieの内容を確認できる。

3)設定画面から確認する。

 ①設定画面を開く。
 ②高度な設定を選択する。
 ③コンテンツの設定を選択。
 ④すべてのCookieとサイトデータを選択。

 これを確認するとすべてのCookieとサイトデータ(ローカルストレージなど)が確認できます。

 動作をみるとタブごとにCookieの情報は保持していて新しいタブを開いて新規のURLにアクセスする
 とすべてのCookieとサイトデータからアクセスしようとしているURLに対応しているCookieを
 取り出して新しいタブから他のタブですでにログインしているサイトにアクセスしている場合も
 ログイン状態などを確保しているようだ。

 Cookieの実際のデータはSQLiteを利用しているのでそれを直接見る方法も考えられるが
 少しめんどくさそうなのでやめておく。。