ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

”朝日新聞社から「2ちゃんねる」へ荒らし行為”だって!!

2009-03-31 23:08:46 | Weblog

ここの痛いニュース
朝日新聞社から「2ちゃんねる」へ荒らし行為…記事の書き込みに規制
http://blog.livedoor.jp/dqnplus/archives/1241806.html

(以下斜体は上記サイトより引用)


フリーの大型掲示版サイト「2ちゃんねる」が30日付けで朝日新聞社(asahi-np.co.jp)からの記事の書き込みに規制をかけたことが明らかとなった。

2ちゃんねるによると朝日新聞社は今年の2月頃から2ちゃんねるの「鉄道路線・車両」板内のスレッドに対して「あぼーん、あぼーん」といった意味不明な書き込みを多数投稿し、掲示版の正常な運営を妨害する行為を
行っていたとしている。


いくら言論の自由ったって、あらしはまずいだろう・・・
っていうか、会社で2ちゃんやってるの(-_-;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

DTDからJAXBを使って、JAVAのクラスをつくるまで

2009-03-31 19:04:10 | Weblog

 では、さっきの、XMLをJavaのクラスにマッピングするプログラムを作る話、

・DTDからJAXBを使って、JAVAのクラスをつくるまで



・Javaのクラスをつかって、RSSを読み込み、値を取り出したりする

の2つの話に分けてやりたいと思います。
まずは、「DTDからJAXBを使って、JAVAのクラスをつくるまで」の話。



■概要

・DTDから、Javaのクラスをつくるのは、xjc.exeというのを使います。
 で、これが、JAVAをいれたところのbinの下(javac.exeとかあるところ)にあれば
 いいんですけど、もしなかったら、ダウンロードしてきます。

・前提条件として、DTDをGetします。
 今回は、RSSのDTDを使います。




■前提
 RSSのDTDを落としてきます。
 ブラウザで、
http://www.silmaril.ie/software/rss2.dtd
にアクセスします。 
真っ白な画面がでてきます(DTDのため、印刷するものは何もないから)

画面上、右クリックして、「ソースの表示」にします。
そこで、DTDがでてくるので、余計なものなんかを削除して、保存。
こんなかんじになります。
(IEだと、これも表示できません。「ソースの表示」で見てください)




■xjc.exeがなかったら、ダウンロード

 Javaのクラスをつくるのは、xjc.exeというのを使います。
 で、これが、JAVAをいれたところのbinの下(javac.exeとかあるところ)にあれば
 いいんですけど、もしなかったら、ダウンロードしてきます。

ここ
Web Services Downloads
http://java.sun.com/webservices/downloads/previous/webservicespack.jsp

の「JWSDP 2.0」の「Download」をクリックしていってください。
jwsdp-2_0-windows-i586.exe
みたいなかんじのものが、ダウンロードできたら(Windowsの場合)それをダブルクリックするとインストールできます。




■xjc.exe実行

xjc.exe -dtd DTDファイル名 -d 出力先ディレクトリ名

です。
たとえば、DTDを/temp/rss2.dtdという名前で保存しておいてあって、
出力先として、/temp/rss2というフォルダを作っておいてあって、
そこに書き出したい場合

xjc.exe -dtd /temp/rss2.dtd -d /temp/rss2




で、/temp/rss2の下に、generatedフォルダができて、
その下に、Javaのソースファイルがいっぱいできてると思う。
それが、DTDから作ったJavaのクラス。

ちなみに、今回はDTDでやりましたけど、xmlスキーマ(XSD)でもできます。
オプションが違うんだよね。

  xjc.exe -help

でみてね!

いつか、このクラスを使って、プログラムを作ります。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

”Webアプリケーションのセキュリティ要件書を「CC」で公開”だって。。。

2009-03-31 16:57:34 | Weblog

ここの記事
アイアクトとトライコーダ、Webアプリケーションのセキュリティ要件書を「CC」で公開
http://sourceforge.jp/magazine/09/03/30/0920258

によると(以下斜体は上記サイトより引用)


Webサイト企画・制作などのアイアクト(本社:大阪市)と、セキュリティ教育のトライコーダ(本社:東京都新宿区)は2009年3月30日、Webアプリケーションの脆弱性を防ぐセキュリティ要件をまとめた仕様書「発注者のためのWebシステム/アプリケーションセキュリティ要件書」を無償公開した。

 要件書には、Webシステム/Webアプリケーションに関して一般的に盛り込むべきと考えられるセキュリティ要件を記載した。対象は、インターネット・イントラネット問わず公開するシステムで、特定多数または不特定多数のユーザーが利用するシステムを想定している。


だって。で、そのセキュリティ要件書のURLが・・・

発注者のためのWebシステム/Webアプリケーションセキュリティ要件書
http://脆弱性診断.jp/specifications/index.html


・・・おお、日本語ドメイン。
ちゃんと開ける?とおもって、いちど、ブログに書いて確認したら、やっぱひらけなかったので、リンクもとは、開けるURLのほうを貼っています。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Microsoftは、そのRESTのマッピングを意識してるみたい??

2009-03-31 14:09:29 | Weblog

ツールがあるんですね。
XML ダウンロード
http://msdn.microsoft.com/ja-jp/xml/bb190622.aspx

の(以下斜体は上記サイトから引用)
XSD オブジェクト コード ジェネレーター (XSDObjectGen) (英語)
を見ると


このユーティリティを使用すると、XML やその他の形式へのシリアル化、およびそれらの形式からの逆シリアル化が可能な C# データ構造や VB.NET データ構造を XSD スキーマから構築できます。生成されるコードは高度な .NET オブジェクト ライブラリで、これを使用すると、XSD データ構造や XML を扱う作業を大幅に単純化できます。

XSDObjectGen は、.NET Framework に付属する XSD.exe ツールと似ています。このツールと異なる点は、XSD スキーマから高度なクラス構造を構築し、元のツール (XSD.exe) よりもはるかに多くの一般的なスキーマ型に対処できることです。


ということで、XMLからC#,VBのデータ構造にマッピングというかバインディングする
ソフトとして、XSDObjectGen や、XSD.exeがあるみたいだ。



生成されるクラスは XML の作成と使用の両方に適していて、Web サービスの実装に含まれるパラメーターや戻り値としても使用できます。


と、さっき書いていた、RESTの返り値のマッピングみたいな話が書いてある。




ちなみにその下に、XMLからXMLスキーマ(XSD)が作れる、


XSD Inference (英語)
Microsoft XSD Inference ユーティリティを使用すると、XML インスタンス ドキュメントから XML スキーマ定義言語 (XSD) スキーマを推測できます。部分的な XML ではなく、規格に準拠した XML インスタンス ドキュメントを入力する必要があります。

ってあるんだけど、これをダウンロードして実行しても、ヘルプしか入らない・・・
ヘルプによると、どうもC#だと
(以下太字は、上記ヘルプより引用)
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using Microsoft.XsdInference;

namespace InferAgain
{
  class Class1
  {
  static void Main()
  {

    XmlTextReader xtr = new XmlTextReader("SchemaInput.xml");
    XmlSchemaCollection xsc = new XmlSchemaCollection();
    Infer testInfer = new Infer();

    xsc = testInfer.InferSchema(xtr);

    foreach (XmlSchema xs in xsc)
    {
      TextWriter writer = new StringWriter();
      xs.Write(writer);
      Console.WriteLine(writer.ToString());
      foreach (XmlSchemaImport xsi in xs.Includes)
      {
        TextWriter strWriter = new StringWriter();
        xs.Write(strWriter);
        Console.WriteLine(strWriter.ToString());
      }
    }
   }
  }
}


とやると、XMLからXMLスキーマできるそうなんだけど、VisualStudioを
いれてないので、確かめられない・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クラウドとRESTとマッピングとJAXB

2009-03-31 11:54:36 | Weblog

クラウドコンピューティングというと、ブラウザレベルでの話が多いと思います。

でも、バッチプログラムとかでも利用しようとか、
サーバー側で(サーブレットから)サービスを利用しようとすると、
昨日書いたような、Javaから、RESTのサービスを利用するということも、
あるかと思います。

その場合、昨日は、RESTサービスの返り値のXMLを、O/Rマッピングのように
JAVAのクラスにマッピング(バインディング)しちゃったほうが、
はやくない?みたいなことを書きました。




で、そーいうのを、自動化させる話なのですが、

XMLをJavaのクラスにマッピングするというところは、
まさにJAXBなわけで、

ここ
インタフェース Unmarshaller
http://java.sun.com/javase/ja/6/docs/ja/api/javax/xml/bind/Unmarshaller.html

をみると(以下斜体は上記サイトより引用)

Unmarshalling from a URL:

JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" );
Unmarshaller u = jc.createUnmarshaller();
URL url = new URL( "http://beaker.east/nosferatu.xml" );
Object o = u.unmarshal( url );


と、URLを指定してもできるようなので、GET型の場合は、引数を設定すれば、
あとはJAXBでアンマーシャルすると、クラスに入ってくるということができそうです
(POSTの場合でも、InputStremからとってこれるので、昨日のように、
 con.getInputStream()をすればOK)




そうすると、
1.RESTの帰り値のXMLスキーマないしDTDを用意しておき、
  JAXBで、Javaのクラスに変換しておき、

2.そのクラスが、引数セット、アクセスメソッドを用意すれば、

3.アクセスメソッドで受け取ったメソッドをアンマーシャルすると、
  クラスに入る。

なので、1、2、3を自動化すればいい、ってことになります。
うち、上記のように3は、JAXBでできそう。
1もたしか、JAXBにツールがあった。

なので、Excelシートから、2の部分を作成し、1、3とあわせればよい?

なんかできそうですね・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IT業界は、夢があって、かっこいいんですって。大学生から見ると

2009-03-30 18:35:41 | Weblog

 ここ(2009年3月27日の記事)で知ったんだけど、こんな調査があるそうな。。。

プレス発表 「IT人材市場動向調査 調査報告概要版No.3」の公開について
http://www.ipa.go.jp/about/press/20090327.html

(以下斜体は上記IPAのプレスリリースより引用)


大学3年生以上の学生600名を対象として、情報サービス・ソフトウェア産業に対するイメージや仕事に対する興味などを尋ね

た結果

「技術やスキルが身につく」や「夢がある」という項目については、「IT・情報サービス・ソフトウェア」がトップとなった

そして

「かっこいい」、「仕事にやりがいがある」などについても、「IT・情報サービス・ソフトウェア」産業は、比較的上位にあげられている。


うーん、大学生はわかっているのだろうか、この業界を・・・
これだから、デジどか→うつ病→ニートが増える・・・と思ったらね、

仕事の内容がわかりやすい」については、「IT・情報サービス・ソフトウェア」産業が、比較的下位にランクされる結果となった

もっとはっきりかきます。
24業種(最後に「あてはまるものがない」があり、選択肢は25)中、20位です。
よくわかってないことは、自覚してるのね・・・

ただね、

「仕事がきつい」というイメージについては、「医療・福祉」の次に「IT・情報サービス・ソフトウェア」があげられており、

つまり、上から2位。この辺はあっているよね。

まとめると、仕事が、お医者さんや、介護の人たち並みにきついことはわかるけど、
ほかはよくわかんないけど、
ゆめがあって、かっこいいんじゃねーの?

前半はあってるけど、後半はあってない・・・・

っていうか、同じ人たちが答えているのかなあ・・・

たぶん、
「仕事が、お医者さんや、介護の人たち並みにきつい」って答えている人たちと、
「技術やスキルが身につく」や「夢がある」、「かっこいい」、「仕事にやりがいがある」
って答えている人は、別の気がする・・・(なんか、矛盾してるもんなあ・・・同時に答えると・・・)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RESTマッピング

2009-03-30 16:32:01 | Weblog

 REST型のWebサービスを、Javaで利用しようとした場合、

 O/Rマッピングのように、
 そのサービスの帰り値をもとに、クラスをつくってしまって、
 利用者は、そのクラスを使う(自分でサイトにはアクセスにいかない)
 というような、

 「RESTマッピング」というべきものをつくったほうがいいかもしれない。




たとえば・・・
いま、YAHOOのRSS
http://dailynews.yahoo.co.jp/fc/rss.xml
のクラスを考える。このクラスは、
public class RestMapping {
	public static void main(String[] args) throws Exception{
		RSS rss = new RSS("http://dailynews.yahoo.co.jp/fc/rss.xml");
		System.out.println(rss.toString());
	}
}

のようなかたちで、指定されたURLにアクセスし、結果をrssクラスにいれているというものを考える。




このとき、RSSは、
RSS-<channel-<Item
のような構造になっている。

まずは、RSSクラス。
これは、クラスを生成するとき、データを読んできて、文中に含まれるchanel数分、channelをつくるとした。
こんなかんじ
import java.net.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;


public class RSS {

	Channel[]	channel;
	
	public RSS(String url) throws Exception
	{
		//	RSSサイトにアクセス
		URL TestURL = new URL(url);
		URLConnection con = TestURL.openConnection();
	
		// RSSのDOMを取得
		DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = dbfactory.newDocumentBuilder();
		Document xtree = builder.parse(con.getInputStream());
		
		NodeList nodelist = xtree.getElementsByTagName("channel");
		if ( nodelist != null)
		{
			channel = new Channel[nodelist.getLength()];
			for(int i = 0 ; i < nodelist.getLength(); i ++ )
			{
				channel[i] = new Channel(nodelist.item(i));
			}
		}
		else
		{
			channel = new Channel[0];
		}
	}

	public String toString()
	{
		String ret = "";
		for ( int i = 0 ; i < channel.length ; i ++)
		{
			ret = ret + channel[i].toString();
		}

		return ret;
	}

}

(< > ¥ は、本当は半角)




channelでは、受け取った1個分のchannelのノードから、引数を取り出し、
itemをあるだけつくる。
こんなかんじ
import org.w3c.dom.*;

public class Channel {
	String title;
	String link;
	String description;
	String language;
	String pubDate;
	Item[]	item;
	
	public Channel(Node node)
	{
		Element el = (Element)node;
		NodeList nodelist;
		nodelist = el.getElementsByTagName("title");
		if ( nodelist.getLength() > 0)
		{
			title = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("link");
		if ( nodelist.getLength() > 0)
		{
			link = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("description");
		if ( nodelist.getLength() > 0)
		{
			link = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("pubDate");
		if ( nodelist.getLength() > 0)
		{
			pubDate = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("language");
		if ( nodelist.getLength() > 0)
		{
			language = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("item");
		if ( nodelist != null)
		{
			item = new Item[nodelist.getLength()];
			for(int i = 0 ; i < nodelist.getLength(); i ++ )
			{
				item[i] = new Item(nodelist.item(i));
			}
		}
		else
		{
			item = new Item[0];
		}
	}
	
	public String toString()
	{
		String ret = "";
		for ( int i = 0 ; i < item.length ; i ++)
		{
			ret = ret + item[i].toString()+"¥n";
		}

		return ret;
	}
}


(< > ¥ は、本当は半角)




こんなかんじ
import org.w3c.dom.*;

public class Item {
	String title;
	String link;
	String description;
	String pubDate;

	public Item(Node node)
	{
		Element el = (Element)node;
		NodeList nodelist;
		nodelist = el.getElementsByTagName("title");
		if ( nodelist.getLength() > 0)
		{
			title = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("link");
		if ( nodelist.getLength() > 0)
		{
			link = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("description");
		if ( nodelist.getLength() > 0)
		{
			link = nodelist.item(0).getFirstChild().getNodeValue();
		}

		nodelist = el.getElementsByTagName("pubDate");
		if ( nodelist.getLength() > 0)
		{
			pubDate = nodelist.item(0).getFirstChild().getNodeValue();
		}
		
	}
	
	public String toString()
	{
		return title + "¥t"+link + "¥t" + description + "¥t" + pubDate;
	}
}


(< > ¥ は、本当は半角)




こんなかんじのクラスが、自動的に作れると、JAVAでもRESTの利用が楽になるかも。。。
というか、SOAPでも同じようなことをやれば、SOAPかRESTか、DBかなどの考えはいらなくなるかも??

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

カラーユニバーサルデザインと、Windowsのデバイスプロファイル。

2009-03-30 13:17:24 | Weblog

 カラーユニバーサルデザインってのがある。
 色弱の人とかに配慮した色使いということなのだが、
 色弱にもいろいろなタイプがあるのであれば、

 コンピューターに表示するときはもともとの標準的な色で、
 パソコンで見るとき、個々人に対しては、それぞれにあった色に変換して
 出力したほうが、見え方が違う各人に対応できていいんじゃない?とおもった。




 で、そこで、おもったんだけど、そもそも、Windowsの色空間をきめる、
デバイスプロファイルって、どこで設定してるの?

 とおもって、調べてみた。




 Windowsのデバイスプロファイルは、(Windowsでは、カラー プロファイルっていうみたい)
XPの場合(VISTAだと違う

「コントロール」パネルから「画面」をクリック
「画面」ダイアログで、「設定」タブをクリック
「設定」が表示されたら、「詳細設定」ボタンをクリック
「プラグアンドプレイモニタと・・・」が出てきたら、「色の管理」タブをクリック
「追加」ボタンをクリックすると、カラープロファイルが選べる。

・・・けど、このカラープロファイル、どーやってつくるんだ?


 
P.S で話し戻って、カラーユニバーサルデザインの話、
 そーいうめがねがあればいいんじゃね?
 と思ったら、あった(カラービュー)(^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

StrutsのサンプルにつくるHTMLって、XHTMLのほうがいいかも?

2009-03-29 20:37:18 | Weblog

ふと思ったんだけど、Strutsでシステム開発するときって、
たいていHTMLでサンプルつくって、お客さんとか関係者各位の
了解を取ったら、それをJSPに変換し(拡張子を変え、適切に配置)
そのあと、Strutsタグを入れていくわけだけど、

これ、めんどっちくない?

たぶん、XHTMLにしておけば、DOMで読み込めるので、
あとは、クラス名とか、IDとか、そこらへんに規則性をつけておけば、
HTMLのINPUTタグなんかを変換して、Strutsタグに
ある程度自動的に置き換えられる気がしてきた。

うーん、どーかな。。

たぶん、logicタグあたりを、どうするか・・・
logicタグを使わないでAJAXで制御しちゃった方がいいか?
ってなところですかね。

もちょっと、具体的に考えたほうがいいか・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

みんな、年度末で忙しいんですね(^^)

2009-03-29 15:18:52 | Weblog

このブログを会社から見ている人が、いっぱいいる!!
いつも、土日は会社からが、すくないのに・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

トランスプロモーションって、なんか、やだなあ・・・(-_-;)

2009-03-28 23:23:59 | Weblog

DMって、読まないじゃないですか?
そこで、確実に読まれる、請求書とかに広告をいれる、
トランスプロモーションという手法があるらしい。

ダイレクト・マーケティング革命
http://h50146.www5.hp.com/products/printers/ga/features/direct_marketing/

(JAGATのここの「1.8.1.3.2  トランスプロモーション」のほうがくわしいカモ?)
請求書に広告と、いわれてもねえ・・・なんかねえ・・・

そのうち、電通、博報堂がこの市場をねらって、請求書などに広告をいれてくるんでしょうか?

そのうち、会社の出勤表を開いたら広告、
大学の教科書にも広告
契約書にも広告・・・とかね(^^;)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

植物がTwitterで“話す”装置、米研究者が開発

2009-03-28 18:10:39 | Weblog

ここの記事
植物がTwitterで“話す”装置、米研究者が開発
http://www.itmedia.co.jp/news/articles/0903/27/news067.html

によると(以下斜体は上記サイトより引用)


 米ニューヨーク大学インタラクティブ通信プログラムの研究者らが、植物がTwitterを通じて、水が必要なとき、あるいは水が多過ぎた場合に持ち主に通知する装置を考案した。


そうな。具体的には


この装置は、回路基盤に接続された土壌湿度センサーでできている。湿度を測定し、その情報をマイクロコントローラーに送信する。

 「ソフトウェアで植物の種類を設定し、土壌の特徴に合わせて調節もできる。土によってその性質も異なる」(フォルディ氏)

 この装置は、湿度が低過ぎるか高過ぎるかを判断し、インターネット経由でTwitterに無線信号を送る。Twitterは、140文字のテキストメッセージを友人のネットワークに送れるサービス。

 Botanicalls開発者の1人ケイト・ハートマン氏は、Twitterのメッセージに使う言葉は、持ち主や植物の種類に合わせてカスタマイズできるとしている。


だそうで、そのメッセージを発している植物は
pothos
http://twitter.com/pothos


じゃあ、あとは、この会話を受信して、水をあげるロボットを作れば、無人化農業可能??

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「田代まさし氏とひろゆき氏が対談」だって。。。

2009-03-28 14:32:10 | Weblog

ここの記事
「ニコ生」に神降臨 田代まさし氏とひろゆき氏が対談
http://www.itmedia.co.jp/news/articles/0903/27/news092.html

によると(以下斜体は上記サイトより引用)

 「何が起きてもおかしくない戦慄(せんりつ)の生放送」――ニワンゴは3月27日、「ニコニコ動画」のライブ配信「ニコニコ生放送」で、「ネット界の神」こと田代まさし氏と西村博之(ひろゆき)氏が対談する番組を4月1日に配信すると発表した。

 番組名は「ネ申降臨! 田代まさしmeetひろゆき」で、午後8時から配信予定。

ってあるんだけど、そもそも、「ニコニコ生放送」って何?

・・・時代に乗り遅れている、ウィリアムのいたずらなのでした・・・

18時追加
 とおもって、ニコニコ動画を久しぶりに見たら、上のほうに、「生放送」ってかいてあるリンクをみつけた。これね、「ニコニコ生放送」って・・・

 ということで、納得したので、表題もすこし変更しました。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

情報の伝達スピードは60年以上前の方がはやい?

2009-03-27 23:41:35 | Weblog

ここの痛いニュース
「国民の皆さん、ミサイル発射されたらすぐに情報を伝えます。テレビなどの情報に注意して下さい」…政府、国民に呼び掛け
http://blog.livedoor.jp/dqnplus/archives/1239205.html


いや、すぐに伝えますと言っても、困るんですけど・・・
そもそも、テレビって、そんなに見ないし、ラジオもきかないし。。。
さらに、テレビ、パソコンの地デジでみてるんですよ、
何秒か遅れるし・・・

ネットで伝えてくれれば、見れるけど、
リフレッシュで画面書き換えてたとしても、数秒待ってしまいますよね。。。

そのあいだに、落ちちゃいますよね。
っていうか、飛び始めてから、ニュース流して、間に合うのか??

これって、そのリンク先の下の方(コメントのところ)に書いてあったけど、
むかしの「空襲警報」とおなじですよね。
60年前は、空襲警報はすぐにサイレンが鳴って、
みんな準備できたわけで、
そう考えると、

情報の伝達スピードは60年以上前の方がはやい?


P.S 60年前とおなじく、発射されたら、市役所がサイレン鳴らしたほうが、
早くね??

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

フリーのiText+Javaで、日本語文字、画像、図形を任意の位置に書き出し、PDFへ

2009-03-27 18:58:48 | Weblog

では、まとめとして、iTextを使って、

  ・日本語文字
  ・画像
  ・図形

を任意の位置に書き出し、PDFへ出力します。

日本語文字を扱うには、iTextAsian.jarというjarが必要なようです。

ここ
http://sourceforge.net/project/downloading.php?groupname=itext&filename=iTextAsian.jar
にあるみたいです。
ダウンロードしたら、EclipseでJarを付け足すわけですが、それについては、
ここに書いてある方法で追加してくださいませ。

で、そうしたら、ソースコード。
今回、図形は、ついでなので、 前に作ったtest.jpgと、WIKIPEDIAをcode39で表現したものをだしてみたいと思います。
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import java.io.*;

public class MojiTest {

	public static void main(String[] args) throws Exception{

			//	ドキュメントを作成
			Document document = new Document(); 
			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("moji.pdf"));
			document.open();
			PdfContentByte cb = writer.getDirectContent();

			//	文字を指定した位置に書く
			cb.beginText();
			BaseFont bf = BaseFont.createFont("HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_embedDED);
			cb.setFontAndSize(bf, 12);
			cb.moveText(10, 800);
			cb.showText("てすと   mytest 123");
			cb.endText();
			
			// 指定したところに、図形を描く(赤い四角とふつうの円)
			cb.setRGBColorFill(255, 0, 0);
			cb.rectangle(100, 700, 50, 50);
			cb.fill();

			cb.setRGBColorFill(0, 0, 0);
			cb.ellipse(200, 700, 250, 650);
			cb.stroke();
			
			//	CODE39のバーコードを書く
			Barcode39 code39 = new Barcode39();
			code39.setCode("WIKIPEDIA");
			Image image39 = code39.createImageWithBarcode(cb, null, null);
			cb.addImage(image39, image39.getWidth(), 0,0,image39.getHeight(), 10, 600);

			//	イメージ出力(JPEGファイル読み込み)
            		Image jpg = Image.getInstance("test.jpg");
			cb.addImage(jpg, jpg.getWidth(), 0,0,jpg.getHeight(), 10, 500);

			//	クローズ
			document.close();
	}

}



参考にしたサイト
http://www.ujihara.jp/iTextdotNET/examples/com/lowagie/examples/directcontent/text/Text.java
http://www.northvan.jp/?p=13

なんか、PSのコマンドっぽい書き方になってきた。
めんどっちいけど、こっちのほうが、制御しやすそう。Chunkとか、使うより・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする