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

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

オーマイニュース、今日、創刊日!見ました?鳥越さん、編集長でチェックしてるの?

2006-08-28 22:27:28 | Weblog

 あの、創刊前から話題だった、
 オーマイニュース
http://www.ohmynews.co.jp

みなさーん、見ましたあ??
正直、期待はずれ。。。




エンタメは、萌え系ニュースないし。。。
スポーツは野球とサッカー、ボクシング。。。女子バレーボールはあ??
 森 元首相が参戦したプロレスについても書いてないし。。。

政治経済は何々(メディア名はいる)によると。。。
って、いうのがおおいし。。
そんならYAHOOニュース見ればいいし。。

北朝鮮のニュースですらNHKによると。。。って、朝鮮の声放送のニュースからじゃないのお。。NHKなんて、みんなみれるじゃん(>_<!)
(まあ、朝鮮の声放送も、みんなきけるんだけどさあ)




さらにひどいのは、なんじゃこの文は(@_@)?

北朝鮮 ベトナムに不正資金か
そこから、そのまま、そのまま引用するよ。。。


 北朝鮮がベトナムの銀行口座に日本円にして14億円余りを預け、アメリカから要請を受けたベトナム政府が調べ始めると、口座を閉鎖したとNHK報じる。北朝鮮が不正な手段で得た資金を隠した疑い。


ごめん、初めの文、意味通じないんだけど。。。
鳥越編集長、この原稿、チェックした??

ちなみに、このニュース、KBS World(韓国の国際放送インターネット版)の、
北韓 ベトナムの口座をドイツに移転かでは、以下のように書いてある(関連箇所のみ引用)


北韓のタンチョン銀行は、ベトナム軍事商業銀行に数百万ドルとユーロを預金した口座を持っていましたが、今年7月、ベトナム中央銀行が、アメリカの要請を受けてベトナムでの北韓の不法金融取り引き調査に着手した直後に、口座をドイツなどの銀行に移したということです。


うん、こう書いてくれれば意味通じるのに。。。




 実は、これは、一番ひどそうなのを例にあげたんだけど、他はまあ、文はただしいんだけど、あんまり他のニュースと違って詳しく書いてないし、詳しい話題はブログネタにすると、炎上しちゃいそうな話がおおいし。。。うーん、これは、あんまり、ブログには使えないなあ。。。

 もっと、身近な話題とかになればいいのにな。。



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

Javaで基本操作(その4):日時操作(GregorianCalendarで操作、Dateを変換)

2006-08-28 16:00:35 | JavaとWeb

 Javaで基本操作シリーズその4、今回は日付、時間の表現

 これ、Date型で昔は全部できたんだけど、今、推奨しないがでる。

 GregorianCalendarで操作するのがいいみたいなんだけど、じゃあ、それに変換するには?とか、そういう話。



■はじめに-DateFormatと、それ以外の操作の必要性-

 Javaの日付操作について、もし、文字列に変換するだけなら、DateをDateFormatのformatメソッドを使って変換するだけでも、問題はない。

 こんなかんじ

import java.util.*;
import java.text.*;

public class test {
	public static void main(String[] args) {
		//	まず、フォーマット操作をしたいなら、
		//	DateFormatをもらわないといけない
		DateFormat df = DateFormat.getInstance();
		
		//	現在時刻で、Dateを生成してみましょう
		Date date = new Date();
		String StrDate1 = df.format(date);
		System.out.println("日時:" + StrDate1);

	}
}

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

しかし、実際に使う場合、年、月、日等を数字で取得したい場合が多い。

このとき、java.util.Dateは、getDate()とか、推奨されてないといことになる。

 で、日付を取り出す場合、Calendar.get(取り出したいフィールド)にするわけなんだが、このCalendar(実際にはGregorianCalendar)に、どうやって持っていくか?ということが問題になってくると思う。

今回はその話。




■GregorianCalendarによる日時設定、取得、前・後の比較、日数、月数等の加減
 まず、日時操作するときはGregorianCalendarを使う。
 このGregorianCalendarはCalendarを継承している。
 つまりCalendarのset,getは使えるわけで、

 このsetとgetで、年、月、時、分、秒を取得したり、設定したりする。

 (Calendarから継承した)before,afterメソッドを使うことによって比較できる。

 年月日、時間等を足したり引いたりするには、addメソッドを使う。

 表示する場合、getでとってくれば数字になるので、そいつを表示するわけだ。




■GregorianCalendarとDateの変換
 でも、受け取るのの多くはjava.util.Dateあるいはjava.sql.Dateなわけで、そーいうとき、GregorianCalendarにするにはどうするの?っていう問題が起こる。
 まず、java.util.DateとGregorianCalendarで話を進めよう。

 GregorianCalendarのsetTimeメソッドで、Dataの値をGregorianCalendarに設定する
 getTimeメソッドでGregorianCalendarからDateの値が取れる。
 具体的には、以下のソースを見て欲しい




■サンプルソース
 そのGregorianCalendarとDateの変換は、こんなかんじ
import java.util.*;
import java.text.*;

public class test {
	public static void main(String[] args) {

		//==================================//
		//				//
	         //  GregorianCalendar=>Date	//
		//				//
		//==================================//
		// まず、2005年1月1日でGregorianCalendarを生成
		// 月は(月だけ)0から始まるので、実際の月(1)-1=0
		GregorianCalendar gc = new GregorianCalendar(2005,0,1);
		//	これをgetTimeでDateにして
		Date date = gc.getTime();
		
		//	さっきの方法で表示
		DateFormat df = DateFormat.getInstance();
		String StrDate1 = df.format(date);
		System.out.println("Dateで2005年:" + StrDate1);


		//==================================//
		//				//
		//	Date=>GregorianCalendar	//
		//				//
		//==================================//
		//	現在の時刻をdateで生成
		Date date2 = new Date();
		//  これを、さっきのgcにセットして、
                  //  現在の時間にして見ましょう
		gc.setTime(date2);
		//	1年先にしてみましょう
		gc.add(Calendar.YEAR,1);
		//	それをsetでとりだし、表示
		System.out.println("GCで2007年"+gc.get(Calendar.YEAR) 
			+"/" + (gc.get(Calendar.MONTH)+1) 
			+"/" + gc.get(Calendar.DATE));
			 		
	}
}

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



■GregorianCalendarとDateのlong表現
 また、java.util.Dateも、java.sql.Dateも、時間をlongで表現でき、
どちらの場合も
getTimeで値を取得、setTimeで値を設定する

注意:GregorianCalendarのgetTime、setTimeと
   DateのgetTime、setTimeでは、受け取る/返す値が違うということだ。

 そして、GregorianCalendarも
 getTimeInMillis()で、値を受け取り、setTimeInMillisで値を取得できる

この機能を使って、java.sql.Dateを設定する



■GregorianCalendarとjava.sql.Dateの変換
java.sql.Dateでは、newするとき、longの値を必要とする
(他の方法は推奨されていない)
なので、GregorianCalendarからjava.sql.Dateは

  Date date = new Date(gc.getTimeInMillis());

でいい。

またgetTimeでlongの値を取得できることから、
java.sql.DateからGregorianCalendarは

 gc2.setTimeInMillis(date.getTime());

でOK。

 日付はsetTimeInMillisにしろ!って書いているので、あえて
触れないけど、java.util.Dateからjava.sql.Dateへの変換、
またはその逆のケースの場合、getTimeでlongの値をとり、
setTimeでその値を取得するっていう形になる。



■サンプルソース
こんなかたち
import java.util.GregorianCalendar;
import java.util.Calendar;
import java.sql.Date;
import java.text.*;

public class test {

	public static void main(String[] args) {

		//==================================//
		//				//
		//	GregorianCalendar=>Date	//
		//				//
		//==================================//
		//まず、2005年1月1日でGregorianCalendarを生成
		//月は(月だけ)0から始まるので、実際の月(1)ー1=0
		GregorianCalendar gc = new GregorianCalendar(2005,0,1);
		//	これをgetTimeInMillisでSQLのDateにして
		Date date = new Date(gc.getTimeInMillis());
		

		//==================================//
		//				//
		//	Date=>GregorianCalendar	//
		//				//
		//==================================//
		//	現在の時刻をdateで生成
		GregorianCalendar gc2 = new GregorianCalendar();

		//	これをsetTimeInMillisでセットする
		gc2.setTimeInMillis(date.getTime());

		//	1年先にしてみましょう
		gc2.add(Calendar.YEAR,1);
		//	それをsetでとりだし、表示
		System.out.println("GCで2006年"+gc2.get(Calendar.YEAR) 
			+"/" + (gc2.get(Calendar.MONTH)+1) 
			+"/" + gc2.get(Calendar.DATE));
			 		
	}
}

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




■注意!
・月について
 途中でも書いたが、月は1からでなく、0からはじまっている。
 1月のmonthの値は0だ。なので、1足したり引いたりしないといけない
 のに注意

・ヘッダーのimportに注意
GregorianCalendarとjava.sql.Dateを使いたいとき
importを、

import java.util.*;
import java.sql.*;

と書いて

Date date = new Date(gc.getTimeInMillis());

としてしまうと、エラーになる。
理由は、java.utilにもDateがあるので、
Dateはjava.util.Dateのことかjava.sql.Dateのことか、分からなくなるから

と、こんなところですかね。


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

パッケージ販売より、ネットをやったほうが、資金が寝ないのがもう1つの理由

2006-08-28 13:00:34 | Weblog

「日本はなぜ世界的なパッケージソフトが出ないか」シリーズ。今日は、もう一つの理由。
 このシリーズでは、はじめに、パッケージソフトは1万個を2千円で売っても儲からず
   5千円で売るか(単価を高くする)
   10万個を売るか(個数をさばく)
 のどっちかにしないとだめだということを書いた

 で、前者の場合は、代理店政策を取るが、アメリカのソフトを日本で売りさばく、いい代理店はあるのに対し、日本のベンチャーが、アメリカで力を持っている代理店(たとえば米IBM)を探し出し、その代理店と交渉、契約していくのは、至難の業。
 なので、日本からアメリカにソフトを広めるのは難しいと書いた

 今日は後者、個数をさばくほうについて述べたい。




 個数を売りさばくためには、まずはじめに開発した後、テレビCMのような大々的なCMを打たないといけない。代理店を利用したプッシュ戦略では、限度があり、10万レベルになると、お客さんが自ら買いにくる、プル戦略をとる。

 この開発・CMにお金がかかる。まあ、10億ぐらいか。。そして、その資金を集め、回収するまでには、ふつう1年くらいかかるだろう。

 しかし、10億のお金を集めるような人は、たいてい、お金が好き(お金を増やすのが好き)である。
 そうでない人は、10億もあつめる危険なことをせず、せいぜい2、3億集めて、適当に売って、代理店政策に切り替える。10億ものリスクを取るのは、お金が余ってる企業か、リスクをとってでもお金を集めたい人たちである。

 で、お金を増やすのが好きな人からみると、パッケージより、ネットのほうが、魅力的だ。
 パッケージはお金が1年寝るのにたいし、ネットの場合、寝る時間はもっと少ない。
 iDCを利用するようなネットビジネスであれば、自社で施設を持たなくていいし、そうでないにしても、施設をもったって、第二種通信事業者程度であれば、(10億じゃ、不安かもしれんが)、ある程度の資本を集め、銀行から、コミットメントラインの融資が引き出せる契約になれば、可能である(資本が少ないと、倒産の危険が大きくなる)。

 ネットの場合は、技術というより、利用者を増やすことなので、宣伝によって、会員は増やせ、収入を上げられる。つまり安い広告費で、お金のもとが得られれば、安定した収入が、パッケージより手早く入ってくる。したがって、再投資もはやくでき、もっともっと儲かる。回転を早くするほうが儲かるのだ。




 そうすると、まるで、ネット企業の人は、お金大好き!という論理になってしまう。
 検証してみよう。

 楽天の三木谷社長。。。もともと銀行員だ

 ライブドアの元社長 ホリエモン。。
 はじめはJavaHouseなどに投稿していたそうなので技術から来たかもしれないが、いまは、お金大好きな人といっても、差し支えないだろう。

 サーバーエージェントの藤田社長
 お金が好きかどうかはわからない。しかし、もともとこの人は営業(ホリエモンが作ったものを営業していたそうな)なので、技術の人ではない。今はどうかわからんが。。

 ソフトバンクの孫社長
 みてくれできめてはいけないが、お金すきそうだ(^^)なんたって、自分の会社に「バンク」ってつけちゃうくらいだから。。。

 てなかんじで、ネット企業の社長は、(かなり、語弊や非難はあると思うが)お金好きだ。




 では、ネットの人は、世界を目指さないのか?というと、ここで、お金好きがまた問題になる。
 日本から、外国に進出するより、外国の企業を買収しちゃったほうが、儲かるのだ。めんどくさくないし。。お金が寝ないのだ。。

 で、これが究極まで進むと、めんどくせー。日本の会社も買収しちゃえとなる。

 究極の金の生み出し方は、

 1.自社株の価値を上げる
 2.高くなった自社株と交換して、企業を買収する
 3.買収先企業価値を上げる
 4.買収先企業を売り抜ける

 なお、この方法で、売り抜けたお金を売上に組み入れると、あなたは、ホリエモンと同じことをやっている。
 つまり、ホリエモンの方法は、究極のお金製造方法で、一歩間違えると違法、でもちょっと手前だと超あたまいい方法という紙一重なもんだ。




 てなわけで、もう一つの理由。

 パッケージソフトをつくって世界制覇するより、ネット企業をやって、海外企業を買収していったほうが、お金が早く、多く儲かるし(パッケージより、全然儲かると思う)、早く世界進出できる。

 なので、お金儲けがしたくて、コンピューターをやる人は、パッケージより、ネット企業をやって、海外進出する。

 でも、ネット活用の流れは、はじめの代理店的な政策を取っていた人にも大きく刺激を与えている。ただし、それらの人が勘違いしているのは、ネットはコスト0って思ってることだ。
 そんなことはない。では、ネットにはどこにお金をかけるべきなのか(設備にちょっと、広告にいっぱい)なんかについては、今度、機会があったら書こうと思う。

 

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

ウソ発見器、やっぱ、セマンテックWebとの関係が、怪しいっすよねえ(-_-)

2006-08-28 01:15:10 | Weblog

 あ、やっぱいた。
 さっきのウソ発見器、やっぱセマンティックWebとの関係を指摘してくる人がでてきましたねー。
 みなさんも、そう思いました??

 ウィリアムのいたずらはさらに、これ昔に紹介した、キモチ分析トーク、これがケータイで話題になったので、それをネット版でみたいな軽いノリでつくったんじゃないかとおもってるんですよ!




 つまり、このネットのウソ発見器を、そこのニュースに書かれているようにつくるとしたら、さっきのブログで示したように

1.ネット中のキーワード等をチェックして、同じような文章をさがしだす
2.チェックする文章と1で集められた文章の相関を調べる。
3.それらの文章の相関の平均(加重平均?)をもとめ、デマ率とする。

 1については、キーワードを名詞と動詞とし、それに類似の言葉を検索してくればいい。
 これは、チェックする文を形態素解析して、品詞分析して、該当品詞にあてはまる単語をとりだして、それをスペースで結びつけたかんじで、ふつうにWeb検索をかけることで、取り出せる。
 ので、ここで利用するのは茶せんと類義語辞書、ここまではいい。

 2については、そこで対象となった文章およびチェック文に関して、(形態素解析して)動詞を抽出し、その動詞にかかるかかり受けを解析する。そのとき、動詞をみると、英語でも日本語でもその動詞が出現すると、その動詞は、主語が必要なのか、目的語はいるのかいらないのかというのはだいたいわかる。そこで、動詞を取り出し、そのあと、その動詞が必要とする主語、目的語などのかかり受けを形成する名詞をとりだして(日本語の場合てにおはに注目、英語の場合、語順に注目する)、構文のクラスを形成する。
 この構文のクラスの中に、肯定文か、否定文かなどの情報もはいる。

 で、問題はこのあと。このように1で抽出された文も2で抽出された文も、構文抽出したら、それを比較し、一致度を決定し、その後、それが否定されているか、肯定されているかの組み合わせで1,0、-1をかける(ここの仕組みは前のブログに書いた)。
 このとき、その構文比較をするときに、おなじ単語が現れるとは限らないので、その単語の類義語とオントロジーをチェックしないといけない。
 ということで、セマンテックWebで使うオントロジーを嘘発見器の構文解釈でも利用することになる。




 さらに、英語と日本語の翻訳も、このオントロジーで処理できるのではと考えているのではないか?つまり、日本語の単語と英語の単語を「英語にすると」という関係で結び付けてしまうのだ。

 犬-英語にすると→Doc

 みたいなかんじ。こうすると、英語の構文も、日本語の構文も、オントロジーによって、比較できる。これはいままでの翻訳概念とは違う(構文のクラスを作ってその中で検索してしまい、英語を日本語に直すというような翻訳作業をしていない)点が、高度な検索作業なんだろう。




 とすると。。。これ、本当は、オントロジー辞書以外はできてるんじゃあ(^^;)

 うーん。。。

 意外とこれ、現実は逆で、セマンティックWebのほうで、お金がほしいんだけど、それじゃあとれないので、キモチ分析トークが流行ったのを見て、おお、これだ!これのネット版、嘘発見器、これならいいかもお。。。と思ったとか(ただし、仕組みはぜんぜん違う)なーいー(-_-)

 あるいは、情報大航海プロジェクトを進めているうちに思いついて、これ、別予算とれるよねってことになって。。。とかとか。。なーいー??ほんとお??


 ちなみに、今回のこのページのデマ度は、1200%です(^^;)


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