ドル払いっていうのも一つの理由ですが、セルビアの話を聞いてそのまま振り込みました。
今回の広告費も微々たるものですが、また収益が上がったら寄付する予定です。
最近忙しくて更新が滞っています。また落ち着いた日々の疑問や発見を記録したいものです。
最近忙しくて更新が滞っています。また落ち着いた日々の疑問や発見を記録したいものです。
GDDとは「Gut's Driven Development」の略です。簡単にいうとガッツ駆動方式のシステム開発です。
えぇまぁ、私の開発スタイルです。このBlogでは、そんなシステム開発の作業で発見したことを記録していきます。
バイク関連の記事もちょいちょい書き出しました。皆さんの参考になると幸いです。
(Google Developer Daysとか、Game Design Documentとはなんの関係ありません。)
Dim objXML
Dim intRet
Dim strURL
Dim strKey
strURL = "http://jlp.yahooapis.jp"
strKey = "sentence=%e7%a9%ba%e5%89%8d%e7%b5%b6%e5%be%8c"
MsgBox ("url=" & strURL)
MsgBox (strKey)
Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "POST", strURL, False
objXML.setRequestHeader "Content-Type", " application/x-www-form-urlencoded"
objXML.setRequestHeader "Content-Length", "length"
objXML.send strKey
intRet = objXML.Status
MsgBox ("stat=" & intRet)
MsgBox (objXML.responseText)
まぁ今どきはPS(パワーシェル)を使うんでしょうけど。。。
public static void main(String[] args) {
Object d = Double.valueOf(3.5d);
System.out.println("3.5d=" + toInt(d));
Object f = Float.valueOf(2.5f);
System.out.println("2.5f=" + toInt(f));
Object l = Long.valueOf(20l);
System.out.println("20l=" + toInt(l));
Object b = Byte.valueOf((byte) 20);
System.out.println("20b=" + toInt(b));
Object s = Short.valueOf((short) 20);
System.out.println("20s=" + toInt(s));
Object bd = new BigDecimal(4.5);
System.out.println("4.5bd=" + toInt(bd));
Object al = new AtomicLong(21);
System.out.println("21al=" + toInt(al));
}
/**
* int変換.
*
* 数値ラッパーをintに変換する。
*
* @param obj
* @return 変換した数値
*/
public static int toInt(Object obj) {
if (!(obj instanceof Number)) {
throw new IllegalArgumentException("not number!!");
}
return ((Number) obj).intValue();
}
実行結果はこんな感じ。
3.5d=3
2.5f=2
20l=20
20b=20
20s=20
4.5bd=4
21al=21
public class GsonEnum {
public static void main(String[] args) {
Gson gson = new Gson();
// タイプを取り出す(List)
Type type = new TypeToken<List<Signal>>() {
}.getType();
// JSON->List<Signal>
List<Signal> signal = gson.fromJson(new InputStreamReader(
GsonMap.class.getResourceAsStream("signal2.json")), type);
System.out.println("---step1---");
System.out.println(signal);
// JSON->List<Signal>
// #1 TypeAdapterを設定したGsonを生成する
Gson gson2 = new GsonBuilder().registerTypeAdapter(SignalStat.class,
new SignalStatDeserializer()).create();
List<Signal> signal2 = gson2.fromJson(new InputStreamReader(
GsonMap.class.getResourceAsStream("signal3.json")), type);
System.out.println("---step2---");
System.out.println(signal2);
}
/**
* 解析結果を受け取るクラス
*/
static class Signal {
private SignalStat stat;
private String message;
private SignalStat next;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("[");
sb.append("stat=").append(stat);
sb.append(" message=").append(message);
sb.append(" next=").append(next);
sb.append("]");
return new String(sb);
}
}
/**
* ステータスの表現.
*/
enum SignalStat {
Red, Yellow, Blue;
// #2 変換用のMAP(int -> SignalStat)
static Map<Integer, SignalStat> CONVERTER = new HashMap<Integer, SignalStat>();
static {
for (SignalStat stat : SignalStat.values()) {
CONVERTER.put(stat.ordinal(), stat);
}
}
}
/**
* SignalStat用Deserializer.
*/
static private class SignalStatDeserializer implements
JsonDeserializer<SignalStat> {
@Override
public SignalStat deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
// #3 int -> SignalStat
return SignalStat.CONVERTER.get(json.getAsInt());
}
}
}
ポイントは以下の通り
[
{
"stat": "Red",
"message": "とまれ",
"next": "Blue"
},
{
"stat": "Yellow",
"message": "とまっとけ",
"next": "Red"
},
{
"stat": "Invalid",
"message": "すすんでもいいよ",
"next": "Yellow"
}
]
入力ry (signal3.json)
[
{
"stat": 0,
"message": "とまれ",
"next": 2
},
{
"stat": 1,
"message": "とまっとけ",
"next": 0
},
{
"stat": 100,
"message": "すすんでもいいよ",
"next": 1
}
]
出力結果はこんな感じ
---step1---
[[stat=Red message=とまれ next=Blue], [stat=Yellow message=とまっとけ next=Red], [stat=null message=すすんでもいいよ next=Yellow]]
---step2---
[[stat=Red message=とまれ next=Blue], [stat=Yellow message=とまっとけ next=Red], [stat=null message=すすんでもいいよ next=Yellow]]