Jun 13, 2012

The essence of the teachings of the Buddha


The essence of the teachings of the Buddha

Happiness, Goodness, Life

(1) Better Goodness make more people happy.
(2) Sharing joy becomes doubled, Sharing grief becomes half.
(3) Each person's life may be different.

Religious Merit

(1) Noble Eightfold Path gives you Goodness without Suffering
(2) made Goodness without Suffering, view goodwill and pleasure in everything


four Buddhist virtues, Brahmavihara

(1) Kindness give people Joy and Fun
(2) Compassion erase Suffering of people by sympathy
(3) Empathetic Rejoice together the joy of people
(4) Equanimity contribute to people calmly

Noble Eight rght Pathes, to enlightenment

(1) view Looking at everything as they really are.
(2) emotion Joy, fun, thanks
(3) speech Talk honestly with kind words
(4) action Profession for the welfare of the people
(5) life Health-full, Love-full to people, family, wife, husband and oneself
(6) effort Fair play forward to higher targets
(7) mindfulness Occupy one's mind with the work to do now
(8) relaxation Always calm serene mood

Contribute without money

(1) Body Help troubled people
(2) Heart give Joy and Fun, erase Suffering of people
(3) Eye Always friendly eyes
(4) Face Always gentle smile
(5) Talk Warm words of sympathy
(6) Yield give way to vulnerables and esteemed
(7) Welcome treat and hospitality to person

Ten bad sins

(1) Killing Kill human, Recklessly kill creatures
(2) Thief Thief, unfairness
(3) Bad sex Affair, suffering wife, husband and family
(4) Lie Lie, Fool, Concealment of bad
(5) Duplicity be double‐tongued
(6) Abuse Foul language, abusive person, backbiting
(7) Twaddle Excessive talk, cheap flattery
(8) Greed greed, obsession, jealousy
(9) Anger Anger, fear, bitterness, hatred, bullying
(10) Wrong view stupid mistake, superstition

four and eight sufferings, want to escape

(1) Birth Beginning of pleasure and pain
(2) Old Ageing
(3) Disease Illness or injury
(4) Death Death
(5) Separation Separation of lovers
(6) Grudge Resentment, Anger, bitterness, hatred, jealousy
(7) Can't get can't obtain requested things
(8) survival instincts Hunger and thirst, others

by Room to study happiness(Only Japanese)
KOUSHIRYOKU Labo

Jun 11, 2012

PHPのMySQLライブラリーが改良されたので対応する(その2)


mysql_ から mysqli_ に変更するために、自分が利用している対象関数の仕様を確認します。

mysqli_ は、 オブジェクト指向型 と 手続き型 のインターフェースがありますが
今回は、オブジェクト指向型で統一しようと思います。

======================================================================
mysql_real_escape_string

[API比較]
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier = NULL ] )
mysqli::real_escape_string ( string $escapestr )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

mysql_real_escape_string($user)
---------------------------------------------
$mysqli->real_escape_string($user)

======================================================================
mysql_query

[API比較]

resource mysql_query ( string $query [, resource $link_identifier = NULL ] )
mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
$result = mysql_query($sql_query, $link);
---------------------------------------------
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$result = $mysqli->query($sql_query);
======================================================================
mysql_error

[API比較]

string mysql_error ([ resource $link_identifier = NULL ] )
string $mysqli->error;
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
echo mysql_errno($link)
---------------------------------------------
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
echo $mysqli->connect_error;
======================================================================
mysql_num_rows

[API比較]

int mysql_num_rows ( resource $result )
int $mysqli_stmt->num_rows;
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$result = mysql_query("SELECT * FROM table1", $link);
$num_rows = mysql_num_rows($result);
---------------------------------------------
$result = $mysqli->query($sql_query);
$num_rows = $result->num_rows;

======================================================================
mysql_fetch_assoc

[API比較]

array mysql_fetch_assoc ( resource $result )
array mysqli_result::fetch_assoc ( void )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$result = mysql_query($sql_query);
while ($row = mysql_fetch_assoc($result)) {
}
---------------------------------------------
$result = $mysqli->query($sql_query)
while ($row = $result->fetch_assoc()) {
}
======================================================================
mysql_data_seek

[API比較]

bool mysql_data_seek ( resource $result , int $row_number )
bool mysqli_result::data_seek ( int $offset )

----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$result = mysql_query('SELECT last_name, first_name FROM friends');
$row = mysql_fetch_assoc($result);
mysql_data_seek($result, $i);
---------------------------------------------
$result = $mysqli->query('SELECT last_name, first_name FROM friends');
$row = $result->fetch_assoc();
$result->data_seek(399);
======================================================================
mysql_free_result

[API比較]

bool mysql_free_result ( resource $result )
void mysqli_result::free_result ( void )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
mysql_free_result($result);
---------------------------------------------
$result = $mysqli->query('SELECT last_name, first_name FROM friends');
$result->free_result();

======================================================================
mysql_connect

[API比較]

resource mysql_connect ([ string $server = ini_get("mysql.default_host")
  [, string $username = ini_get("mysql.default_user")
  [, string $password = ini_get("mysql.default_password")
  [, bool $new_link = false [, int $client_flags = 0 ]]]]] )
mysqli::__construct() ([ string $host = ini_get("mysqli.default_host")
  [, string $username = ini_get("mysqli.default_user")
  [, string $passwd = ini_get("mysqli.default_pw")
  [, string $dbname = ""
  [, int $port = ini_get("mysqli.default_port")
  [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
---------------------------------------------
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

======================================================================
mysql_close

[API比較]

bool mysql_close ([ resource $link_identifier = NULL ] )
bool mysqli::close ( void )
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_close($link);
---------------------------------------------
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$mysqli->close();
======================================================================
mysql_select_db

[API比較]

bool mysql_select_db ( string $database_name [, resource $link_identifier = NULL ] )
bool mysqli::select_db ( string $dbname )

----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$db_selected = mysql_select_db('foo', $link);
---------------------------------------------
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$mysqli->select_db("world");
======================================================================
mysql_insert_id

[API比較]

int mysql_insert_id ([ resource $link_identifier = NULL ] )
mixed $mysqli->insert_id;
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

mysql_query("INSERT INTO mytable (product) values ('kossu')");
$id = mysql_insert_id();
---------------------------------------------
$mysqli->query("INSERT INTO mytable (product) values ('kossu')");
$id = $mysqli->insert_id;
======================================================================
mysql_affected_rows

[API比較]

mysql_affected_rows ([ resource $link_identifier = NULL ] )
int $mysqli->affected_rows;

----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());
---------------------------------------------
$mysqli->query("DELETE FROM Language WHERE Percentage < 50");
printf("Affected rows (DELETE): %d\n", $mysqli->affected_rows);

======================================================================
mysql_result

[API比較]

string mysql_result ( resource $result , int $row [, mixed $field = 0 ] )
(無し)
----------------------------------------------------------------------
[利用例比較](エラー処理は省略)

$result = mysql_query('SELECT name FROM work.employee');
echo mysql_result($result, 2);
---------------------------------------------
(無し)
======================================================================

PHPのMySQLライブラリーが改良されたので対応する(その1)


http://jp2.php.net/manual/ja/function.mysql-query.php
の mysql_query()関数のヘルプを見直ししたら
次のように書いてあった

<<< 引用開始
----------------------------------------------
mysql_query

(PHP 4, PHP 5)

mysql_query  MySQL クエリを送信する

代替策について

この拡張モジュールを使うことはおすすめできません。
MySQLi あるいは PDO_MySQL を使うべきです。
詳細な情報は MySQL: API の選択 や それに関連する FAQ を参照ください。
この関数の代替として、これらが使えます。

mysqli_query()
PDO::query()
----------------------------------------------
>>> 引用終了

で、サーバー会社(hostmonster, USA)に問い合わせしたら
mysql_query の代りに mysqli_query にするほうが好ましいと
英語で回答が来た。

で、自分のアプリがどんな MySQLライブラリ関数を利用しているか
まず調査することにした。

SSHで接続できるているので、次の(へたくそな)コマンドの反復で
調査ができた。

  grep mysql_ *.php */*.php
の結果で出てきた関数名(たとえば mysql_query)を
  sed 's/mysql_query//'
で、隠してしまい、さらに grep mysql_ で調べて
何も無くなるまで繰り返す。

最初は、
  grep mysql_ *.php */*.php
次は、
  grep mysql_ *.php */*.php | sed 's/mysql_real_escape_string//' | grep mysql_
その次は、
  ...

結果、次のようなべたでへたくそなコマンドになった。

grep mysql_ *.php */*.php
 | sed 's/mysql_real_escape_string//'
 | sed 's/mysql_fetch_assoc//'
 | sed 's/mysql_query//'
 | sed 's/mysql_error//'
 | sed 's/mysql_num_rows//'
 | sed 's/mysql_connect//'
 | sed 's/mysql_close//'
 | sed 's/mysql_select_db//'
 | sed 's/mysql_insert_id//'
 | sed 's/mysql_data_seek//'
 | sed 's/mysql_affected_rows//g'
 | sed 's/mysql_real_escape_string//g'
 | sed 's/mysql_result//g'
 | sed 's/mysql_free_result//'
 | grep mysql_

つまり、ここに出てきた mysql_ の関数を利用しているのである。

次の記事は、これらをどの新しい mysqli_ の関数にするかを調査することにします。

Jun 10, 2012

Nanospire, Inc とは

1. PESN News からチョイ訳

チョイ訳していると Nanospire, Inc を発見しました。

2. Nanospire, Inc とは 後半にチョイ訳ありです。

--------------------------------------
1. PESN News からチョイ訳
--------------------------------------

Why doesn't Utah media cover the latest cold fusion developments?
なぜ、ユタ州のメディアは、最新の常温核融合の開発をカバーしていない?(するべきだよ)

Pure Energy Systems News の Sterling D. Allan さんの記事

Since Andrea Rossi's press conference in Italy in January 2011 demonstrating a several kilowatt heat capacity of his E-Cat,
with several other companies also being in process of taking product to market,
not one Utah mainstream news outlet,
including newspaper or television website has given this any coverage.
Why?

E-Catの数キロワットの熱容量をデモした
2011年1月のイタリアのアンドレア・ロッシの記者会見以来、
他のいくつかの企業が、市場に製品を発表する過程にいながら、
ユタ州の主流のニュースアウトレットは一つもない、
新聞やテレビおウェブサイトは、これに一つもカバーしていない。
なぜですか?

The following is an email I sent to one of the Salt Lake Tribune staff.
He declines to respond on behalf of the paper because he's not administration.
Managing Editor, Tim Fitzpatrick, who covered cold fusion back in the day,
blew me off when I tried to talk to him yesterday.

以下は、私がソルトレイクトリビューンのスタッフのいずれかに送信した電子メールです。
彼は上級管理職ではないので新聞を代表した回答を拒否した。
この編集管理職は、ティムフィッツパトリックです。
彼はかつて常温核融合記事をカバーした。
私は昨日彼と話をしようとしたとき、彼は私からそそくさと逃げた。

...


以下、Sterling D. Allan さんが Tim Fitzpatrick さんに
送付した電子メールのテーマの抜粋訳

Exhibit 1

MIT の Mitch Swartz 教授の
常温核融合システムが今年一月から稼働中であること
彼が、NANOR社を興して、製品化をしていること。

Exhibit 2

NASAが常温核融合を認めたこと。

Exhibit 3

Italy(イタリア) の Bologna 市 の Leonardo Corporation 社 の Andrea Rossi さん の
E-CAT

Exhibit 4

Greece(ギリシア)の Defkalion 社

Exhibit 5

CA(カリフォルニァ州)の Berkeley 市の Brillouin Energy Corporation 社の
システムが
SRI (Stanford Research International) の評価試験を受けていること

Exhibit 6

BlackLight Power社のシステム

(ここまでは、私もよく知っている内容です。)
(ここから少し新しい情報ですから、少しだけ詳しく訳します)

Exhibit 7

Nanospire, Inc. of Maine claims to have refined a process involving cavitation
that produces copious amounts of energy.
They seem to think that the science of LENR can be understood in terms of cavitation.
They claim third-party testing from a couple of groups.
They say that cavitation will be to the 21st century what electricity has been to the past century,
and they are on the cusp of bringing it forward in some of the first commercial versions;
but eventually every industry will be impacted profoundly by the benefits
that cavitation can bring them,
everything from microsurgury to element creation, cheaply and cleanly.

メイン州のNanospire株式会社 は、キャビテーションを伴うプロセスを改良したと主張している。
キャビテーションは、エネルギーの多量を生成します。
彼らはLENRの科学がキャビテーションの観点から理解することができると考えているようだ。
彼らは、グループのカップルから、サードパーティ製のテストを主張している。
彼らは、電気が前世紀になしとげたように、キャビテーションが、21世紀になしとげると主張している。
そして、彼らは、最初の商用バージョンのいくつかを実現する最先端にいます。
しかし、
最終的には、キャビテーションがもたらす利益によって
すべての産業は深く影響されるはずです。
微小外科手術から要素の作成に至るまですべてで、安くきれいに。

キャビテーション : cavitation : 空洞現象


--------------------------------------
Nanospire, Inc とは
--------------------------------------

https://nanospireinc.com/Home_Page.php よりチョイ訳

NanoSpire, Inc. is an IP holding company founded in January 2002,
to commercialize a new generation of cavitation reentrant jet-based tools and processes.
NanoSpire provides the first machine tool capable of cutting,
drilling, welding, hammering, and annealing materials
only a few nanometers in size by harnessing cavitation microjets.
NanoSpire has developed the next generation of high-shear mixer based on its patented technology.
NanoSpire has also developed several advanced technologies for energy production.

Nanospire株式会社 は、 は、2002年1月に設立されたIP持株会社である
キャビテーション リエントラント ジェットベースのツールとプロセスの新世代を商業化する。
NanoSpireは、活用 キャビテーション マイクロジェット によって
サイズがわずか数ナノメートルの材料を
切削、掘削、溶接、ハンマ、及びアニーリング
することができる最初のマシンツールを提供する。
NanoSpireは、その特許技術に基づいて、高剪断ミキサーの次世代を開発しました。
NanoSpireはまた、エネルギー生産のためのいくつかの先進的な技術を開発しました。

https://nanospireinc.com/Technology___IP.html よりチョイ訳

TECHNOLOGY
A laser, ultrasound or other energy source is used to create small high-energy vapor bubbles through phase transition.
The collapse of cavitation bubbles in close proximity to a wall generate supersonic liquid microjets naturally pointed towards a wall or other restriction to the collapse of the bubble.
NanoSpire’s patented methods build on, but go beyond the energetic process seen in nature.
The size, strength and direction of cavitation reentrant microjets can be controlled by our patented methods to a very high degree of accuracy.
Cavitation microjets can travel at up to Mach 4 and are capable of drilling a hole as small as a few nanometers in a diamond.
Multiple controlled bubbles are also possible allowing lines to be machined as well as other form factors and machining applications.
Cavitation allows a high aspect ratio machining to be obtained and is very repeatable.

レーザー、超音波または他のエネルギー源は、相転移を介して小規模な高エネルギーの蒸気泡の作成に使用されます。
壁に近接してキャビテーション気泡の崩壊は自然にバブルの崩壊に壁や他の制限に向かっている超音速液体マイクロジェットを生成します。
NanoSpireの特許取得済みの方法は、自然界に見られるようなエネルギー プロセス上に構築されていますが、それを超えています。
大きさ、強さとキャビテーションリエントラントマイクロジェットの方向は非常に高い精度を当社の特許取得済みの方法で制御することができます。
キャビテーションマイクロジェットはマッハ4で移動し、ダイヤモンドの上に数ナノメートルほどの小さな穴をあけることができます。
複数の制御された気泡は、他のフォームファクタや加工のアプリケーションと同様に行列の加工ができるようにすることも可能です。
キャビテーションは、高アスペクト比加工が得られるようになり、非常に再現性があります。

上記HPに説明画像があり判りやすいです。

https://nanospireinc.com/NanoSpire_News.html よりチョイ訳

NanoSpire May Hold the Key to Low Energy Nuclear Reactions
NanoSpireは、低エネルギー核反応の鍵を握るだろう

http://www.powermanagementco.com/powernews/powernews-5-21-12/energynews.html

The Google of Nanotech Cracks Cold Fusion
ナノテクのGoogleは、常温核融合にかかわり出した。

http://jinnwe.com/quest.php?id=512

NanoSpire Inc, Cavitation Zero Point Energy to Produce Fusion and Transmutation in Water
NanoSpire株式会社、水の融合と核変換を生成するキャビテーション・ゼロ・ポイント・エネルギー

http://www.youtube.com/watch?v=HbOwMqyZbfc

Cavitation Competition to LENR?
キャビテーションがLENR競争に?

http://cleantechauthority.com/is-cavitation-the-competition-of-lenr/

MySQLの limit offset をより効果的に使う + 同点順位の求め方


MySQLのSELECT ステートメントでのLIMIT 節は
便利なので良く使っているが、
これは以外に性能を落とす原因となりうる。

ここでは、試験の得点成績の例の中で
同点順位の求め方を含めて
説明していく。

MySQLより引用
<<<<<
引数が 1 つの場合、その値は、戻り値として返す、
結果セットの冒頭からのレコード数を表す。

引数が 2 つの場合、最初の引数は戻り値として返す
最初のレコードまでのオフセットを表し、
2 つ目の引数は戻り値として返す最大レコード数を表す。

最初のレコードのオフセット値は 0(1 ではない)。
>>>>>

例えば、学校の生徒名簿があるとして
一年三組の成績10位-19位を求めるなら
SQL文は、

SELECT * FROM 生徒名簿 WHERE 学年 = 1 AND クラス = 3 ORDER BY 成績 LIMIT 9,10

である。

性能を落とす原因は、

- 最終結果セットを作る前の中間セットのレコードが大量である
  (クラスの人数が100万人とか、、、)
- 中間セットをORDER BYで並べ替えしている
  (成績順とか)

などである。

------------------------------------------------------

性能確保のためには、
中間セットを早い段階で
WHERE 節で絞り込むことが大切である

------------------------------------------------------

アイデア1 - 学年とクラス番号を組にした、インデックスを作る。

これは、簡単で極めて効果的である。

------------------------------------------------------

アイデア2 - 成績の順位をレコードに記す。

もし頻繁に成績を参照し(つまりLIMIT 節のSQLを使う頻度が高い)、
成績の更新頻度が稀ならば
成績の順位をレコードに記しておくことがよい。

レコードソート対象数(今回の例ならクラスの人数)が
100を超えたときに検討の価値有りと推測する。

そうすると、ソート対象レコードが極小になり時間節約、つまり、性能確保となる。

つまりこんなSQLになる

SELECT * FROM 生徒名簿 WHERE 学年 = 1 AND クラス = 3
 WHERE 10 <= クラス順位 AND クラス順位 <= 19 ORDER BY クラス順位

で、クラス順位をどのように成績でつけるかが問題である。

クラス順位をレコードに記す方法はいろいろあるだろうが、
ユーザ変数を使う方法が便利である。

SET @srank = 0 ; UPDATE 生徒名簿 SET クラス順位 = @srank := @srank + 1 WHERE 学年 = 1 AND クラス = 3 ORDER BY 成績 DESC

成績は同点の場合がありうるので、クラス順位にはクラス順位と同点順位がありうる。
同点順位をきちんとつけるには、頭をつかう必要がある。
次の例を参考にして欲しい。

SET @pre_point = 100, @rank = 1, @srank = 0;
 UPDATE 生徒名簿
 SET
   同点順位 =
     if(@pre_point = 成績,
        @rank,
        @rank := @srank + 1 + (@pre_point := 成績) * 0) ,
   クラス順位 = @srank := @srank + 1
 ORDER BY 成績 DESC, 生徒番号

--------------------------------------
頭をつかうところは、
   + (@pre_point := 成績) * 0)
の部分である
--------------------------------------