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

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

アナタの予定、丸見えに…グーグルカレンダー“大開放”

2006-10-04 22:56:11 | Weblog

ここのニュース
アナタの予定、丸見えに…グーグルカレンダー“大開放”
http://www.zakzak.co.jp/top/2006_10/t2006100432.html

によると。。。
(以下斜体は上記ニュースより引用)

 米検索最大手グーグルが提供しているスケジュール管理用のカレンダーサービスで、「デートの予定」などの個人情報が公開されてしまうケースが出てきて、騒動になっている。サービスの利用者の設定ミスが原因とみられる。便利なサービスも設定や使い方を間違うと、個人情報垂れ流しの“凶器”になってしまうのだ。


(中略)


間違って公開されている情報を見ると、ドッキリするようなものも多い。

 「本社出張」「経営会議」「面接」など仕事のスケジュールや面会相手の企業名などが具体的に記載されているカレンダーがたくさんある。中には、会社の社長らしき人物の予定も詳細に書かれており、面接相手の個人名やアポイント先の企業名も書かれている。

 さらに、仕事相手の女性の氏名や年齢、携帯電話番号がずらりと記載されていたり、「××とデート」などプライベートの予定をさらしていたりするケースもある。


えーっと、
仕事相手の女性の氏名や年齢、携帯電話番号がずらりと記載
ほー、なんか、名簿やさんとか、脅迫して弱みを握って。。。屋さんとかが、好みそうな内容だ。。。

そのうち、わざと、

「うちの会社も、グーグルカレンダー使いましょう!」

っていうやつがでてくるかもしれない。

パソコンに弱い美女、かわいい女性がいる会社で、
提案してくるやつが、ネットに強い、あやしい男だったら、
注意したほうがいいですな(^^;)


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

ジャストシステムの提携したアンチウイルスソフト会社って、ランキング1位だったとこ!

2006-10-04 16:45:15 | Weblog

 あの、マカフィーは13位、ノートンは22位、ウイルスバスターは海外ではPC-Cillinという名前で27位だったとき、最強の1位になった、Kaspersky?

 って、意味通じないよね。。

 ここのニュース
速報 - ジャストシステム、セキュリティソフト市場参入、露Kasperskyと提携
http://journal.mycom.co.jp/news/2006/10/03/380.html


によると、(以下上記ニュースより引用)

ジャストシステムは3日、セキュリティソフト市場への参入を表明した。露Kaspersky Labs Internationalと提携し、11月17日より「Kaspersky Internet Security 6.0」を発売する。価格は通常版が12,800円(税別)。


だそうなんだけど、このKasperskyって、

ここの記事
アンチウイルスソフトウェアランキング、最強はどれ?
http://gigazine.net/index.php?/news/comments/20060905_antivirus/


で、1位になった、Kasperskyのことだよねえ。。きっと。
冒頭に書いたように(冒頭および以下の斜体は上記ランキングの記事より引用)

 あの、マカフィーは13位、ノートンは22位、ウイルスバスターは海外ではPC-Cillinという名前で27位

という中の1位。。

 ただし、この前、itochanさんが、大手だからこそ…かも とコメントくださったとおり、大手だからチェックされて、順位が低いということは、ありえるかもしれない。。けど、1位はすごい!

 でも、12,800円は高い。。。。

 あ、そのGigazineに、もう、このニュース、でてました。
ジャストシステム、セキュリティソフト「Kaspersky」を発売
http://gigazine.net/index.php?/news/comments/20061003_justsystem/


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

JAVAのコード変換:その2 InputStreamReaderを使わない方法

2006-10-04 15:31:15 | JavaとWeb

 昨日のJAVAのコード変換のつづきです。
 前回は、InputStream,OutputStreamを使ったわけですけど、1.4から、CharsetDecoder、CharsetEncoderなどがはいったので、文字列(byte配列にしたもの)を、コード変換して、文字列(byte配列にしたもの)に直すということができます。入出力関係無しに。

 で、その方法を示します(といっても、サンプルプログラムはファイル入出力しちゃってるんですけど、ファイルを使わなくてもできます)




■概要

(1)SJISなどを、内部的なコード(UTF8)に、以下の手順でします
・CharsetDecoderを取得します。このとき、SJISに設定しておきます
   Charset charset1 = Charset.forName("SJIS");
   CharsetDecoder decoder = charset1.newDecoder();

・byte配列を、ByteBufferに変換します(ByteBuffer.wrap)
   ByteBuffer bb1 = ByteBuffer.wrap(data);

・そうすると、CharsetDecoderのdecodeで、変換できます

(2)内部的なコード(UTF8)をEUCなどに以下の手順でします。
・CharsetEncoderを取得します。このとき、EUC(EUC_JP)に設定しておきます
    Charset charset2 = Charset.forName("EUC_JP");
    CharsetEncoder encoder = charset2.newEncoder();

・CharsetEncoderのencodeで、変換します
    ByteBuffer bb2 = encoder.encode(cb);

・それを、Byte配列にします
    byte[] outdata = bb2.array();

(1)と(2)を同時に行うと、文字がSJIS=>EUCへ変換されたことになります。




■サンプルソース
 SJISのファイルtest.txtを、EUCに変換し、testEUC.txtというファイル名で書き出します。ソースは以下のとおり。コメントの「変換」のところが、上記の”概要”で書いた内容にあたります。

import java.io.*;
import java.nio.*;
import java.nio.charset.*;

public class test {
	/*
	 * 	メイン処理(呼び出し元)
	 */
	public static void main(String[] args) 
	{
		try
		{

			//==============================//
			//	読み込む		     //
			//==============================//
			File f	=	new File("test.txt");
			FileInputStream fi = new FileInputStream(f);

			//	読み込み
			int len = (int)f.length();
			byte[] data = new byte[len];
			fi.read(data);
			fi.close();

			//==============================//
			//	変換		     //
			//==============================//
			
			//	SJIS=>UTF8
			Charset charset1 = Charset.forName("SJIS");
			CharsetDecoder decoder = charset1.newDecoder();
			ByteBuffer bb1	= ByteBuffer.wrap(data);
			CharBuffer cb 	= decoder.decode(bb1);

			//	UTF8=>EUC
			Charset charset2 = Charset.forName("EUC_JP");
			CharsetEncoder encoder = charset2.newEncoder();
			ByteBuffer bb2 	= encoder.encode(cb);
			byte[] outdata	= bb2.array();
		
			//==============================//
			//	書き出し		     //
			//==============================//
			File f2	=	new File("testEUC.txt");
			FileOutputStream fo = new FileOutputStream(f2);

			//	書き出し
			fo.write(outdata);
			fo.close();
			
		}
		catch (Exception e)
		{
      		e.printStackTrace();
    	}

	}

}

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

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

BREWで複数画面を(分割して開発可能な)開発する場合の方法論(その8:仕様追加-4)

2006-10-04 13:02:16 | ケータイ

 シリーズ「BREWで複数画面を(分割して開発可能な)開発する場合の方法論」のつづきです。

 前回、全体の修正について触れましたので、今回は1画面だけを直す例ということで、第二画面だけを修正した後、すぐにテストする方法についてです。

 なお、その際、画面ごとにテストする場合に必要なバージョンわけについても書きます。
 この方法は、実務的には画面ごとにテストする場合に使うというよりか、機種ごとにプログラムは分けるけど、ソースは一本化するなどというときに使いますけど。。

 では、第二画面修正です。




■概要
 第二画面に関する修正の仕様は、「ユーザー名をいれて表示する」です。
 なので、第二画面自身の修正が必要です。具体的には、HTMLとCのソースファイルに修正が入ります。

 ただし、テストを行うには、アプリ全体の部分で、ダミーの値をセットし、第二画面を呼び出さないといけません。そこの修正をします。




■全体の部分の修正

 具体的には、
・initAppDataで、ユーザー名、正解率、秒数をセットし
・HandleEventでスタートのときgamen2_initAppDataを呼び出す
とすればいいです。

 しかし、ヨーク考えると、今後第一画面が修正入ったり、新しいメニュー画面(gamen10)が修正になるってこともありえます。そーすると、ここを消して。。。また書き直して。。。
めんどうだし、その修正自体をまちがえちゃうかもしれません。

 そこで、こんなことをします。

・version.hというファイルを用意します。
 このファイルには、以下のように、現在テストするもののdefineを入れるだけです。
#define	_DEBUG_GAMEN2

今回は第二画面なので、_DEBUG_GAMEN2としました。

・そして、共通部分のヘッダー(fukusu1.h)で、このversion.hをインクルードします

・そして、以下のように、修正箇所をifdef _DEBUG_GAMEN2で囲みます。

initAppDataの追加箇所
#ifdef _DEBUG_GAMEN2
	STRCPY(pMe->sei_ritu,"100");
	STRCPY(pMe->byo,"20");
	STRCPY(pMe->username,"ウィリアムのいたずら");
#endif

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


HandleEventの追加箇所
#ifdef _DEBUG_GAMEN2
		return gamen2_InitAppData(pMe);
#else
		return gamen1_InitAppData(pMe);
#endif

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

 なお、今回はfukusu1.hにしかversion.hを入れるとかいていませんが、本来は、すべてのヘッダ(fukusu1.h,gamen1.h,gamen2.h,gamen10.h)にversion.hをいれます。これによって、デバック画面の切り分けが、

  画面1のときは、version.hを_DEBUG_GAMEN1に、
  画面10のときは、version.hを_DEBUG_GAMEN10に、
  画面2のときは、version.hを_DEBUG_GAMEN2に、

指定することで切り分けられるようにします。

なお、この手法は、デバッグのときというより、端末によって内容を切り分けるときに、よく使います。

ここのソースは、以下のとおりです。
   fukusu1.c
   fukusu1.h
   version.h




 ちなみに、gamen10の修正も合わせる場合、initAppDataのほうは

#ifdef _DEBUG_GAMEN2
    修正内容
#endif
#ifdef _DEBUG_GAMEN10
    修正内容
#endif

 で切り分けられるのですが、HandleEventのほうは

#ifdef _DEBUG_GAMEN2
return gamen2_InitAppData(pMe);
#else
#ifdef _DEBUG_GAMEN10
return gamen10_InitAppData(pMe);
#else
return gamen1_InitAppData(pMe);
#endif
#endif

となってしまいます。これ、画面数がふえると、たまったもんでないのですが、
じつは、こうならない方法があります。

 ただ、説明すると長いので、またの機会にします。




■第二画面

 HTMLファイルについては、ユーザー名が入るところに%sと書いておきます。
 その修正をしたものが、こんなかんじ
   gamen2.hrm

 そして、gamen2.cのところは、initAppDataで、いままで、

SPRINTF(fdata2,fdata,poya->sei_ritu,poya->byo);

 と設定していたのを、ユーザー名を増やして

SPRINTF(fdata2,fdata,poya->username,poya->sei_ritu,poya->byo);

 とするだけです。

ということで、ソースはこちら
   gamen2.c

●注意 この修正は、本番でもこうやって動いて欲しいので、さっきの#ifdef _DEBUG_GAMEN2で囲んではいけません

 #ifdef _DEBUG_GAMEN2で囲うのは、あくまでも、その画面のテストのときだけ使うものを囲うのであって、本番でも動くものを囲ってしまってはいけません。
 機種誤との切り分けの場合もそうで、共通部分は囲わないで、その端末のみの固有処理のところを囲います。





 これで、この第二画面だけを実行してテストできます。



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