地球温暖化の原因が、人間の活動(経済活動)に伴う二酸化炭素排出量の増加であることがレポートされています。
当然、コンピュータも電気で動いているから、何らかの形で資源を使って動作しているわけです。
じゃあ、プログラムを最適化して地球温暖化を防ぐことができるのか?
結論としては、十分に可能であると言える。
要するに、CPUが実行する命令を最低限まで最適化すれば、消費電力は最低になるはずである。
下記のことに注意して開発を行うことができれば良いのだろうから、提案してみる。
・ループを減らせ
・配列などは最低限に
・マシン語に翻訳された後どうなるかを把握しろ
…もっとあるのかなぁ。
っちゅーか、これってそのままソフトウェアの高速化とイコールのような気がするんだけど。
2007年2月27日火曜日
2007年2月9日金曜日
デスクトップの呪縛を解き放つ
みなさんはおそらくWindowsやMacOSXなどの、いわゆる「OS」を使ってパソコンを操作していると思います。
そしてログインしたときに一番最初に現れるのは、「デスクトップ」と呼ばれるもの。
しかし、考えてみたら不思議だとは思いませんか?
我々の生活を考えたら、机の上で完結する作業って思いのほか少ないんじゃないでしょうか?
机の上に引き出しがたくさんあって、それらが階層化されている…。
そんなメタファーからデスクトップができたと思います。
ここで思い切ってOSのデスクトップを、より大きな概念に変える提案をしてみます。
・まずはデスクトップではなくて「パーソナルスペース」
仮想空間なんだから、どこまで小さくても、どこまで大きくてもいいじゃないですか?
人によっては机、またある人は家、もしかしたら国家がパーソナルスペースかもしれません!!
・コンピュータのネットワークの表現方法
ネットワークに繋がる互いのパーソナルスペースの間に「ゲート」を設けて、そこで認証してしまうのはどうでしょう?
隣のコンピュータは隣のパーソナルスペース、そしてもしかしたら他のパーソナルスペースを仲介する/しないなどもOSで制御すればいいのかもしれません。
・2Dの俯瞰した視点でのデータ管理
GoogleEarthのように、パーソナルスペースを鳥のように移動してデータを探せたらどうでしょう?
ファイル名やフォルダ名を検索するために、今は「名前」が必要です。
でも、「確かあの場所に仕舞ったのに」という地理情報での検索手法も加えたら、より探しやすくなるかもしれませんよ。
…
ここで羅列してみましたが、これでOSのインターフェースに必要な情報が定義できそうです。
・データの管理、検索手法の提供
・アプリケーションの実行環境(ハードウェアを意識させない)
・ネットワーク機能(難しいレイヤーのことを意識させない)
どうでしょう?
一緒に作りますか?
そしてログインしたときに一番最初に現れるのは、「デスクトップ」と呼ばれるもの。
しかし、考えてみたら不思議だとは思いませんか?
我々の生活を考えたら、机の上で完結する作業って思いのほか少ないんじゃないでしょうか?
机の上に引き出しがたくさんあって、それらが階層化されている…。
そんなメタファーからデスクトップができたと思います。
ここで思い切ってOSのデスクトップを、より大きな概念に変える提案をしてみます。
・まずはデスクトップではなくて「パーソナルスペース」
仮想空間なんだから、どこまで小さくても、どこまで大きくてもいいじゃないですか?
人によっては机、またある人は家、もしかしたら国家がパーソナルスペースかもしれません!!
・コンピュータのネットワークの表現方法
ネットワークに繋がる互いのパーソナルスペースの間に「ゲート」を設けて、そこで認証してしまうのはどうでしょう?
隣のコンピュータは隣のパーソナルスペース、そしてもしかしたら他のパーソナルスペースを仲介する/しないなどもOSで制御すればいいのかもしれません。
・2Dの俯瞰した視点でのデータ管理
GoogleEarthのように、パーソナルスペースを鳥のように移動してデータを探せたらどうでしょう?
ファイル名やフォルダ名を検索するために、今は「名前」が必要です。
でも、「確かあの場所に仕舞ったのに」という地理情報での検索手法も加えたら、より探しやすくなるかもしれませんよ。
…
ここで羅列してみましたが、これでOSのインターフェースに必要な情報が定義できそうです。
・データの管理、検索手法の提供
・アプリケーションの実行環境(ハードウェアを意識させない)
・ネットワーク機能(難しいレイヤーのことを意識させない)
どうでしょう?
一緒に作りますか?
2007年1月24日水曜日
Postfixを改造する(main.cfへのパラメータの追加)
Postfixに機能を追加する場合に、やはりmain.cfなどの設定ファイルでコントロールしたいじゃない?
まずは、main.cfへのパラメータ追加方法を教えましょう。
サンプルに、今回はdomainkeysとsmtpd_smime_signのふたつの値(デフォルトはyes)を追加してみましょう。
1. "src/global/mail_params.h"への追加
適当なところ(ifdefで囲まれていないことに注意)、下記の記述を追記。
------------------------------------------------------------------
/*
* Additional Custom Parameter
*/
#define VAR_DOMAINKEYS "domainkeys"
#define DEF_DOMAINKEYS "yes"
extern char *var_domainkeys;
#define VAR_SMTPD_SMIME_SIGN "smtpd_smime_sign"
#define DEF_SMTPD_SMIME_SIGN "yes"
extern char *var_smtpd_smime_sign;
------------------------------------------------------------------
2. "src/global/mail_params.c"の"mail_params_init関数へ下記の記述を追加
頭の方の変数を宣言している辺りに。
----------------------------------------
char *var_domainkeys;
char *var_smtpd_smime_sign;
----------------------------------------
・追加した項目の値が文字列の場合、配列other_str_defaultsへ追加
(配列要素の"0,"のみの列の前に挿入)
-----------------------------------------------------------------------------------------------
VAR_DOMAINKEYS, DEF_DOMAINKEYS, &var_domainkeys, 1, 0,
VAR_SMTPD_SMIME_SIGN, DEF_SMTPD_SMIME_SIGN, &var_smtpd_smime_sign, 1, 0,
-----------------------------------------------------------------------------------------------
3. コンパイルしてpostconfコマンドを実行します。
追加した項目と値が表示されたらOKです。
続きはそのうち。
まずは、main.cfへのパラメータ追加方法を教えましょう。
サンプルに、今回はdomainkeysとsmtpd_smime_signのふたつの値(デフォルトはyes)を追加してみましょう。
1. "src/global/mail_params.h"への追加
適当なところ(ifdefで囲まれていないことに注意)、下記の記述を追記。
------------------------------------------------------------------
/*
* Additional Custom Parameter
*/
#define VAR_DOMAINKEYS "domainkeys"
#define DEF_DOMAINKEYS "yes"
extern char *var_domainkeys;
#define VAR_SMTPD_SMIME_SIGN "smtpd_smime_sign"
#define DEF_SMTPD_SMIME_SIGN "yes"
extern char *var_smtpd_smime_sign;
------------------------------------------------------------------
2. "src/global/mail_params.c"の"mail_params_init関数へ下記の記述を追加
頭の方の変数を宣言している辺りに。
----------------------------------------
char *var_domainkeys;
char *var_smtpd_smime_sign;
----------------------------------------
・追加した項目の値が文字列の場合、配列other_str_defaultsへ追加
(配列要素の"0,"のみの列の前に挿入)
-----------------------------------------------------------------------------------------------
VAR_DOMAINKEYS, DEF_DOMAINKEYS, &var_domainkeys, 1, 0,
VAR_SMTPD_SMIME_SIGN, DEF_SMTPD_SMIME_SIGN, &var_smtpd_smime_sign, 1, 0,
-----------------------------------------------------------------------------------------------
3. コンパイルしてpostconfコマンドを実行します。
追加した項目と値が表示されたらOKです。
続きはそのうち。
2006年12月26日火曜日
物事をバージョンで考えるためのキーワード2
昨日の第一回未来会議でのお話し合いでわかったこと。
参加者:kabayan、ruby、MIYOSHI、俺(敬称略)
※随時追加。いい加減な議事録w
・バージョンがパラダイムか?
どうも違うようだ。
事象が上級概念になった場合、それがパラダイムの変化ではないか?
バージョンはもっと適切な言葉があるはず。
#プチパラダイム?
・共時性
あるスペシャリストが違う表現で同じことを言う話。
脳を共有しているような感覚。
・インターネットの機能?構造?はまるで脳の働きじゃん
ネットワーク上のノードがシナプス。
これらが反応してネットワークを情報として駆け巡る。
反応は観測できても、その本質はデータからは掴めない?
・文明?文化?の興り
インターネット上では1998年ごろ文明が起こっているようだ。(詳細はまた調べる)
そのころのネットがバージョン1。
文明(安全なエリア) ←(繋がりが無い)→ 辺境(安全じゃないエリア、アングラ)
今はバージョン2。
複数の文明が興って、その間のバーバリアンとの接触が増えた。
追いはぎとか強盗みたいな。
バージョン3は信頼性。
参加者:kabayan、ruby、MIYOSHI、俺(敬称略)
※随時追加。いい加減な議事録w
・バージョンがパラダイムか?
どうも違うようだ。
事象が上級概念になった場合、それがパラダイムの変化ではないか?
バージョンはもっと適切な言葉があるはず。
#プチパラダイム?
・共時性
あるスペシャリストが違う表現で同じことを言う話。
脳を共有しているような感覚。
・インターネットの機能?構造?はまるで脳の働きじゃん
ネットワーク上のノードがシナプス。
これらが反応してネットワークを情報として駆け巡る。
反応は観測できても、その本質はデータからは掴めない?
・文明?文化?の興り
インターネット上では1998年ごろ文明が起こっているようだ。(詳細はまた調べる)
そのころのネットがバージョン1。
文明(安全なエリア) ←(繋がりが無い)→ 辺境(安全じゃないエリア、アングラ)
今はバージョン2。
複数の文明が興って、その間のバーバリアンとの接触が増えた。
追いはぎとか強盗みたいな。
バージョン3は信頼性。
2006年12月22日金曜日
物事をバージョンで考えるためのキーワード
あらゆる物事をパラダイムで考えると、それが4つのバージョンで分類できることに気がつきました。
それぞれのバージョンと、それに関するキーワードをメモ的に書き出します。
・バージョン1
集中、単一、始まり、プロトタイプ
・バージョン2
離散、複数、分散、プラットフォーム
・バージョン3
さらなる分散、信頼、カタログ化、部品化
・バージョン4
完成、終点、死、最後、同じ物事の次のレベルのバージョン1
(例)村
・バージョン1
家族
・バージョン2
親戚
・バージョン3
村(隣組)
・バージョン4
都市バージョン1
そして、今の時点でバージョン4に到達している物事はまだ存在しない(存在してはいけない?)と考えられます。
それぞれのバージョンと、それに関するキーワードをメモ的に書き出します。
・バージョン1
集中、単一、始まり、プロトタイプ
・バージョン2
離散、複数、分散、プラットフォーム
・バージョン3
さらなる分散、信頼、カタログ化、部品化
・バージョン4
完成、終点、死、最後、同じ物事の次のレベルのバージョン1
(例)村
・バージョン1
家族
・バージョン2
親戚
・バージョン3
村(隣組)
・バージョン4
都市バージョン1
そして、今の時点でバージョン4に到達している物事はまだ存在しない(存在してはいけない?)と考えられます。
CSMTP(暗号化SMTP)の仕様
電子メールを送信するSMTPには、プライバシーを守るという観点からの対策が非常に手薄です。
ここで、公開鍵暗号を利用して盗聴を防ぎ、送信者を偽ることができないSMTPの仕組みを考えてみたいと思います。
まず、公開鍵暗号を用いた暗号化の問題である「公開鍵交換の方法」の役割を、SMTPサーバに持たせてみたいと思います。
少なくとも、下記の条件が必要となるでしょう。
・SMTPサーバのユーザでなければ公開鍵が登録できない
・登録されたユーザの公開鍵に対し、SMTPサーバが電子署名を行い自ホストのユーザであることを証明
鍵の交換は、SMTPセッションが確立されたときに行うべきです。
そこで送信者が送信に使用するSMTPサーバが、セッション中に受信者の公開鍵を相手のSMTPサーバへリクエストして取得します。
その鍵を用いて電子メールを暗号化して、盗聴を防ぐ仕組みとするわけです。
対応したクライアントも考えなくてはなりませんので、次回はその辺のお話を。
ここで、公開鍵暗号を利用して盗聴を防ぎ、送信者を偽ることができないSMTPの仕組みを考えてみたいと思います。
まず、公開鍵暗号を用いた暗号化の問題である「公開鍵交換の方法」の役割を、SMTPサーバに持たせてみたいと思います。
少なくとも、下記の条件が必要となるでしょう。
・SMTPサーバのユーザでなければ公開鍵が登録できない
・登録されたユーザの公開鍵に対し、SMTPサーバが電子署名を行い自ホストのユーザであることを証明
鍵の交換は、SMTPセッションが確立されたときに行うべきです。
そこで送信者が送信に使用するSMTPサーバが、セッション中に受信者の公開鍵を相手のSMTPサーバへリクエストして取得します。
その鍵を用いて電子メールを暗号化して、盗聴を防ぐ仕組みとするわけです。
対応したクライアントも考えなくてはなりませんので、次回はその辺のお話を。
登録:
投稿 (Atom)