いつの間にかかれこれ一ヶ月間 uploadしませんでした

このブログ 気がつけば一ヶ月間uploadしていませんでした この間に、島原でのライブ、インド Chennaiでのライブ、そして先日の TAVI関連学会である J-TVTなど色々とありました

何しろ暑くて暑くて とても気力が追いつかなかったのです それと何を思い立ったか、急に高等数学の勉強を始めたのです 自分自身の高校時代、理科系の数学は、数IA, IBそして数IIBだったと思うのです いわゆるゆとり世代のはるか前で、厳しく受験勉強を迫られていた時代です

数学の教育課程の中には、もちろん線形代数、三角関数、複素数などはありますし、ベクトルもあったと思います しかし中心は微積分だったと思います 決定的に欠けていたのは行列なのです 考えてみれば行列の学習を全くしたことが無いのです なんで今さら行列を? と思われるかも知れませんが、行列の考えとか、計算とかは現代世界で必須のものなのです 気がついてみれば僕には行列を理解していない、という根本的欠陥があったのです

それで Amazonで色々探し、一冊200円程度の中古の「わかりやすい」シリーズの数学本を購入して勉強を始めました 非常に平易に書かれていて僕のような老境の者にも理解できます 理解はできるのですがすぐに忘れていくのです 今も折角覚えた行列の掛け算のやり方忘れているのです あああああ まあ繰り返して学習していくしかありませんね

こんなことが医療と何の関係があるの? と言われる方も多いでしょう でもね、何処で何が関係しているのかなんて分からないのですよ 何より知的欲求が僕にそれを強いるのです それだけで十分でしょう もっとも僕には下心があります それはこれらの高等数学の勉強は自分のプログラミング・スキルの向上に絶対に役立つだろう、という裏付けがあるのです 現実に今話題の、例の碁の世界チャンピオンを破った Googleの人工知能、あれの理解には絶対に行列が必要なのです

そんなこんなで、ここ数日間 再びプログラミングに向かっているのです 色々と夢の中でも考えてきました html文書をどのようにコンポーネント化できるか? という命題です もちろんこれには Javascript frameworkである Reactや、AngularJSなどたくさんあります しかし、それらをゼロから勉強するのはとても困難です 少なくとも僕には困難です せいぜい jQueryぐらいです

そこで、PHPの classを用いて何とかできそうだ、という予想の下にやりました 何をしているか? と言えば 鎌倉ライブのプログラム作成および公開用のホームページ作成なのです これをReal Timeにon-lineでプログラムの更新ができるようにしたいのです しかも権限を持った人間は複数人が更新を可能とする、というシステムの構築です

まず行ったのは、プログラムの骨子作成なのです ここにはどうしても htmlという文章論理構造記述言語でしかあり得ません その第一版は以下のようなものです

<div class="container">
  <h1 class="text-center text-danger">EVTセッション第一日目 (12月17日[土曜日])</h1>
  <div class="row">
    <div class="col-lg-11">
      <div>
        <div  class="session_title">
          <form method="post" action="db_entry/evt/evt01.php">
            <button type="submit" class="session_title" name="sessionNo" value="1">
            <div>
              <div class="fleft"> 
                <?= _Q(mb_substr($rows[1]['begin'], 0, 5)); ?>
                -
                <?= date("H:i" , strtotime($rows[1]['begin']) + $rows[1]['duration']*60); ?>
              </div>
              <div class="fright">
                <?= _Q($rows[1]['sessionTitle']); ?>
              </div>
              <div class="fclear">Session Co-Sponsor:
                <?= _Q($rows[1]['cosponsor']); ?>
              </div>
              <div>Venue:
                <?= _Q($rows[1]['venue']); ?>
              </div>
            </div>
            </button>
          </form>
          <div  class="col-lg-10 session_sub">
            <div class="subsession">
              <form method="post" action="db_entry/evt/evt01.php">
                <button type="submit"  class="subsession_button" name="sessionNo" value="2">
                <div class="fleft"> 
                  <?= _Q(mb_substr($rows[2]['begin'], 0, 5)); ?>
                  -
                  <?= date("H:i" , strtotime($rows[2]['begin']) +$rows[2]['duration']*60); ?>
                </div>
                <div class="fright">Session Subtitle:
                  <?= _Q($rows[2]['sessionTitle']); ?>
                </div>
                <div class="fclear">Chair:
                  <?= _Q($rows[2]['chair']); ?>
                </div>
                <div>Moderator:
                  <?= _Q($rows[2]['moderator']); ?>
                </div>
                <div>In-Cathe Interpreter:
                  <?= _Q($rows[2]['interpreter']); ?>
                </div>
                </button>
              </form>

もちろん<?= _Q($rows[2][‘interpreter’]); ?>などというPHPのhtml植え込み書式を使用しています  _Q( )という関数は、htmlspecialcharacter( )関数のラッパーです

ここでの問題点は、似たようなコードが繰り返され、<div></div>タグが多用されているため、ぱっと見て構造(深さ)が分からない、という点です

これをもっとも必要な <div>タグでこの部分をくくり 例えば

<div class="Session">
 <div class="Subsession">
  <?php $sessio1->domOut(); ?>
 </div>
 <div class="Subsession">
  <?php $session2->domOut(); ?>
 </div>
</div>

という風にできれば文書の論理構造がより明確になります これをhtmlの中でどのように実現するか? 鍵は PHPの classです これまで僕は何万行も PHPを用いて Web programmingをしてきましたが、実は classを避けてきました これは変な話であり、C++を用いてプログラムする時には平気で classを用いてるいるにもかかわらずです

そこで classを勉強して以下のような姑息的プログラムを書きました まずクラスの定義です

<?php
class Session {
		private $value = '0';
		private $rows = array();
		public function __construct($rows, $value) {
			$this->setRows($rows);
			$this->setValue($value);
		}
		public function setRows($rows) {
			$this->rows = $rows;
		}
		public function setValue($value) {
			$this->value = (Int)($value);
		}

		public function domOut() {
			$n = $this->value;
			$row = $this->rows;
			echo '<form method="post" action="db_entry/evt/evt01.php">';
			echo '<button type="submit" class="session_title" name="sessionNo" value="'.$n.'">';
			echo '<div>';
			echo '<div class="fleft"> ';
			echo _Q(mb_substr($row[$n]['begin'], 0, 5));
			echo ' - ';
			echo date("H:i", strtotime($row[$n]['begin']) + $row[$n]['duration']*60);
			echo '</div>';
			echo '<div class="fright">';
			echo _Q($row[$n]['sessionTitle']);
			echo '</div>';
			echo '<div class="fclear">Session Co-Sponsor: ';
			echo _Q($row[$n]['cosponsor']);
			echo '</div>';
			echo '<div>Venue: ';
			echo _Q($row[$n]['venue']);
			echo '</div>';
			echo '</div>';
			echo '</button>';
			echo '</form>';
		}
	}
?>

そしてこれを実際に使用するには以下のようにします

投稿者: (KAMAKURA & SAPPORO)Dr_Radialist

Expert Interventional Cardiologist and Amateur Computer Programmer

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です