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

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

総務省、迷惑メール全面的に禁止する方針を固めた?。。。

2008-01-31 21:10:29 | Weblog

ここのニュース
総務省、オプトアウトメールを全面禁止の方針?
http://slashdot.jp/security/08/01/31/0620205.shtml

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


日経の記事になっているが、総務省が、受信者の同意を得ない広告や宣伝など迷惑メール、いわゆるオプトアウトメールの送信を全面的に禁止する方針を固めたとのことである。現在の特定電子メール法では、広告や宣伝メールには「未承諾広告※」と表示したりするわけだが、そもそもオプトアウトをやめて、全面的にオプトインということのようだ。方針に沿えば、通信会社には悪質業者の情報提供が求められ、違反業者への罰則も重くなるとのこと。全面オプトインということになると、ネットでの飛び込み営業なんてのは消えてしまいそうだ。


うーん、でも外国の複数の箇所から迷惑メール送信してきて、
外国のサイトに飛ばされて、
おかねの受け渡しは外国の(ネット)銀行口座
の出会い系サイト
とかいう場合、日本でとりしまれるのかなあ。。?

全部取り締まれれば、画期的だけど・・



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

Sugar4.5と5.0の、カスタマイズ上の変更点(1)-動作

2008-01-31 14:03:15 | SugarCRM

 今まで、SugarCRM 4.5のカスタマイズのまとめをやってきて、決して十分とはいえないけれど、モジュールの作り方について説明してきました。

 で、それをもとにSugar CRM5.0のモジュールカスタマイズについてやりたいと思います。

 とはいえ、SugarCRM4.5と5.0では、外見は似たようなものなのですが、内部は、星飛雄馬のお父さんがちゃぶ台ひっくり返しちゃったくらい、違います。

 具体的にどのくらい違うか(って、「ちゃぶ台ひっくり返しちゃったくらい」って言われても、さっぱり分かりませんよね ^^;)について、今回は書きたいと思います。

 その後、カスタマイズの方法についてかきます。




■ホームのindex.phpが違う。

 まず、SugarCRMはログインするとホームにあるindex.phpが表示されます。
 Sugar5.0のindex.phpは、コメントをはずすと、以下のことしか書いていません。


$startTime = microtime();
require_once('include/entryPoint.php');
ob_start();
require_once('include/MVC/SugarApplication.php');
$app = new SugarApplication();
$app->startSession();
$app->execute();

(上記>は、本当は半角。index.phpより引用)

いままではごちゃごちゃありました。
つまり、権利関係その他を、index.phpで処理していた場合、一切書き直しです。

そして、ここで見られるように、実際の処理を、いままでもincludeの中に書かれていましたが、
5.0からは、それが徹底しています。さらに、include/MVCというのができ、MVCに基づく考え方も
徹底してきました。




■モジュールのindex.phpの意味合いが違う。

そして、index.phpを処理すると、ホーム画面になり、そこのタブをクリックすると、URLが
http://127.0.0.1/Sugarのホーム/index.php?module=モジュール名&action=index
となることまでは同じなのですが、このaction=indexの意味合いが、4.5とは違います。

4.5のときは、必ず、モジュールの下にindex.phpがあり、タブをクリックしたときは、
それが呼び出されました。

ところが、5.0においては、
・SugarBeanを継承しないものは、モジュールの下にindex.phpがあり、これが実行されます。
・SugarBeanを継承するものは、基本的にはindex.phpを書きません。
 そうすると、includeのListViewがいろいろ呼び出され、Modules/metadata内にある定義を元に、
 表示しているようです(まだ追いきれてないのですが)

つまり、index.phpがあればそれを表示し(SugarBeanを継承してないケース)、なければ、SugarBeanを継承したものとしています。




■4.5とはちょっと違う

 じゃあ、いままで(4.5で)SugarBeanを継承したモジュールを使えば、index.phpがあるので、それを実行するからいいじゃん。と思うかもしれません。
 たしかに、4.5はincludeの下に、ListView,DetailView,EditViewのフォルダがあり、それぞれの機能を行ってきました。5.0にも、それはあります。

 でも、vardefs.phpの末尾が、ちょっと違うように、5.0になり違っているところもあるので、簡単に入るかどうかは・・・?




 ということで、

 SugarBeanを継承しているものに関して、5.0は大きくかわりました。

 ま、それについては、おいおい話していくことにして、

 次回から、カスタマイズの方法についてです。


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

Webにおけるクライアントとサーバーの値わたしのまとめ

2008-01-30 17:44:13 | Weblog


ふと思いついたことのまとめです。

  Webアプリのクライアント間における値わたし、
  サーバー間における値わたし、
  クライアントとサーバー間における値わたし

についてのまとめ(思いついたもの。試してないのもある。間違ってたらごめん)。




■Webアプリのクライアント間における値わたし
 Webアプリで、クライアント側のAという画面からBという画面に値を渡す場合
 (1)同一フレーム(つまり、フレームで分けられていて、フレームの一部が
    書き換えられただけ)なら、
    大元のフレームのdocumentに変数を取って、値をいれておく
 (2)同一画面内なら、Fromタブの中に、input、type=hiddenで変数を作成、
    そこの変数の値を書き換える
 (3)バックでサーバーを呼び出し、値を保存。
    次画面に移ったとき、サーバーを裏でこっそり呼び出し、値をセットする
 (4)クッキーで渡す??




■サーバー間における値わたし、
  (1)セッションに入れる(同一サーバー&アプリ内)
  (2)ファイル、DBに保存する(同一サーバー内)
  (3)リダイレクトするとき、引数につける




■クライアントとサーバー間における値わたし
  クライアント→サーバー
  (1)引数で渡す(POST,GET)
  (2)クッキーで、ヘッダーに入れる→試してない

  サーバー→クライアント
  (1)AJAXなら、返りのXMLで渡す
  (2)サーバーから画面を出すなら、Fromタブの中に、input、type=hidden
     で変数を作成、そこの変数の値を設定する
  (3)クッキーで、ヘッダーに入れられる→試してない

※クッキーは食べてくれる保証がないと、使えないので、いつも試してない。
 でも、hiddenで入れると、値がばれてしまうので、よくない。

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

グーグルケータイOS、androidのお勉強(6)-クラスの継承と、作るメソッド

2008-01-30 16:06:43 | Weblog

 シリーズ「グーグルケータイOS、androidのお勉強」
 前回、画面を作りました・・っていうか、画面のXMLを書きました・・

 今回は、Javaのクラスのほうを書きます。




■クラスを継承する

 アプリのクラス、今
public class Notepadv1 extends Activity
となっていますが、 前回ListViewを使うことにしたので、
それに対応する、ListActivityに変えないといけません。また、そいつもimportします。
つまり、

import android.app.Activity;



import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;

に変えて、さらに、

import android.widget.ArrayAdapter;

も追加して(他のBundleやMenuは、そのまま書いておきます。
ちなみに、これとは直接関係ないのですが

import com.google.android.demo.notepad1.DBHelper.Row;

もimportします)、

クラスの継承の部分

public class Notepadv1 extends Activity



public class Notepadv1 extends ListActivity


に書き換えます。




■必要なメソッド

 今回、書き換え必要なメソッドは、

  onCreate()       :アプリ生成時
  onCreateOptionsMenu()  :メニューオプション作成
  onOptionsItemSelected() :メニュー項目が選択された

 となります。




 以降、変更内容についてみていきます。


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

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

2008-01-30 13:47:16 | Weblog

シリーズSugarCRM 4.5のカスタマイズのまとめ、前回までで、SugarBeanを継承”する”場合についての説明をしたので、今回は、それをインストールする方法です。




■インストーラーを作らない場合

 インストーラーを作らない場合は、SugarBeanを継承”しない”のであれば、ファイルを修正したあと、「管理」の「タブを設定」をクリックすれば出てきます。SugarBeanを継承”する”場合も出てくるのですが、データベースを作るため、「管理」の「リペア(再構築)」をするそうです。

・・・と弱気の発言なのは、いつも、こーいう風にはやっていないからです。

たいてい、インストーラーをつくって、モジュールローダーからインストールします




■インストーラーを作る場合

 インストーラーを作る場合は、

・インストーラーを作る
・「管理」の「モジュールローダー」を選択
・インストールする

っていう感じになります。手順に関しては、実践!オープンソースCRMアプリケーション入門のP132にほんのちょっと書いてある。(そんなに難しい操作ではないので、わかるはず)。SugarOpenSource AdminGuide(PDF)の29ページ(本のページだと25ページ)にも、一応、分かりにくいけど書いてある。
なお、Sugar Module Loader and Upgrade Wizard.rtfは、モジュールローダーって書いてあるけど、実際にはモジュールローダーについてでは「なく」、後述のManifestファイルと、モジュールのおき場所について書いてある。




■インストーラーを作る手順

で、問題は、そのインストーラーを作る手順だけど・・・

・モジュールとかを適当に置く
・Manifest.phpを書く
・そいつらをZIPにまとめる
 →このZIPファイルがインストーラー

ってことになる。ファイルの置き方やManifest.phpは、実践!オープンソースCRMアプリケーション入門のP128~131や、Sugar Module Loader and Upgrade Wizard.rtfを参照。

 英語版の4.0用だけど、モジュール(インストーラー)の例としては、Songがある。
 http://www.sugarforge.org/frs/download.php/1051/Songs_Example_Module-4.0.1.zip

 なお、以下のドキュメントは、各言語に対応する場合について(のみ)書いてある
SugarCRM Create New Language Packs.rtf
http://www.sugarforge.org/frs/download.php/475/SugarCRM_Create_New_Language_Packs.rtf


 また、日本語ファイルはUTF-8にして、BOMをはずすことについては、第3回の「■日本語ファイルにおける注意」に書いたとおり
そして、ZIPファイルは、固めるアプリによってはうまくいかないみたい。これはインストーラーがエラーになるので分かります。ウィリアムのいたずらはsalhaでうまくいっているのだけれど、salhaがもう、リリースしてないのよね(^^;)




 ってことで、4.5については、一通り書いたので、今度は、新シリーズとして、Sugar5.0で銅変わったのかについて書きたいと思います(どう変わった・・つーより、全然違うんだけどね・・・)


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

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

2008-01-29 15:57:38 | SugarCRM

 シリーズSugarCRM 4.5のカスタマイズのまとめ、6回目の今回は、SugarBeanを継承”する”場合についての、のこりのファイルです。

SugarBeanを継承”する”場合、以下のファイルが必要になります。

(1)SugarBeanを継承しない場合にも必要なファイルたち
(2)データベース操作関連
    モジュール名.php,vardefs.php,Save.php,Delete.phpなど
(3)表示関連
    (3-1)一覧表示(ListView)と、検索
    (3-2)詳細画面
    (3-3)編集画面
(4)他のと関連
    (4-1)サブパネル
    (4-2)ポップアップ
    (4-3)ダッシュレットなど、

 前回までで(3)は説明したので、今回は(4)についてです。
 なお、今回取り上げる多くのドキュメントは
 ここ http://www.sugarforge.org/frs/?group_id=20&release_id=253
 に一覧があります。


■(4-1)サブパネル
 サブパネルについて、これが記載されているドキュメント(PDF)
SugarCRM Edit or Create Subpanels.pdf
http://dl.sugarforge.org/sugardocs/Notes/DeveloperNotes/SugarCRM_Edit_or_Create_Subpanels.pdf

をみると、ほとんど、リレーションの張り方(つまりverdefsのところで説明したような)しか、書いていない・・なぜかというと、実は、サブパネルは、呼ばれるモジュールのsubpanels/default.phpに記載されていて、他のやつを呼び出そうとしなければ、まあ、これが呼ばれる。

 そして、ここでは、$subpanel_layoutを指定するけど、詳しくは、なにかのモジュールを開いて、そのdefault.phpをみてください(list_fieldsは、サブパネルのリストに表示する項目です。それ以外は説明無しでも分かると思います)




■(4-2)ポップアップ

 他のモジュールから選ぶときなど、ポップアップが出てきます。
 このpopupは、popup.phpと、Popup_picker.phpから構成されます。popup.phpは、Popup_picker.phpを呼ぶだけで、実際にはPopup_picker.phpで書き出され、とくにPopup_picker.phpのprocess_page()で実際に記述しています。

 ただ、検索対象をセットするのは、このPopup_picker.phpではなく、ポップアップを出すEditView.phpの$popup_request_dataとかの中の、field_to_name_arrayで設定します。




■(4-3)ダッシュレットなど、

 ホームのページにみえるリストやグラフがダッシュレットです。モジュールのDashletsフォルダに設定するのですが、これについては、
SugarDashletsAndYou v0.9.pdf
http://dl.sugarforge.org/sugardocs/Notes/SugarDashletsDocumentation/SugarDashletsAndYou-v0.9.pdf

とか、SugarCRM Developer's Manualの43ページからを見てください。





■このほか

 モジュールの中のtplsは昔のバージョンでは見てたけど、4.5では見てなかったと思います(思い違いだったらごめん)。
 テーマに関しては、ここではなく、(Modulesでもなく)Sugarのホームの下のthemesの下をなおします。
 テーマに関して詳しくは、
SugarCRM Create New Themes.rtf
http://dl.sugarforge.org/sugardocs/Notes/DeveloperNotes/SugarCRM_Create_New_Themes.rtf

(注意:RTFファイルです)
か、SugarCRM Developer's Manualの21ページからを見てください。




ってことで、次回は、SugarBeanを継承”する”場合のインストーラーを”使わない”場合のインストールについて




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

LinuxデスクトップのKDEのQtなんかのTrollTechをNokiaが買収!って、KDEは?

2008-01-29 13:26:23 | Weblog

ここのニュース
Nokia、TrollTechをTOBで買収へ
http://www.itmedia.co.jp/news/articles/0801/28/news096.html

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


フィンランドの携帯電話メーカーNokiaは1月28日、ソフト開発プラットフォームを手掛けるノルウェーのTrollTechをTOB(公開株式買い付け)で買収することで合意したと発表した。

 TrollTechはクロスプラットフォームのGUIツールキット「Qt」およびLinuxベースのアプリケーションプラットフォーム「Qtopia」を開発している。


って、あのLinuxデスクトップのKDEのもとになってるQtライブラリ出してる、TrollTechだよねえ・・
KDEとか、どーなっちゃうの(@_@!)

・・・と思ったら・・


 NokiaはTrollTechの製品の開発とサポートを継続し、今後も引き続きTrollTech技術を商用ライセンスとオープンソースライセンスの両方でライセンス供与する計画だ。

ま、大丈夫そうだ(^^;)

P.S うん、じゃあ、Nokiaは「Qtopia」、androidには、参加しないのかしら・・どーなんだろう??


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

グーグルケータイOS、androidのお勉強(5)-画面を作る

2008-01-29 11:28:39 | ケータイ

 わすれかけていた、シリーズ「グーグルケータイOS、androidのお勉強」、久々にやりたいと思います。

 前回までは、こんなかんじ

1回:概要
2回:サンプルダウンロード
3回:サンプルプロジェクト作成
4回:DB部分

で、今回は画面なのですが、手元にコンパイル、実行できる環境がないので、説明と完成品(これはサンプルの中にある。Notepadv1Solutionがそれ)




■画面の作り方(1)=画面レイアウトのXMLファイルを作成する

 これ以外の作成方法もあるかもしれません。しかし、今回は、説明に書かれている方法に沿って書きます。
 Step4と5のところです。

 まず、画面レイアウトのXMLファイルを作成します。
 これは、フォルダ”アプレットのフォルダ/res/layout”の下にあります。
 サンプルの場合、アプレットがNotepadv1なので、Notepadv1/res/layout/notepad_list.xmlがそれに相当します。なお、このファイル名notepad_listは、R.javaのlayoutクラス内で宣言され、Notepadv1クラスのonCreateのsetContentViewでセットされます。
 で、その中身は、こんなかんじ

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

  <ListView id="@id/android:list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
  <TextView id="@id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_notes"/>

</LinearLayout>

(上記< > ¥は、本当は半角 チュートリアルのStep4から引用)

 LinearLayoutで全体を定義、その中にListView(リスト)と、TextView(テキスト入力箇所)があることを宣言しています。ListViewでidをandroid:listとしていますが、このandroid:listで、リストのアダプタを使うよと分かるようです。なお、TextViewで初期値をandroid:text="@string/no_notes"/としていますが、このno_notesとか、文字列の宣言は、アプレットのフォルダ/res/valuesのstrings.xml、つまりNotepadv1/res/values/strings.xmlに宣言してあります。
 あと、位置はwrap_contentって書くと、適当にやってくれる??




■画面の作り方(2)= リストの行のXMLファイルを作成する

 で、テキストの初期値はいいのですが、リストの初期値は?ということになりますと、フォルダ”アプレットのフォルダ/res/layout”の下にある、notes_row.xmlに記述します。
 サンプルの場合、アプレットがNotepadv1なので、Notepadv1/res/layout/notes_row.xmlを作成します。
(完成品のNotepadv1Solutionには、すでにあります)。
 そして、R.javaのlayoutクラスに

public static final int notes_row=0x7f030001;

 と追加して、onCreateや、追加されたとき(onOptionsItemSelectedのIDがINSERT_IDなど)で呼ぶのですが、それはStep8以降の話なので、今回は置いておいて、まず、その作成するnotes_row.xmlの中身を書きます。こんなかんじ
<?xml version="1.0" encoding="utf-8"?>
<TextView id="@+id/text1"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

(上記< > ¥は、本当は半角 チュートリアルのStep5から引用)
行1行分はTextViewってことで、これしかないんですけど、そこで書いてある、@idの前の+は、その名前のIDがすでにあったら、テキトーに新しい名前を振って、追加してくれるみたい。




ってことで、画面はここまで。次はStep6



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

8,000万円のセレブ向けパソコン登場?

2008-01-28 23:31:00 | Weblog

ここの痛いニュース
“これが格差社会か” 8,000万円のセレブ向けパソコン登場
http://blog.livedoor.jp/dqnplus/archives/1084540.html


8000万円の総プラチナ+ダイアモンドのケースの中に入ったパソコン
(プラチナでなく、金だと6000万)だそうなんだけど、

こーなってくると、プラチナの箱に、パソコン機能がおまけで付いてくるっていうほうが正しい気が・・・買う人も箱のほうがほしいんでなくて?
(きっとパソコン機能は、警報機かなんかのプログラムを組んでおいて(+センサーを買い足して)、そのために使われそうな気が・・)


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

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

2008-01-28 18:20:21 | SugarCRM

 シリーズSugarCRM 4.5のカスタマイズのまとめ、5回目の今回は、SugarBeanを継承”する”場合についての「表示関連」です。

SugarCRMをカスタマイズするには、まあ、スタジオで、タブを消したり、ラベルの文字を変更したり、項目追加したりすることはできますが、大きく変更する場合は、モジュールの追加ということになります。
 このとき、モジュールには2種類あり、新規テーブルを作成し、追加操作などをしない場合のSugarBeanを継承”しない”場合と、テーブルを作っていろいろ操作するSugarBeanを継承”する”場合があります。
 そして、SugarBeanを継承”する”場合は、
(1)SugarBeanを継承しない場合にも必要なファイルたち
(2)データベース操作関連
    モジュール名.php,vardefs.php,Save.php,Delete.phpなど
(3)表示関連
    (3-1)一覧表示(ListView)と、検索
    (3-2)詳細画面
    (3-3)編集画面
(4)他のと関連
    (4-1)サブパネル
    (4-2)ポップアップ
    (4-3)ダッシュレットなど、


とファイルが必要なのですが、いままでで(2)までやったので、今日は(3)です。




■表示方法に3種類

 SugarBeanを継承した場合、表示方法に3種類あります。
 (3-1)一覧表示(ListView)と、検索
 (3-2)詳細画面
 (3-3)編集画面
です。まず、タブをクリックされると、Sugarの下のindex.phpが呼び出されます。このとき、引数のmoduleはクリックしたモジュール名、actionは、indexだと思います。

 そうすると、メイン画面には、modules/モジュール名/index.phpが表示されるわけですが、このindex.php,継承されないときは、好きに書いてよいのですが、継承する場合は、ここでListView.phpが呼び出され、一覧&検索画面が表示されます(ListView.phpから検索画面のSerachFormを読んでいます)。

 詳細画面、編集画面はそれぞれ、index.phpの引数moduleがモジュール名、actionがDetailView(詳細画面の場合)またはEditView(編集画面の場合)を指定されて呼び出されます。




■一覧表示(ListView)と、検索
 バージョンによって、違うのですが、4.5の場合は、モジュールの下のうち、
    ListView.php
    ListView.html
    metadata/listviewdefs.php
 が関連します。またListView.phpで、モジュール名.php(SugarBeanを継承しているクラス)が呼び出され、さらに検索用として、
    metadata/SearchFields.php
が関係します。SearchFields.phpが検索項目の指定で、listviewdefs.phpが一覧表示項目だった気がします。なお、field_arrays.phpも関係していた気がします。

 そして、上記のファイルから、Sugarのフォルダ/include/ListViewの下にあるPHPプログラムが呼び出されます(ここにあるのは全モジュール共通)とくにそこのListViewData.phpがデータ読み込み口です。

 一方、検索に関しては、Sugarのフォルダ/include/SerchFormフォルダの下の、SearchForm.phpが実行します。generateSearchWhereでwhere句を作ってます。そことSearchFields.phpを見比べてもらうと、SearchFields.phpの書き方が分かります。




■詳細画面、編集画面
  詳細画面は、
    DetailView.php
    DetailView.html
  編集画面は、
    EditView.php
    EditView.html
PHPのほうで、処理して値を作り、htmlのほうで表示する仕組みになっています。
既存のソースを見れば、やり方はわかると思います。




ってなかんじです。次回はそれ以外のモノについて、見ていきます。



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

東京大学情報科学科のC言語入門の話、意図的に難しく書いてない?。。。

2008-01-28 13:50:06 | Weblog

ここ
C言語入門、東京大学情報科学科の場合
http://slashdot.jp/articles/08/01/25/0318220.shtml

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


東京大学理学部情報科学科の学部2年生向けのアルゴリズムとデータ構造演習内でのC言語入門なのだが、 C入門第1回では、シェルを実装、データを圧縮・解凍するプログラムを実装、スパムフィルタを実装というお題目が並んでいる。


って、意図的に、難しそうに書いていない?

実際には

C入門第1回
http://hagi.is.s.u-tokyo.ac.jp/ade/pre/1.html


 PDFの資料3ページをみると、オプション課題+advancedコース選抜課題を提出したすべての学生が、advancedコースの受講を認めるになっていません?それも、「すべての学生」と書いておきながら計3人(^^;)(つまり、3人以上、全課題を提出できないだろうってこと?)

その「advancedコース選抜課題」を見てみましょう(以下斜体は上記PDF26ページより引用)


【付録】「C入門」advanced 選抜課題

以下の条件を満たす2分木を実装してください
* 文字列を格納できること
- 入力方法は任意
- 格納される文字列の最大長を仮定してはいけない
* 削除機能を持つこと
* 格納されているデータをアルファベット順にソートして表示する機能を持つこと
- もちろん木のノードを通りがけ順に読み出せば自動的にソートされ
ているはずである
* ファイルにセーブする機能を持つこと
- ファイルの構造は任意
- 内容のみでなく構造も保存すること
- 保存したファイルを読み込んで木を再構成する機能を持つこと
* C言語で書くこと(C++は禁止)


あ、これいいな。。今度使わせてもらおうかな。演習問題に(^^;)
これなら、企業なんかでも普通にC言語の演習問題だと思う。




で、その上で、advanced課題になるんだけど、そこに出ている


課題1-A:シェルを実装せよ。


は、おもしろそうですな。

下の参考書に、このヒントがあるのかなと思い、今日、じゅんくどう(池袋)で、そこに出ている詳解UNIXプログラミング 新装版をみたら、なんか、ジョブ制御とかシグナル部分があって、きょうみしんしん(これがヒントっぽいね ^^;)。
 ふつうのLinuxプログラミングも、まだ見てないけど、おもしろいのかしら。。。

 ちなみに、どーいう人がこういう問題をやるのか?という質問がスラッシュドットにあったけど、多分、大学院進学希望者だとおもいます。
 今、ここまでやっておけば、3年で、形式言語、自然言語を一通りやって、4年でコンパイラの実装なり、自然言語処理なりを卒論で選べば、まあ、ひととおり、その分野に関しては、できるからじゃないかな。

 実務では、ウィリアムのいたずらの経験からだと、「advanced 選抜課題」が解ければ十分だと思います。
 (ワーカーさんでも、B問題は解けないとまずいぞ ^^;)




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

「EDINET」(エディネット)になんか修正かけるの?

2008-01-27 23:09:26 | Weblog

ここのニュース
<金融庁>「株大量取得」虚偽報告に訂正命令
http://headlines.yahoo.co.jp/hl?a=20080127-00000074-mai-bus_all

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


 川崎市の会社が「トヨタ自動車などの株式を51%取得した」とする大量保有報告書を関東財務局に提出した問題で、金融庁は27日、報告書を虚偽記載と判断し、金融商品取引法に基づき訂正報告書を28日までに提出するようこの会社に命じた。今後、刑事告発も検討する。 

 虚偽の報告をしたのは「テラメント株式会社」。25日午後4時10分ごろ、トヨタやNTTなど6社の株式のそれぞれ51%を、総額約20兆円で取得したとの報告書6通を提出。金融庁が運営するサイト「EDINET」(エディネット)でそのまま公表された。


ま、今回の場合、だーれも信じてないだろうけどね(^^)

で、問題なのはここの箇所


再発防止策も検討する。


って、EDINETになんか修正をかけるのかしら?

どーやって?
取得方法を明記させ、証券会社だったら、確認するとか、
相対(あいたい)なら、相手に確認取るとか・・・?

なんか、大変そうな気が・・




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

ドコモからYouTube、今発表したのは、やっぱ1月28日のauの大発表のため?

2008-01-27 11:36:34 | Weblog

ドコモからYouTubeが見れるとかの発表がありましたよね。
それについて、GIGAZINEのここの記事
NTTドコモとGoogleの提携発表から一夜、auの反応を電話で聞いてみた
http://gigazine.net/index.php?/news/comments/20080125_au_google/

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


昨日NTTドコモとGoogleが検索サービスや連動広告の導入、携帯電話向けプラットフォーム「Android」を採用した携帯電話の商用化などに関する提携発表を行いましたが、NTTドコモよりも先にGoogleと提携しているauに、今後の展開について電話で問い合わせてみました。


ってことで、KDDIに聞いた内容が記事になっているんだけど、
まあ、その内容はさておき、その記事の最後のほうで

1月28日(月)にauに関する大発表があるとのことですが、それを含めて今後のauの動向が気になるところです。


といっている。やっぱ、1月28日のauの大発表を意識してなんですかね?

P.S ドコモ、「Android」を採用した携帯電話の商用化などに関する提携発表なんてしてたんですか?YouTubeより、そっちのほうが話題!って、あ、そうだあ、androidのシリーズ、途中でしたね(^^;)


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

C、C++、Lisp、Adaが本格的な言語で、Javaがお手軽な言語?

2008-01-26 11:05:10 | Weblog

せんせー、しつもんです。COBOLはどっちなんですか??

ここの記事
お手軽プログラミング言語は教育によくない
http://slashdot.jp/articles/08/01/25/1229233.shtml

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


ニューヨーク大学(NYU)の名誉教授で、GNU Ada95コンパイラ(GNAT)の開発者として知られるEdmond Schonberg氏とRobert B.K. Dewar氏が、NYUを始めとする最近のアメリカの大学におけるプログラミングの授業のあり方に苦言を呈して話題になっている。「計算機科学教育: 明日のソフトウェアエンジニアはどこに?」と題した彼らの論説では、最近の大学の授業ではCやC++、Lisp、(そしてもちろん)Adaと言った本格的な言語、数学やアルゴリズム、ハードウェアとの密接な関わり方といった難解なテーマを教えず、Javaのような簡単で人気が高く、近年減少気味の受講者数を増やせそうなお手軽な言語とカリキュラムしか教えなくなっていると主張。このままでは海外の安価なアウトソース先にたやすく置き換えられてしまう程度の能力しかない「プロフェッショナル」しか育てられなくなるだろう、と警鐘を鳴らしている。


C++が本格的で、Javaがお手軽?基準がよくわからん(^^;)

でも、現場では、いま、1つの言語を知っていれば仕事ができるということはまずなく
(クライアントはJavaScriptがデフォルト。サーバーは、当然、PerlかPHPかJavaで違う言語)
それを教えている期間もなく(だいたい、1000万以下、500万程度の仕事がおおく、マネージャーとプログラマ1人つけても、1人月80万だと、3か月、プログラマ2人だと、2か月。なので、言語を教えている期間はないのよ)・・・

 っていう状態なので、大学は特定の言語だけでなく、言語一般から、特定の言語に落とし込むような勉強方法にしておいてくれるとうれしい。
 なので、形式言語論から、JavaでもC++でもいいから、具体例として教えてあげてくれると、現場は楽なんだけど・・・今、そっから教えないといけないもんで・・

P.S LispよりもML教えたほうがいいと思うんだけど・・
  (念のため注:MLはメーリングリストでは”ない”)


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

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

2008-01-25 18:26:22 | SugarCRM

 シリーズSugarCRM 4.5のカスタマイズのまとめ4回目の今回は、SugarBeanを継承”する”場合についてです。

 解消する場合、バージョンによって、いろいろファイル構成が違うのですが、だいたい、こんなふうに分ついできると思います。

(1)SugarBeanを継承しない場合にも必要なファイルたち
(2)データベース操作関連
    モジュール名.php,vardefs.php,Save.php,Delete.phpなど
(3)表示関連
    (3-1)一覧表示(ListView)と、検索
    (3-2)詳細画面
    (3-3)編集画面
(4)他のと関連
    (4-1)サブパネル
    (4-2)ポップアップ
    (4-3)ダッシュレットなど、

(1)については、「SugarBeanを継承しない」場合で説明したので省略します。
今日は(2)について




■データベース操作関連

 データベースを作成し、編集、追加、削除(フラグを上げる)処理をするのは、モジュールのフォルダの中にある以下のファイルです。
    モジュール名.php
    vardefs.php
    Save.php
    Delete.php
 このうち、「モジュール名.php」というのは、モジュールごとにファイル名が違います。
 Callsモジュールでは、Call.phpがそれにあたります。




■モジュール名.php
 このモジュール名.phpファイルは、SugarBeanを継承します(たとえば、

   class Call extends SugarBean {

の形)

 そして、ここでは、モジュールの項目がずーっとかかれます(vardefsでも項目を書きますが、それに対応した項目名がずらっと書かれる)。
 そのあと、プログラムを書くのですが、それは他のクラスを参考に書いてください。




■vardef.php

 DBの項目名、インデックス、他モジュールとの関係が記述されます。

 記述の仕方に関しては、既存のモジュールを参考にするか、または、
Vardefs.pdf
http://www.sugarforge.org/frs/download.php/1283/Vardefs.pdf

を参照のこと。

 ここに記述されたとおりにDBを作成します。

 ただし、リレーションに関しては、1対多のものはここにかかれますが、多対多に関しては、
ここでなく、metadat(モジュールの下にあるメタデータではなく、Modulesと同レベルにあるメタデータ)の
下にかかれます。




■save.php,Delete.pho

 追加や保存、削除のときに使われます。
 saveでは、save,Deleteではmark_deletedを行えばいいので、どっかほかのモジュールから、ぱちってきても、いいかもしれません。




 と、DB周りに関してはこんな感じ。
 次回は問題の画面です。


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