– RSS.NET
情報元:
http://blog.windy.ac/2005/07/rssnet_netrss.html
投稿者: editor
RSS4J がうるさいのでパッチを当てました
RSS フィードを読むのに RSS4J(要 Xerces) を採用したのですが、なぜか
RssParser.parseRss( … );
を呼び出す都度、
date: 2006-11-24T14:09:40+09:00
のように、RSS feed 中の日付を出力するようになっていました。
煩いし、これはちょっと都合が悪いなので調べてみると…
$ grep -rn System.out.print rss4j
rss4j/src/churchillobjects/rss4j/model/DateLanguageUtil.java:202: System.out.println(“\n\n date: “+date);
と、churchillobjects.rss4j.model.DateLanguageUtil で System.out.println していたので、この行をコメントアウトし、このクラスだけ再コンパイルして対応しました。一応変更適用済のバイナリを置いておきますので、よろしければどうぞ。
rss4j092p.zip
参考:
– Greenery – RSS4j v0.92-JAVA/RSS4j-Wiki
– RSS4J, Feed Parser, Informa = Java の RSS ライブラリ(Goodpic)
– @IT:Java TIPS — サーブレットでRSSフィールドを配信する
HTTP 接続の定石
よく忘れるので簡易コードメモ。
もちろんこのままでは動作しません。
final java.net.URL url = new java.net.URL(String sUrl); // 接続先指定(HTTPS, HTTP いずれも可)
final java.net.HttpURLConnection con = (java.net.HttpUrlConnection) url.openConnection(); // 接続開始
/* 必要であればここで con に対して接続設定(ex. User-Agent, キャッシュなど) */
// 以下(リクエスト送信と)結果取得
final int code = con.getResponseCode(); // 結果コード取得
if( code < 200 && 300 <= code){
return; // HTTP レスポンスコードが 2XX 以外なら続行不可
}
// ページデータ取得(ヘッダ除く)
final BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), “JISAutoDetect”);
String line;
while(null != (line = reader.readLine())){
System.out.println(line);
}
参考:
java.net.HttpURLConnection
HTTP Status Code
文字エンコードを自動判別する
文字コードが不明な文字列を自動判別して変換するには、 JISAutoDetect を文字コードとして指定します。
// InputStreamReader の例
final BufferedReader reader =
new BufferedReader(new InputStreamReader(in, “JISAutoDetect”)); // コンストラクタの第二引数で文字コードとして JISAutoDetect を指定
while(null != (line = reader.readLine())){
System.out.println(line);
}
// String の例
final String src = “あいうえお”; // 任意の文字コードの文字列
final String str = new String(src.getBytes(), “JISAutoDetect”); // 文字コード自動変換
System.out.println(“str”);
JavaFAQ の S146-Q07 の前後あたりが参考になると思います。
例外の階層構造
ウィンドウが非アクティブの時にタスクバーで点滅させる
.NET Framework のクラスライブラリではタスクバーでの明滅が提供されていない(Form.Activate() は非アクティブの時呼ぶとウィンドウが再前面になる)ため、Win32API の FlashWindow() を利用します。
using System.Windows.Forms;
using System.Runtime.InteropServices;
public class Form1 : Form {
// 点滅用 Win32API のインポート
[DllImport(“user32.dll”)]
private static extern bool FlashWindow(IntPtr hwnd, bool bInvert);
public static void FlashWindow(System.Windows.Forms.Form window) {
FlashWindow(window.Handle, false);
}
// ウィンドウを点滅させる
// (ウィンドウがアクティブな時は何もおこらない)
private void ExecExample(){
FlashWindow(this);
}
}
参考:
– FlashWindow(user32)(pinvoke.net)
– Win32 APIやDLL関数を呼び出すには?(@IT)
makexmldocomomap の出力を PEAR の Net_UserAgent_Mobile で使えるようにするパッチ
単純に makexmldocomomap を実行すると <terminal … modeil=”SH902I” … > のように出力されたのですが、PEAR では <SH902I … >という形式を期待していて、そのまま DoCoMoMap.xml に適用すると動作しなくなったため次のように書き換えました。(Net_UserAgent_Mobile 0.27.0 で確認 cpan のほうは失念)
$ diff /usr/local/bin/makexmldocomomap{.bak,}
21,22c21,22
< push @{$map{terminal}}, {
< model => uc($model),
—
> push @{$map{uc($model)}}, {
> width => $width,
また、出力時にiモード HTML シミュレータの情報が書かれていないため、エミュレータでも利用するためには
<ISIM0301 color=”1″ depth=”262144″ height=”320″ width=”240″ />
<ISIM70 color=”1″ depth=”4096″ height=”182″ width=”163″ />
としてエミュレータの端末情報を指定する必要があります。
メモ:
SO902iWP+ 端末が
<SO902IWP+ color=”1″ depth=”262144″ height=”256″ width=”240″ />
となり、XML 的にエラーで次要素以降が読まれなくなるのは何か対処法あるんでしょうか。。
# 現在一番下に移すことで回避中。もちろんこれでは SO902i WP+ 自体は対応されないでしょうね(いろいろ未確認)。
関数, メソッドを動的に実行する
C の関数ポインタや、Java のリフレクションのように任意の関数、メソッドを呼び出すには次のようにします。
<?php
function greet(){ echo “Hello world!”;}
// 変数に () を付ける記法(関数のみ可)
echo “0: “;
$func=”greet”;
$func();
// call_user_func() を使った関数よびだし
echo “\n1: “;
$func=”greet”;
call_user_func($func);
// call_user_func() を使った静的メソッドよびだし
echo “\n2: “;
class Foo{
function doit(){
echo “static method called”;
}
}
$method=array(“Foo”, “doit”);
call_user_func($method);
// call_user_func() を使った非静的メソッドよびだし
echo “\n3: “;
class Foo2{
var $name;
function Foo2($name){
$this->name = $name;
}
function doit(){
echo “non static method called (“.$this->name.”)”;
}
}
$o=new Foo2(“abc”);
$method=array($o, “doit”);
call_user_func($method);
echo “\n”;
?>
上のコードを実行すると結果は次のようになります。
0: Hello world!
1: Hello world!
2: static method called
3: non static method called (abc)
参考:
– call_user_func()
C# 逆コンパイルツール
Anakrino(ダウンロードページ)
参考:
http://park16.wakwak.com/~mimi/dotnet/misc/discompile.html
携帯各キャリア提供の仕様書
http://kinshachi.ddo.jp/kurage/html/MT/comp/archives/000620.html