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

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

ドコモの携帯で「YouTube」が視聴可能に、でもね。。

2008-01-25 10:14:45 | Weblog

ここのニュース
ドコモの携帯で「YouTube」が視聴可能に
http://headlines.yahoo.co.jp/hl?a=20080124-00000010-sh_mar-sci

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

ドコモの携帯電話の一部の機種で、動画投稿サイト「YouTube」の動画を視聴できるようになった。「YouTube」上のほぼすべての動画を見ることができるほか、アカウントにログインして、お気入り動画を選んだり、見たりすることもできる。


おお、これで、駅の暇つぶしにYouTubeを見る人が・・・

でもね。。


公式ブログでは利用者に向けて「パケホーダイに入ってないと、電話代が大変なことになるので、お気をつけて。」とのメッセージが。

たしかに(^^;)



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

ディズニーがニンテンドーDSをガイド機にする実験中

2008-01-24 19:13:24 | Weblog

ここのGIGAZINEの記事
ディズニーがニンテンドーDSをガイド機にする実験中
http://gigazine.net/index.php?/news/comments/20080124_disney_ds/

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

フロリダ州のウォルト・ディズニー・ワールド・リゾートにて、ニンテンドーDSと無線を組み合わせた園内の電子ガイドの実験中とのことで、実際どのような画面になるかがアップされています。案内機能の他にゲーム機能などもあるようで、これが実用化されれば待ち時間も楽しく過ごせるようになりそうです。


実際の様子は、そのGIGAZINEの記事にあります。

日本の観光地でも、やりそうですね。
ユビキタス端末は、ケータイでなく、DS?


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

HTML5って、frameがなくなっちゃうの・・・

2008-01-24 17:11:44 | JavaとWeb

ここのスラッシュドットニュース
W3C、HTML5の最初の草案を公開
http://slashdot.jp/articles/08/01/23/1228244.shtml

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

W3Cのプレスリリースによると、1月22日に次期HTML標準であるHTML5の初期草案を発表したそうだ。マルチメディア対応の強化やAjax対応などが謳われており、ざっと見てみてもvideo要素とかDrag and DropやStorageなど目新しい文言も見える。一方でfontやframeなどは削除されるかもしれない要素にあげられている。


frameがなくなっちゃうの・・・(>_<!)

ちなみに、4との相違点について、日本語訳が
http://standards.mitsue.co.jp/resources/w3c/TR/2008/WD-html5-diff-20080122/
に、もう、出ているらしい・・


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

salesForceが、卸研あたりと結びつくと、Sugar涙目?

2008-01-24 11:09:11 | Weblog

 きのう、salesForceのお話聞いてきたんだけど、SugarCRMにくらべて、salesForceのほうが、(ま、使っている人が多いのは当たり前として・・・なんたって日本郵政が使っているくらいだから)カスタマイズしやすい気がした。思想が違うのかな・・

 たとえば、salesForceも、Sugarも項目をスタジオから変更できるんだけど、その項目を変更したら、こんな項目名もへんこうしなくていいの?という一覧みたいのがsalesForceのほうでは出てくれて、そこからその一覧の項目で修正すべきものがあれば、修正できる。
 こういうちょっとしたこと(まあ、Sugarでも、この程度の修正なら、コミュニティの方々がやってくれてもいいものだが)が意外と良く出来ている気がする。。あんまりこのへん、説明がなかったので、はっきりしなかったが。。

 ただ、たぶん、salesForceなんかの場合、カスタマイズがしやすいかどうかよりも、カスタマイズしやすい客を選べるんだろうな。金がない客ほど、無謀なカスタマイズ要求をしてくる客が多い。このような客は、初期コスト無償や低料金のものにこだわる。
 上客は、カスタマイズしにくいとこはしやすいように、仕様を変えてくれ、また適正な費用を払う。
 なぜなら、上客は、コンピューター導入の目的があるので、目的が実現できればいいので、そんなにうるさいことを言わない。目的があれば、予算もつく。
 一方、金がないのに入れようという客は、ITで一気逆転とか、なんとなくという動機が多いので、「こーいう画面を作れ!」となり、無謀な画面カスタマイズ(画面を使いよくしても、カネは生み出さない)を要求し、疲労困憊する。で、初めの動機がはっきりしないので、コストも抑えてということになる。。




 まあ、それはどーでもいいことなんだけど、質問たーいむ!に、波形先生が質問して、卸のほうとつなげては?という話が合ったけど、たしかに、インターフェースにRESTの口かなんかもっていたら、注文を受けたり納品したときに、salseForceのインターフェースをたたいてもらって、データ自動入力してもらうっていう手はありそうだね。

 卸研かなんかと結びつけば・・・Sugar涙目(^^;)

 ま、Sugarも、SOAP口を持っているので、流通XML-EDIのシステムを作ってあったと仮にすると、その注文を受けた際、納品の際、SOAPからSugarを呼べばいい(nu-SOAPからsetEntryを呼んだ方がいいと思う。PHP5のSOAPインターフェースでなんかへんだったことがあるんだよな・・)んだけど、取引先とXML-EDIのほうが、概念的にあってないので(つまり、店舗とかそー言う概念があるので)、そこのカスタマイズが大きく必要だよね。それと、商談に注文データを入れるのはいいとして、商品の扱いをどうするか。

 商品はSugarの場合、有償版にしか入ってないと思うし、そもそもSugarに卸の商品をいれるわけにはいかんでしょー、あんなにいっぱい・・。そーなってくると、その辺の取り扱いをどーするかっていうお話になるよね(商品を持たないで、商品名を入れてしまうのも一手かな。。ただその場合、商品別データを取りたいとすると、商談に対する明細テーブルを作成して、それをダッシュボードで表示するカスタマイズが必要になってくる)

 とまあ、ここまでのカスタマイズをすると、SugarもSalseforceも、お金かかるには違いないから・・

 なんて思った。。みーこっしゅ(つづりがわかんないのでひらがなで)の小林先生が、POSのSaaSでの可能性っていう話を聞いてたけど、組み込みのSaaSっていうのは、どーなんでしょーねー。。


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

フリーのデータマイニングソフトについてのメモメモ・・

2008-01-23 17:23:38 | Weblog

フリーのデータマイニングソフトにかんして、RとかWekaとかあるみたいだけど、
それについてのメモメモ

・Rについて、いろいろまとまっているところ

統計処理ソフトウェアRについてのTips
http://phi.med.gunma-u.ac.jp/swtips/R.html


・・Rは、本も売ってますよね。

・Wekaの使い方についてまとまっているところ
データマイニング・WEKA
http://blogs.yahoo.co.jp/pironotakarabako



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

SugarCRM 4.5のカスタマイズのまとめ(3)。

2008-01-23 13:30:24 | SugarCRM

 シリーズSugarCRM 4.5のカスタマイズのまとめについて、今SugarBeanを継承しないモジュールを作って、メイン画面の表示の仕方は説明したので、左側のメニュー画面に行こうとしています。

 で、その前に、言語ファイルといわれる、日本語と英語の切り替えのためのファイルがあるので、それと、$mod_stringsについて説明します。




■各国語切り替え

 SugarCRMにおいては、各国語を切り替えるのに、言語ファイルを切り替えることによって行います。
 表示部分のことばを、その言語ファイルにいれて、保持しています。

 この言語ファイルには2種類あります。
  1つは、モジュールごとに用意されている言語ファイル
  もう1つは、モジュール共通の言語ファイルです。




■モジュールごとの言語ファイル

 モジュールごとに表示内容について各国語で記述した言語ファイルは、
    Sugarのホーム/modules/モジュール名/language
 の下にあります。
    日本語は、ja.lang.php
    英語は、en_us.lang.php
 です(この2つは空で作ってあります)

内容はどちらも、

$mod_strings = array (
'LBL_MODULE_NAME' => '取引先' ,
'LBL_MODULE_TITLE' => '取引先: ホーム' ,
     :
'LBL_MISC' => 'その他' );
(実際には>は半角)

のように、$mod_stringsを配列で宣言し、そこで、

  項目名=>表示内容

で宣言していきます。表示の項目名はたいていLBL_ではじめ、大文字です。
各モジュール内のPHPファイルでは、$mod_strings['LBL_MODULE_NAME']のような形で利用します。
こうすると、プログラマー側は、今どの言語化を意識しないでプログラムできます。

なお、この$mod_stringsは、モジュールが切り替わるたびに、内容が変わるわけです。




■モジュール共通の言語ファイル

 さてここで、どのモジュールにおいても、モジュールの上にあるタブは同じです。
 このような、モジュール間共通の変数は、$app_list_stringsにはいっていて、
 $app_list_strings['moduleList'][モジュール名]に、表示モジュール名が入っています。

 そして、これを設定するのに、

 Sugarのホーム/custom/include/langage

 の下につくりました。
    日本語は、ja.lang.php
    英語は、en_us.lang.php
 です(この2つは空で作ってあります)。

 そこに
$app_list_strings['moduleList']['Tests']='test';
 のように書きました。

 ただし、インストーラーからインストールする場合は、ここ以外のところに書き出され、読み込まれます(その場合でも、各国語用にファイルは分かれる)。




■日本語ファイルにおける注意

 言語ファイルにおける日本語や、ほかに日本語を含むファイルにおいて、文字コードはUTF-8で保存してください。そして”BOM無し”にしてください。
 メモ帳でUTF-8にして保存すると(メモ帳では見えませんが)BOMがつきます。そうすると、エラーになります。なので、BOMをはずす必要があります。文字コード変換ツール「KanjiTranslator 1.5」等を使うと出来ます。




■メニューの追加

 ということで、具体的にメニューを追加します。

(1)言語ファイルの作成
    Sugarのホーム/modules/Tests/language
 (つまり、Testsモジュールのlanguageフォルダ)の下の、ja.lang.phpを以下のように
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$mod_strings = array (
  'LBL_GOHOME' => 'ごーほーむ',
);
?>

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

 en_us.lang.phpを以下のように
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
$mod_strings = array (
  'LBL_GOHOME' => 'Go Home',
);
?>

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

 作成します。
 このとき、<?の前、?>の後に不要なスペースなど、入れないでください。
 エラーになります(当然、上記に書いたBOMも、とります)。


(2)メニューファイルの作成

 Sugarのホーム/modules/Tests (つまり、Testモジュールのフォルダ)に
Menu.phpというファイルを作成し、
<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); 

global $mod_strings, $app_strings;

$module_menu[]=Array("index.php?module=Home&action=index", $mod_strings['LBL_GOHOME'],"minus");

?>

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

のように記述します。
これで、Testタブをクリックするとメニューが出てきます。




■Menu.phpファイル

 つまり、Menu.phpファイルで、 $module_menu[]に配列を追加していくことで、メニューが追加されます。
$module_menu[]=Array("行き先URL", 表示内容,アイコンの画像);
 の順に指定します。

 アイコンの画像は、
    Sugarのホーム/themes/現在使用中のテーマ/imagesの下にあります。
アイコンの画像.gifファイルがメニューのアイコン(文字の前についている)に表示されます。

なお、今回は、やっていませんが、既存の他のモジュールのMenu.phpではACLController::checkAccessを行って、起動可能なときだけ、表示していると思います。




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

オブジェクト指向で開発の最初から最後までの手順例-その44:雛形(17)

2008-01-22 17:13:17 | 開発ネタ

シリーズオブジェクト指向で開発の最初から最後までの手順例です。

 前回、画面部分の共通Javascriptを示しましたが(あれ、やっぱバグがありました。今度まとめて書いておくのと同時に、もとネタ直して置きます)、今回はその使い方です。




■使い方

以下のソースの例のように、

arr = new Array();
arr['引数名1'] = 設定したい値1;
 :
 :
arr['引数名n'] = 設定したい値n;
と引数を設定し、httpRequestを呼び出します。

もどってきたら、
xtree = retObj.responseXML;
retCode = getRetCode(xtree);
で返り値を受け取り、それによって、次の処理を行います。




■ソース例

こんなかんじです。

<html>
<head>
<title>テスト画面</title>
<SCRIPT type="text/javascript" src="kyotsu.js"></script>
<SCRIPT Language="JavaScript">
<!--

//*==============================================//
//*	関数:retfunc()			  *//
//*	内容:処理結果			  *//
//*==============================================//
function retfunc(retObj)
{
	
			//	返り値XMLの取得
	xtree = retObj.responseXML;
	retCode	=	getRetCode(xtree);
	switch(retCode)
	{
	case	"0":
//		for(i = 0 ; i < getRecCount(xtree) ; i ++)
//		{
//			getRecItemValueを使ってデータセット
//		}
		break;
	default:
		alert("処理エラー");
		break;
	}
}

//*==============================================//
//*	関数:zikko()			  *//
//*	内容:処理実行			  *//
//*==============================================//
function zikko()
{
	url = "http://127.0.0.1/test.php";
	arr = new Array();
	arr['text1'] = f1.text1.value;
	httpRequest("GET",url,arr,retfunc);
}

//*==============================================//
//*	関数:load()			  *//
//*	内容:読み込み開始		    	  *//
//*==============================================//
function load()
{

	//	読み込んだら何かする場合

}

// -->
</SCRIPT>
</head>

<body onLoad ="load()">
<p>テスト画面</p>
<form id="f1" name="f1">
<p>データ入力:<input type=text id=text1 name=text1></p>
<p><input type=button id=bt1 name=bt1 value="実行" onClick="zikko()"></p>
</form>
</body>
</html>

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




これでいままでのまとめの「(4)フレームワークにもとづき、クラスなどの開発手順、雛形の確定」はおしまいです。
つぎから(5)にすすみます。


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

SugarCRM 4.5のカスタマイズのまとめ(2)

2008-01-22 11:46:20 | Weblog

 きのうからはじめた、SugarCRM 4.5のカスタマイズのまとめですけど、前回は、SugarCRMはモジュールで出来ていて、モジュールをカスタマイズするには、SugarBeansを継承するモジュールと、継承しないモジュールの2とおりあること、そしてカスタマイズ方法としてインストールを作る場合と作らない場合があることを説明しました。

 で、前回では、SugarCRMを継承せず、インストーラーを作らないケースについて、最小限のファイルで説明しました。今回は、ここに表示させる方法、DBアクセス、ユーザー情報、メニューについての説明なのですが、そもそも、どのファイルが対象になっているかについて説明するため、まずはじめに、画面の動きを説明してから、それら説明に入ります。




■SugarCRMの画面の動き

SugarCRMが、ローカル(=ipアドレス127.0.0.1)のhtdocの下に、SugarCRMというフォルダを
つくってインストールしたとしたら、ログイン画面は、

http://127.0.0.1/SugarCRM

になって、このとき、SugarCRMの下のindex.php(apacheホーム/htdocs/SugarCRM/index.php)
が表示されますよね。

で、ログインしてください。そうすると、

http://127.0.0.1/SugarCRM/index.php?module=Home&action=index

となって、ホームが表示されますよね。
以降、moduleとactionが開く画面によって変わっていきますが(これ以外の引数も画面によってつく)、かならず、はじめはhttp://127.0.0.1/Sugar/index.php?のはずです。

 つまり、何か画面処理すると、かならず、SugarCRMの下のindex.phpにきます。
 で、はじめはログイン画面を出しますが、それ以降は、上の部分などの、テーマという部分をだして、その後、メイン画面に、モジュール名で指定されたモジュールフォルダの、actionファイルを起動します。
 つまり、

http://127.0.0.1/SugarCRM/index.php?module=Home&action=index

 の場合、メインページには、SugarCRM/modules/Home/index.phpが表示されます。

 そして、メインページの左となり、ショートカットには、モジュール名で指定されたモジュールフォルダの、menu.phpを(あれば)起動します。

 前回作ったタブをクリックすると、

http://127.0.0.1/Sugar/index.php?module=Tests&action=index

 になると思います。

この場合、メインページ部分には、SugarCRM/modules/Test/index.php
ショートカット部分には、SugarCRM/modules/Test/menu.php
menu.phpというファイルは作成していません。なので、なにも表示されていません。
Testモジュールの下のindex.phpは作成しましたが、なにも書いていません。
なので、なにも表示されていません。

逆に言うと、SugarCRM/modules/Test/index.phpに何か書くと、そこに表示されます。
早速書いてみましょう(^^)!




■DBアクセス内容を表示させてみる

 せっかくなので、DBアクセスした内容を表示してみたいと思います。
 usersテーブルにはデータが入ってるはずです。
 (もし入ってなかったら、あなたはログインできてないはずなので、Test画面を見れないはずです。
 すくなくとも、ユーザーテーブル中に、あなたのデータは入っています)。

 なので、usersテーブルを見ましょう。

 SugarCRM Developer's Manualをみると、199ページで
mysql_queryでやってますけど、たしかにこれでもOKですけど、SugarCRMのほうで、ほかのDB
のことも考えて、$dbというグローバル変数を用意しているので、それを使いましょう。
なお、P277では、$dbを使っておきながら、mysql_resultを使ってます。これはちぐはぐなので、
もっとだめだめです。$dbで用意しているものを使いましょう。

こんなかんじ

global $db;
$result = $db->query("SELECT * FROM users;");
while(($row=$db->fetchByAssoc($result)) != null)
{
	print($row['user_name']);
	print($row['id']);
}





■ユーザー情報

 現在、そのSugarCRMを使っている人、カレントユーザー、つまりあなたの情報は、グローバル変数 $current_userにはいってます。何が入っているか知りたかったら、

print_r($current_user);

で見てくださいね!・・・と、気楽に書けない・・(理由は後述)




■で、結局index.phpは

 で、結局、Testの下のindex.phpは、こんなかんじ
<?php
//======================================//
//	accountsテーブルアクセス	//
//======================================//
global $db;
$result = $db->query("SELECT * FROM users;");
while(($row=$db->fetchByAssoc($result)) != null)
{
	print($row['user_name']);
	print($row['id']);
}
?>

<HR>

<?php
//======================================//
//	カレントユーザー名		//
//======================================//
global $current_user;
print_r($current_user);

?>

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

これで、もういちど、testのタブをクリックすると。。

ぎゃあ(@_@!)・・・というくらいいっぱいでてきます。
カレントユーザー情報、すごいいっぱいあるんです(>_<!)




 左側のメニューは、Testモジュールの中にMenu.phpというファイルをつくって、そのなかを記述するのですが、具体的な記述に関しては、$mod_stringsを説明してからのほうがよさそうな気がするので、今回はこのへんにします。

 次回は、そっちのほうを説明するか、それとも、SugarBeanを継承するほうを説明するか、未定。



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

ネットはハンドル名だから炎上で済んでいる、もし本名使って住所公開したら、事件が・・?

2008-01-22 01:35:54 | Weblog

ここの痛いニュース
「『ネットでは、実名を使うのが基本』となる制度を。それがネットをよくしていく」…弁護士の小倉秀夫氏
http://blog.livedoor.jp/dqnplus/archives/1082164.html

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


ネット上の誹謗中傷にどう対処するか、匿名だから氾濫するのか。こうした疑問について、ネット実名制を唱える弁護士の小倉秀夫氏に話を聞いた。

――小倉さんのおっしゃる実名制とは、まずどんな考え方か教えて下さい。
実名制といっても、2つのフェーズがあります。1つは法的なシステム、もう1つは情報発信者の倫理ということです。法的なシステムについては、まず、不特定多数の人たちに責任の所在が明示できるように、現実社会の名前、つまり実名を使うのを基本とするような制度にするべきです。たとえペンネームなどを使う場合でも、発言の被害者から氏名、住所の開示の請求があれば、いつでも開示できることが望ましい。


いや、開示しちゃあ、まずいんじゃないでしょうか?
こうは考えられないでしょうか?

炎上しても、リアル世界で、殺されるわけではありません。
なので、「匿名であれば」炎上しても、かなりの可能性で、リアル世界では、そんなに社会的経済的影響を受けないことが多いのではないでしょうか。

一方、住所と電話番号が知られてしまったら、「匿名で」公衆電話あたりから電凸してくるっていうことはありませんか?「発言の被害者」といっても、発言がこんがらがると、どっちが被害者でどっちが加害者かわからなくなるのがネットの怖さだったりします。

 さらにエスカレートしたら、なにしでかすかわかりません。。。
 もちろん、そんなことはほとんどないと思いますが、0とは言い切れないと思います。

 そう考えると、匿名によるネットでの炎上は問題かもしれないけど、それを、実名にしたら解決するとか、そーいう問題ではなく、むしろ事態はもっと悪いほうに進行すると思うんですけど。。
 

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

SugarCRM 4.5のカスタマイズのまとめ(1)

2008-01-21 15:23:28 | SugarCRM

 もう、5.0が出るって言う時代にいまさら感があるけど、実際に出ている、実践!オープンソースCRMアプリケーション入門SugarCRM Developer's Manualにおけるカスタマイズの違いについて記述しているものが見当たらない気がするし(あるのかな?)、さらに、SugarCRM Developer's Manualでも、記述がぜんぜん足らない部分があるので、何回かに分けて、まとめてみようかと思います。




■SugarCRMは、モジュールという概念が基本で、これが2つにわかれてる

 SugarCRMには、モジュールという概念があります。
 このモジュールとは、機能やエンティティなどのまとまりです。
 このうち、エンティティのように
   ・1つのモノ・出来事などに相当し、
   ・1つのテーブルをもち(永続性があるので保存しないといけない)
   ・それに対して、CRUDがある
 ようなものは、「SugarBeanを継承したモジュール」になります。
 そうでない、グラフ表示(ダッシュボード)などは、「SugarBeanを継承”しない”モジュール」となります。つまり、モジュールは、SugarBeanを継承するかどうかに分かれます。

 どちらも、Sugarのホームの下にあるModulesフォルダ(ディレクトリ)の下に置かれます。




■それぞれのモジュールの作成方法の相違点と共通点

 これらのモジュールを作成する(=カスタマイズのため追加する)場合、以下のファイル等が必要になります。ここで、Mytestsというモジュールをつくるとすると・・

(1)タブ部分を定義する言語ファイル(ja.lang.phpとen_us.lang.php)
(2)モジュールを登録するところ
(3)モジュールフォルダ(Mytests)
    index.php
    Forms.php
    languageフォルダ (モジュールの言語のフォルダ)
     ja.lang.php
     en_us.lang.php

必要最小限のファイルとフォルダは、上記のとおりです。なお、モジュールフォルダ内のindex.phpとForms.phpはとりあえず、ファイルを作るだけで、何も書かなくても動きます。この場合、languageフォルダ内にある、ja.lang.phpとen_us.lang.phpも何も書かなくてOKです。

 で、これだけそろえると、SugarBeanを継承”しない”最小限のモジュールが作れます。継承する場合は、このほかにまだまだファイルが必要ですが、とりあえず、継承しないほうを作成してしまいましょう。




■作成の仕方で、さらに2とおりにわかれる。

 さらに、作成の仕方で、2とおりに分かれます。

 1つは、「SugarCRM Developer's Manual」に出ているように、インストーラーを作”らず”、直接、修正してしまう方法です。もうひとつは、「実践!オープンソースCRMアプリケーション入門」にあるように、インストーラーを作る方法です。この違いで、上記、(1)、(2)の作り方が違います。
 今回は、簡単な「SugarCRM Developer's Manual」に出ている、インストーラー作成しない方法を説明します。なお、このインストーラーを作らない方法は、SugarCRMを継承する場合、継承しない場合、どちらでもありえるのですが、継承する場合、作業工程が増えます。今回は継承”しない”場合を説明します。




■作る手順
 「SugarCRM Developer's Manual」198ページ上にあるとおりなのですが、ちょっと説明します。

●まず、「(3)モジュールフォルダ(Mytests)」を作成する
 (あ)モジュール名のフォルダー(Mytests)を Sugarのホーム/modules/の下に作成します
 (い)Sugarのホーム/modules/Mytestsが出来たと思いますので、そこに
       index.php
       Forms.php
    ファイルを作ってください(中身空で結構です)。
 (う)Sugarのホーム/modules/Mytestsの下に、languageフォルダを作る
 (え)Sugarのホーム/modules/Mytests/languageフォルダの下に、  
     ja.lang.php
     en_us.lang.php
    ファイルを作ってください(中身空で結構です)。

●つぎに「(2)モジュールを登録」をします
 (お)SugarCRMのフォルダ/include/modules.phpを開いてください
    (注意:modulesじゃないですよ、includeの下!)
      $moduleList[] = 'モジュール名';
    が並んでいると思うので、そこに、
      $moduleList[] = 'Mytests';
    も追加してあげてください。
 ※参考:インストーラーを使った場合は、ここではないところに追加され、そのファイルを、
  このmodules.phpの最後あたりの行で、インクルードしています。

●そしたら「(1)タブ部分を定義する言語ファイル」をいれます。
  (か)SugarCRMのフォルダ/custom/include/languageフォルダを開きます。
     なければ、作ってください。
    (注意:modulesでも、ただのincludeでもないですよ、custom/includeの下のlanguage!)
  (き)そしたら、そのSugarCRMのフォルダ/custom/include/languageフォルダの下に
     en_us.lang.phpファイルを作成します
  (く)SugarCRMのフォルダ/custom/include/language/en_us.lang.phpを開いて
<?php
$app_list_strings['moduleList']['Mytests']='mytest';
?>

      (上記<>は本当は半角)
      を追加します(=の右辺の'mytest'は好きなタブにしてくださいね)
  (け)同様に、SugarCRMのフォルダ/custom/include/languageフォルダの下に
     今度は、 ja.lang.phpファイルを作成します
  (こ)SugarCRMのフォルダ/custom/include/language/ja.lang.phpを開いて
<?php
$app_list_strings['moduleList']['Mytests']='mytestj';
?>

      (上記<>は本当は半角)
      を追加します(=の右辺の'mytestj'は好きなタブにしてくださいね)

 ※参考:インストーラーを使った場合は、ここではない、奇想天外なところに追加されます。

●開きます
  (さ)SugarをAdmin権限ある人が立ち上げてください(Adminでなくても大丈夫かなあ??)
    →この時点では、タブはみえません。
  (し)上の「管理」をクリックしてください。
  (す)そしたら「スタジオ」の「タブを設定」
  (せ)非表示タブに(こ)で設定した名前が出ています。それを表示タブのほうに持ってきて保存
  (そ)ログオフして再度ログオンすると、ちゃんとできてます。
     タブをクリックすると・・・なにも表示されません(^^;)




ってことで、次回は、ここに表示させる方法、DBアクセス、ユーザー情報、メニューについてなどです。



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

「データをすべてファイル名扱いにして高速検索」の話。

2008-01-21 11:33:05 | Weblog

ここのスラッシュドットの記事
データをすべてファイル名扱いにして高速検索を実現?
http://slashdot.jp/articles/08/01/20/2052246.shtml

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

ITproに、「既存のDB技術と一線を画し、高速検索を実現する」というふれこみのデータ検索技術が紹介されている。 HOWSという企業が開発した「ISSEI」というVisualBasicで開発されたシステムらしい


って、これ、ウィリアムのいたずら、去年の11月に、すでに
1兆件のデータ検索が4秒って言う話
http://blog.goo.ne.jp/xmldtp/e/7ab725457d09029bdc73d157833edf20

っていうので、取り上げているんだけど・・・(^^;)
ちょっと、古い話では・・

スラッシュドットでは、ぼろくそにたたかれてたけど、
まあ、早くて、それでお客さんも納得しているなら、それはそれで、いいと思う。
その手法がどんなもんであっても・・

ただ、
元の記事
http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/

に(以下斜体は上記ITProからの引用)

ISSEI専用チップをメーカーと開発するのが目標

(-_-;)文章が矛盾してるんじゃない・・・・

上で、従来のRDBは、

「ファイルの入出力にかかる時間がボトルネックで、検索速度が上がらないとの問題を抱えていた」


といっているのだから、もしそれが本当ならば(言っていることが本当に正しいかどうかは別として、仮に正しいとすると)チップを作るまでもなく、検索対象をオンメモリで置いて検索してしまえば、そっちのほうが、早いんでないかい??


コクヨや日立製作所もISSEIに注目し、活用を検討している。

まじっすか・・(-_-;)

P.S 一般的に、以前に書いたように、インデックスなどにファイル名を使ってしまうのは、インデックスのB木を実現するのがめんどっちいときに、やっちゃうんだけどね。そー積極的に言われると。。



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

舛添大臣、そのためにレセプトオンライン化と電子カルテがあるんではなくて?

2008-01-20 23:25:52 | Weblog

 NHKスペシャルの認知症の問題で、医者が認知症を見逃したり、正しい治療ができなかったり、そもそも、そういう情報が伝わらないのに対して、舛添大臣が、「そういうのはインターネットを使って、過去の認知章患者の情報を検索できるように、エビデンスをあつめられないのか」?と専門医に問うていたけど・・・


 ちょっとまったあ!

 舛添大臣、そのためにレセプトオンライン化と電子カルテがあるんではなくて?

 まず、レセプトオンライン化にともない、病名と薬の情報は、厚労省にあつまりますよねえ。
 そして、大病院などで電子カルテを導入して、その電子カルテとレセプトの連携ができれば、病気とそのときだした薬と結果がむすびついてくる。とくに、専門医がそれを使った場合、エビデンスになるので、それを(個人情報などを抜き、また統計処理などをして)医者がアクセスできるように、厚労省がすれば、いいんじゃないか?

 本来は、情報大航海は、こーいうことをするべきだったんだろうけどね・・

 ま、そうじゃなくっても、これくらいなら、できそうな気がするが。。

 そして本来、こーいうことをやるのが電子政府で、大臣の上記のような質問に対して、このようい適切にこたえられるのがCIO補佐官のお仕事と思うんですけど。。

 ま、医療についてはこれ以外でもいろいろ意見があるんだけど、それについてはまた今度。

P.S ただ、そういうことに気付かせた今回のNHKスペシャルは、NHKのマスコミとしての仕事をきちんと果たしているいい番組だと思う。大臣に直接、実態を見せて意見を問うこのような番組は、どんどんやるべきだ。いろんな政治家呼んで、永遠と結論の出ない議論をさせるより・・
 

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

センター試験中に着メロ・・・これ、通話できないように、できないのかしら?

2008-01-20 19:17:15 | Weblog

ここのニュース
開始後、着メロ30秒間=再試験対象は1100人-センター試験・英語リスニング
http://headlines.yahoo.co.jp/hl?a=20080120-00000059-jij-soci


これなんだけど、センター試験とか、どこの会場で何時からやるっていうのはわかってるのだから、その時間帯、その場所にかかってきたケータイ電話は(基地局のほうで自動的に)「現在出られない状態に・・・」というアナウンスを流して、かからないようにするっていうことは、できないのかしら。。

(固定電話はOKとする。固定電話を試験会場の”教室”においている学校ってのはないだろう。。ふつう事務室とかにあるものだ。また、試験監督の着メロがなってもこまるので、ケータイはその場所だったら、その時間はだれでも、全部不可とする。まあ、「現在出られない状態に・・・」のかわりに、固定電話の番号をアナウンスしてくれれば、もっと便利だけどね)

なんか、難しい問題でもあるのかな。。


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

asahi.com「iPod課金検討」報道、文化庁「事実に反する」と抗議

2008-01-19 18:41:26 | Weblog

ここの記事
asahi.com「iPod課金検討」報道、文化庁「事実に反する」と抗議
http://headlines.yahoo.co.jp/hl?a=20080118-00000002-zdn_n-sci

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


 朝日新聞のWeb版「asahi.com」は1月17日付で、同日開かれた文化審議会著作権分科会の私的録音録画小委員会が「iPodやHDD内蔵DVDレコーダーに補償金を上乗せすることを2月以降検討することで合意した」と報じた。


でね、問題はここから・・・


 これに対し、小委員会を担当する文化庁の川瀬真・著作物流通推進室長は「事実に反する報道で、記事を書いた記者に抗議した」と報道内容を否定した。

 ITmedia記者が冒頭から最後まで傍聴した限りでは、この日の小委員会ではそういった議論や合意はなかった。


おいおい、またアサヒってんのかよ(-_-)


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

PHPでソケット間通信(クライアント側)

2008-01-18 18:17:06 | PHP

ここのブログ
phpのソケット通信
http://runaway.air-nifty.com/tubuyaki/2006/01/php_db51.html

を参考に、PHPでのソケット間通信をテストしてみました。

内容は、ローカル(127.0.0.1)のHTTPサーバーにアクセスし、Content-length分データを読み込み、データ部分を表示するというものです。

プログラムは、こんなかんじ
<?php
	$sock = fsockopen( '127.0.0.1', 80, $errono, $errmsg, 30 );
	$out = "GET / HTTP/1.1¥nHost: 127.0.0.1¥n¥n";

	//データ送信
	fputs($sock, $out);

	//データ受信
	$c =fread($sock, 1);
	$header = "";
	while ( strpos($header,"¥n¥n") === false )
	{
		if ( $c	!=	"¥r")
		{		
	  		$header .= $c;
		}
  		$c = fread($sock, 1);
	}

	//受信データを改行で分割
	$hline = array();
	$hline = split("¥n",$header);

	//	Content-Lengthを探し、データ長取得
	$datalen = 0;
	for($i = 0 ; $i < count($hline) ; $i++)
	{
		$lenpos = strpos($hline[$i],"Content-Length:");
		if ( $lenpos !== false )
		{
			$datalen = intval(substr($hline[$i],strlen("Content-Length:")));
			break;
		}
	}

	//	データがあれば読み込む
	if ( $datalen	>	0 )
	{
  		$data = fread($sock, $datalen);
	}

	//	読み込み内容を返す
	echo($data);

	fclose($sock);

?>

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


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