こっ こっ こっ これは素晴らしい

javascriptは関数型言語として捉えるとものすごく先進的な言語であるらしいのです もっとも ECMA Script 6 (ES6)あるいは  ECMAScript2015とも呼ばれるもの以降の話のようですが・・・

てなわけで少しだけ勉強しようと思っているのですが、何はともあれ javascript実行環境が無いと練習できません もちろんそのような意味では各種Browserには javascriptが内蔵されているのでそこで consoleを叩けば良いのですが、なかなか面倒ですよね

あるいは $node としてnode.jsを立ち上げその中で実行するのもありですが、これは文ごとでの実行となり今一つですよね

ところが VSCodeでは簡単に実行できることが分かりました もちろん node.jsがインストールされていないと駄目なのでしょうかね なかなか素晴らしいですよ

我ながら役立つこともあるのですね

2014年にこのブログに uploadした Qtでの DIB class に関する C++のコードに対して それから 4年経ってコメントがありました  Thanks というものです これは外国からのコメントでした

正直この頃は Qtで何とか C++により DICOM Viewerを作ろうとしていたのでしょうね いやあ その頃のことは忘れてしまいました その後、僕は急速に Script言語による Web programmingに傾倒して行き C++なんて忘れてしまいました ああ

でも Internetのつながりとは大きいですね

本日は Dockerのお勉強

Dockerというのは今話題の何と言ったらばいいのでしょうかね 自分でそんなに理解していないので表現できないのだけど、とにかくイメージとしては 「自分自身のパソコン上で Linuxを自在に走らせることを可能にする」ものです

例えば、自分の MacOSの上で少しの手間で Linux上で走る Web Serverやら SQL databaseを走らせ、MacOSではその Web Serverやら MySQLと通信してあたかも仮想のインターネットが自分の MacOS上に形成されるのです

自分で Webのプログラム組む時にテストとして 仮想インターネット環境を作らねばならず、この目的では 以前より使用されていた XAMPとか 今も盛んに使用されていて自分も使っている MAMPがあるのですが、そんなことせずに(多分)そのような環境を作ることができるのです しかも、それで動作すれば、そのファイル(イメージ)を持ち込めば世界中どのマシンでも動くらしいのです

うーん自分でも良く分からないので説明できないのですが・・・

これまで何冊かの書籍を Kindleで購入してきたのですが、どうも今ひとつピント来ず、またサンプルが動作しないのでつまづいてきました

今回、「Docker/Kubernetes実践コンテナ開発入門」という書籍を Kindleで購入して少し読み始めました

Docker書籍

この書籍は Just Publishedであり、昨日 download可能となりました それでテストしているのですが、なかなかこの書籍は書かれている内容が Docker初心者には理解し難いものがあり、色々とテストしてようやく最初のサンプルプログラムが走りました

#! main.go -- go言語でサーバーを立ち上げるためのプログラムを書く

package main

import (
  "fmt"
  "log"
  "net/http"
)

func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    log.Println("received request")
    fmt.Fprintf(w, "Hello Docker from DOCKER/KUBERNETTES BOOK!!")
  })

  log.Println("Server was started.")
  server := &http.Server{Addr: ":8080"}
  if err := server.ListenAndServe(); err != nil {
    log.Println(err)
  }
}

このGO言語で書かれたプログラムは port番号8080で Web Serverを立ち上げるものです なんだか色々と難しいことが書いてあるけど、やってるのは もともと GO言語のライブラリとして用意されている fmt, log, net/http といったライブラリを読み込んでそのライブラリに既に用意されている命令を呼び込んでいるたけです

そしてこれをコンパイルするために用意されている Dockerfile という拡張子無いファイルが重要なのです

FROM golang:1.9

RUN mkdir /echo
COPY main.go /echo

CMD ["go", "run", "/echo/main.go"]

このファイルを同じフォルダに Dockerfile という拡張子の無いファイル名で置くのです

このファイルでは書いてある通りに、 goloang version 1.9という既に定義されている色々な仕掛けを読み込み、それから Dockerが作成した特殊環境 Conatinerの中に /echo というフォルダを作成し、それからそのフォルダにさっき、compileした main.goという実行形式をコピーし、それから go して run してサーバーを立ち上げろ ということなのです

しかし、ここまで理解するのに色々とハマりました まず第一に、これらのファイルをどこに配置すれば良いのか、その説明が本には無いのです

仕方なく、僕は 文書フォルダの中に DOCKERKUBERNETES-BOOKというフォルダを作成し、そこに2つのファイル Dockerfileと main.goを置きました そして

$cd Documents/DOCKERKUBERNETES-BOOK

として current folderをこのフォルダに移動させそこで terminalより 以下の Docker commandsを打ちました

$docker image build -t example/echo:latest . // 実は最後のピリオドが重要です これが current directoryを表しているのですよ

これにより コンテナの中で go言語で書かれたサーバー立ち上げプログラムがコンパイルされてサーバーが立ち上がりました しかし、一発で立ち上がればいいのですが、main.goの中で typo (打ち間違い)が当然あります その時にeditorで何回もさっきの image buildを行っても エラーが出るのです

何回見直して typoを修正しきってもエラーを吐くのです これにはまいりました インターネットで原因を調べても良く分かりません

ふと思いついて ひょっとしてコンパイルされたイメージがコンテナの中に既に存在するのでエラーになるのでは? と思いました あたりでしたね

 

$docker image build --no-cache -t exmaple/echo:latest .

とすれば再びビルドして新たなイメージを作り直します

またこのようにしてできたイメージは

$docker container run example/echo:test

として簡単にスタートできますね そしてこのWeb Serverに外部から port 9000でアクセスさせるためには まず走っている イメージ-サーバーを停止せねばなりません

$docker ps

により走っているイメージプロセスを表示させます その最後に nameというタグがありますので、そのネームを用いて

$docker stop [nameの部分に表示される名前] //この名前は dockerが不規則に作成しているものです

としてそのプロセスをまず停止します それから再度 port forwardingしながら WEb Serverを立ち上げるために 再度以下のコマンドによりサーバーを立ち上げます

$docker container run -d -p 9000:8080 example/echo:latest

こうすることにより dockerで走っているサーバーの 8080 portがメインマシン ここでは僕の macOSですがこの port 9000と繋がります( = port forwarding) 結果的にはこの macOSでブラウザから localhost:9000とすれば、メッセージが表示されるのです

フーッ ここまで来るのに一時間使いましたね

ああ ついに僕の実力が白日の下に晒されたのです

昨日夜仙台に入りました そして今朝は 8:00AMに宿泊先の仙台駅に新しくオープンなった Hotel Metropolitan Sendai Eastを check outして 一路南そして東に移動 多賀城市に入りました ここには色々馴染みの病院があるのですが、その中の一つ 坂総合病院を訪問しました

坂総合病院はこれで訪問二回目です 前回は 2017年3月1日のことでした その時には二例の慢性完全閉塞を成功裏に終了したのです しかし、今回は二例の慢性完全閉塞を不成功で終わりました 随分努力はしたのですが、結果的に不成功でした まあ仕方ありませんね

それにしても今週の SHD interventionは早かったなあ

今週火曜日も経カテーテル的大動脈弁置換術 2例と MitraClip 1例をしたのです まあそれ自体日常的風景なのですが、すっごく早かったのです

一例目入室したのが 9:20AM頃 僕自ら患者さんの搬送をお手伝いしたのです この第一例目は S3でバッチリ ストレッチャに移動が 10:30AMぐらい そして第二例目が 11:10amくらいに入室 この患者さんは Evolut Proによりバッチリ これも早くて一時間かからずに終了

そして MitraClipは 12:00過ぎに入室 何と 14:00過ぎに二個の Clippingを行い、残存僧帽弁閉鎖不全が I/IV度以下で終了 バッチリです あまりにも早く終わりすぎ その後手持無沙汰となってしまいました

毎回こんなに早くパッパッと終わればどんなに患者さんにいいでしょうかね どうぞ大動脈弁狭窄症の治療そして僧帽弁閉鎖不全の治療には当院にいらして下さいね 齋藤 滋がお待ちしていますよっ

全く馬鹿なことをしてきた

この暑さに参っているのか頭脳の回転が遅くなっている 自分でもなんて馬鹿なんだと思うほど頭脳の回転が遅くなっている 知らない内に脳梗塞でも起こしているのだろうか?

自分の年齢から考えれば、さらには CHADS-VASCなども考慮すればその可能性は妥当である でも「自分だけはそんなことないよね」などとのほほんと構えている 自分がそんな人間だから患者さんの気持ちは痛いほど分かる そしてその気持が分かれば分かる程に患者さんのことを思う気持ちが高まっていく

とは言っても自分の頭の回転が悪いのは自分で許せない、何とか回転を早くせねばならない そんな時に立ち向かうのはやはりプログラミング でも自分はプロのプログラマではないので、アマチュアのプログラマなので、自称「アマグラマ」と呼んでいる

さてそのアマグラマが何とか少し頭の回転を取り戻したのが次の Web上での MySQLデータ修正の php program このデータというのは 実は 鎌倉ライブのweb公開用予定表 でも現在公開しているものとは不完全に修正書き換えしてあり、昨年の予定表も混在しているので混乱の的かも? まあしかし鎌倉ライブなんてそんなに世間の注目集めないのでこのまま混在していても開催までに修正すれば実害は無いのだろうと思って勝手に割り切っている

そもそも今年は鎌倉ライブ予定表のデータ構造を徐々に変更しようとしているのだ 何故ならばもっと論理的な整合性のあるデータ構造にすれば、その先修正はいらなくなるだろう と期待しているから

とりあえず、テーブルのカラムを一つ増やし、そのカラムに別のカラム上のデータを変換しながらコピーするプログラムを phpで書いたのである ばっかみたいなプログラムだけと暫くプログラム書くことから遠ざかっていたので書いている内にプログラミングの感覚が戻ってきてなんとなく自分が賢くなってきたように思うのだ

ということでそのプログラムの一部

$stmt = $pdo->prepare( "SELECT * FROM `session_tbls2018` WHERE '1' = '1';" );

try {
  $pdo->beginTransaction();
  $flag = $stmt->execute();
  if ( !$flag ) {
    $infor = $stmt->errorInfo();
    exit( $infor[ 2 ] );
  }

  $pdo->commit();
} catch ( Exception $e ) {
  $pdo->rollBack();
  echo "Failed to update Database" . $e->getMessage();
}
$rows = $stmt->fetchAll( PDO::FETCH_ASSOC );
$stmt1 = $pdo->prepare("UPDATE `session_tbls2018` SET `beginDate` = :beginDate WHERE `id` = :id;");

foreach ( $rows as $row ) { // 全てのデータ
  if ( ( $row[ 'id' ] > '171' )AND( $row[ 'id' ] < '186' ) ) {	//2017年 座学修正用
    $begintime = date( 'Y/m/d H:i:s', strtotime( '2017/12/09' . $row[ 'begin' ] ) );
    $stmt1->bindValue( ":beginDate", $begintime, PDO::PARAM_STR );
    $stmt1->bindValue( ":id", $row[ 'id' ], PDO::PARAM_INT );
    $stmt1->execute();
    try {
      $pdo->beginTransaction();
      $flag = $stmt1->execute();
      if ( !$flag ) {
        $infor = $stmt1->errorInfo();
        exit( $infor[ 2 ] );
      }

      $pdo->commit();
    } catch ( Exception $e ) {
      $pdo->rollBack();
      echo "Failed to update Database" . $e->getMessage();
    }
    echo $begintime . "<br>";
  }
  if ($row['id'] == 185) echo "座学が修正されました<br><br>";

 

 

HorliXの少しの tips

さて皆様方は AppleStoreから HorliXを購入しましたか? OsiriXは二年間で 10万円以上のライセンス料が必要であり、二年ごとに更新が必要です 特に問題なのは、Logic Board上の固有番号を購入OsiriXは読み込み、これによる完全なソフトの copy protectがされていることです

不正なコピーを防ぐ目的ではこれは正しいと思いますが、しばしば Macが壊れるのです その時にはほとんどの場合、Appleにより Logic Boardそのものが新品に交換されるのです そこに OsiriXをインストールして以前の serial No.を入力しても二度と作動しません これが何を意味するか? つまり再度 OsiriXのライセンス料を購入せねばならないのです

こんなの馬鹿げています 本当にひどいですよね 他のソフトは殆どの場合そのメーカーのサイトにアクセスして ID/PWでアクセスすればライセンスが取得できません もちろんその時にはインターネットでつながっているマシンは同時には一台のみしか作動しないようになっています これがまともなコピープロテクトだと思います その点 OsiriXは最悪です!!!!

という訳で皆様方 HorliXにしましょう AppleStoreに行って、HorliXで検索すれば一発で出てきます

さて色々と分からない部分も多いでしょうね 僕がこれまで経験した tipsです

  1. OsiriXのデータを読み取るには?
    1. OsiriXのデータは通常は「文書」フォルダに OsiriX Dataという名前のフォルダにあります
    2. これは ターミナルからはたいてい $ls -l ~/Documents というコマンドを叩けば Osirix\ Data という名前で確認できます
    3. HorliXでは ファイル -> import でこれを読み込めます
  2. Albumを読み込むには?
    1. Albumは便利でありまた分類するのに重要ですよね まず OsiriX側で ファル -> アルバム -> アルバムを保存 とメニューをたどりどこか 自分は デスクトップに 書き込みました 僕の膨大な DICOM fileでもアルバムのサイズはたかだか 800KB程度でしたのでメールでも送れますね
    2. ついで、このアルバムを HorliX側では ファイル -> Album -> import albums で読み込みます
    3. これで完璧に OririXのアルバムも HorliX側に読み込むことができました めでたしめでたし
  3. HorliXのデータはどこにあるの?
    1. これは Unix/Linus commandsをターミナルで自由に打ち込めねばなりませんので良く分からない人は手を出さないで下さい データなど重要なファイルを壊して二度と Macが立ち上がらなくなる危険がありますので
    2. ターミナルで通常の Unix commandである findを用います
    3. $find / -name HorliX\ Data
    4. このコマンドにより大量のリストが出てきますが、その中にあります
    5. このパスを記録しておけば、HorliX Dataをどこにでもコピーできますね

以上 HorliXの Tipsでした でもHorliXのメニューまだ完全には日本語化されていませんね あと、ペインが左右に拡大できないバグもあります 作者の方には改善をお願いしましょう

HorliX日本国内実質的な第一号ユーザーとして – (2)

今 San Juan空港で Houston行きの便を待っています あと少しで出発です この空港には何と Free WiFiが無く、スマホからアクセスしています

さて、少しこのサンファンのことについて書きましょう 何百年か昔、コロンブス達がスペインからカリブ海に押し寄せてきました そしてあっという間に占領し、このサンファンに砦をつくりました 今ではその砦は保存されています 見た目は美しいのですが、実際には何万という人々の命が失われたのでしょう

第一号砦
サンファン砦
サンファン砦

さて HorliXですが、良いですよ OsiriXで溜め込んだ数十GBの DICOM dataを問題無く読み込め、再生できています 一つ気づいた点がありましたが、これは開発者の Air様に問い合わせています ところで Air様が僕が第一号ユーザーであることを公開して下さいました とても光栄で嬉しいことこの上無しです

さてこのプエルトリコには医科系大学が 3つありますが、カテ室もその3つのみです Interventional Cardiologistsは全土で 40名ぐらいしか存在せず、しかもその全員が冠動脈インタベという訳では無いそうです この方たちが集まって今回 Sheraton Hotelで学会が開催されました とても heated discussionが繰り出されるのですが、スペイン語で早口で言うので良く分かりません

Grovas先生とのとっておき写真

僕はこの学会で30分ずつ 2演題の講演をしました それが昨日土曜日のことです そして今朝 日曜日の 4:30AMにホテルを出てこのSan Juan空港で今 6:00AM前 Houston行きの便を待っています 早く日本に戻りたいものです

でも、正直この生涯で Puerto Ricoに行くとは思ってもいませんでした 世界が広がりました

なんにせよ Puerto Ricoはとても良い国です 日本で言えば 丁度「石垣島」という雰囲気でしょうか

カリブ海に面した美しいレストラン

HorliX日本国内実質的な第一号ユーザーとして – (1)

さてこのプエルトリコではひどいひどい時差ポケの中頑張りましたよっ そう言えば知らなかったのですが、Puerto Ricoというのは人口 350万人ぐらいのカリブ海に浮かぶ孤立した島ですが、このあたりはスペイン人がたくさん攻め込んできたのでしょうね 全てがスペイン語です でも歴史の中でアメリカ合衆国が攻め込み、今はアメリカ合衆国の一部なのです それで人々のパスポートは正式な米国パスポートです でもね、アメリカ50州の中には未だ加盟が許されず、従ってアメリカ合衆国の選挙権が無いので、この前の大統領選挙も全く無関係だったらしいですよ

まあそれは不満でしょうが、合衆国は税制優遇作を適用し、それでこの大した産業が無い島が成り立っているそうです 主な産業は「観光」であり、観光の対象は米国本土の人々らしいのです でも、去年の秋 2017年9月に襲ってきたカテゴリー5の超大型ハリケーン「イルマ」のために壊滅的被害を受け、数千名の命も失われたようです このため、観光施設もやられ、また未だに電力の供給も完璧なものではなく、街は一部を除けば信号機も消え、暗くなっています

何より大きなことは、これを契機にアメリカ本土からの観光客が激減し、大きな観光被害となっているのだそうです 実際僕が接触したプエルトリコの人々は皆流暢な、少なくとも僕のたどたどしい英語が恥ずかしくなるぐらいの素晴らしい英語も喋られます それでも本土の人々はプエルトリコでなく、今は他のカリブ海島国やメキシコの観光地を訪れているようですね

そうそう医療産業はこの中で優遇処置を受けており、各社の工場がたくさんあるようです これも被害を被ったようです 早く経済が回復すると良いですね もっとも僕が宿泊した San Juan Sheraton Puerto Rico Hotel & Casinoではとても景気良いように見受けられましたので実態は分かりません

さて、木曜日にはとっても難しい慢性完全閉塞に成功し、先方のとてもやる気のあり、意欲のある若手の先生 年齢は 45歳ぐらいかな? Dr. Damian Gravas Abad先生は僕に熱心にガイドワイヤー選択のアルゴリズムを問いかけてきて、それに回答したりしました そして、夜は Seafood Restautantに行きましたよね

Dr. Grovas
カテ室

この病院 Cardiovascular Centerは随分早期に JCI認定を取得している病院です 鎌倉が取得したのは 確か 2010年だったと思いますが、それよりもずっと昔に取得です すごいですね

JCI認証

金曜日には、冠動脈バイパス手術術後患者さんでとても長い病歴の男性患者さんが用意されていました CCS class 2以上の労作性狭心症であり、彼が数ヶ月前にトライされたのです 左内胸動脈が左冠動脈前下行枝につながっているのですが、右冠動脈も左回旋枝も慢性完全閉塞であり、しかもその上に蓋をするように石灰化した左主幹部も慢性完全閉塞なのです それでバリバリの狭心症なのです 彼のシネを見たのですが、順行性、内胸動脈経由の逆行性を右冠動脈にも左回旋枝にも試み、都合5時間費やし、結局あきらめたそうです シネを見て僕は、「これは無理だ」と思いました そして彼にもそのように進言したのです でも患者さんの強い希望もありトライして欲しいと言われ、結局行いました しかし、1時間ぐらい色々試みましたがやはり「これは無理」と宣言し中止しました 患者さんに対しての悪影響はありません 結局この日は他の患者さんたちは、キャンセルとなったり、そもそも慢性完全閉塞が無かったりで、これで手技を終了し、自由時間となったのです

あっとこの後 HorliXについて記載する予定なのですが、そろそろマジで出発準備せねばなりません また後で

相変わらずひどい時差ボケ

日本時間 8月08日水曜日夕方の成田発NY行きの ANA便で出国しました そして、NY JFK空港から、タクシーで マンハッタン島を迂回して対岸のNew Jersey州の New Ark空港に移動しました これはあくまでもアメリカ国内移動なのです そして、New ArkよりUA便で (あくまでもアメリカ国内移動です)、Puerto Rico (プエルトリコ)の州都 San Juan (サンファン)空港に到着 これらは飛行時間3時間以上かかりました 何しろキューバを飛び越えて行くのですから

San Juanのシェラトンホテルにチェックインしたのは既に 8月09日の午前 1:00AMを回ってからでした この日は3:00AMに覚醒し、それから新しい MacBook Proにいろいろなソフトをインストールしていました まだまだ足りない部分があり、肝心の Google日本語の辞書をファイルして持ってきていませんでしたので、随分と不便です

11:00AMにホテルを出て、ホテルから 15分ぐらいの場所にある、Puerto Rico大学附属病院 これは広大な敷地に色々なセクションで分割した大きな建物からなる病院がいくつも立ち並んでいるものでした その一角に、心臓病センターがありました

心臓病センター
心臓病センターを意味するのだ
道路を挟んだ向かいにある大学病院の一角

さて、心臓病センター3階にはカテ室が 6部屋並 んでいました マシンは最新式の Philipsです これに加えて手術室に向かって Hybrid室があり、そこではTAVIもやられているそうです

何しろ機材準備室にはレーザーマシンが2台ある他、FFR、OCT、IVUSはもとより、ロータブレーターも準備され、DESに関しては主要メーカーのものは揃っていました もちろんアメリカの一部なので FDA認可されているもののみでしたが・・・・

さて、たくさんの慢性完全閉塞患者さんが用意されていました とても全ては自分一人では治療できない数です すべて過去にトライされ不成功に終わっている症例です

昨日 11:30頃から治療にかかったのは、まず右冠動脈の慢性完全閉塞でした 既に左冠動脈前下行枝には薬剤溶出性ステントが植え込まれていました 当初右大腿動脈より 7Fr ガイディングカテーテルを挿入して中隔枝経由でのレトロを狙いましたが、最終的には非常に細いネットワーク状の連結でありこれを超えることはできませんでした そこで、右橈骨動脈より挿入した 6Frガイディングカテーテルにより、順行性アプローチに切り替えましたが、ガイディングカテーテルによるバックアップが悪いため、Extension GCを用いて行いました 最終的には UB3により通過し、これを直しました

次の患者さんは左冠動脈前下行枝と対角枝の分岐部病変であり、これに対しては薬剤溶出性ステント二個を用いた Culotte stentingが行われました 行われました、という表現しているのは僕はこのテクニック嫌いであり、この症例の治療は現地の先生が行われ、僕は助手に回りましたので・・・ そもそもこれらの手技はアメリカ国内で行われており、そこでは医師の資格に対する審査が非常に厳しい筈です もちろん僕が今回の訪問で手技をすることは問題ありません

そして昨日最後の症例が冠動脈バイパス手術後の症例でした これも経大腿動脈的インターベンション + 経橈骨動脈的インターベンションで行ったのですが、非常に不穏状態がひどく現地の先生が途中で大量の鎮静剤投与された結果、呼吸が停止し、アンビューバッグによる呼吸補助が必要となりました 決して状態は良くなかったのです これに対しては最初から左冠動脈前下行枝からの中隔枝経由のレトロで入りましたが、右冠動脈の閉塞部は非常に屈曲した部位であり、丁度ヘアピンカーブ状の屈曲が二回連続している部位であり、その部分で慢性完全閉塞となっており、この通過はとまどりましたが、順行性と逆行性にワイヤーを進め、薬剤溶出性ステントを右冠動脈に合計4個植え込み成功したのです

この時点で 17:30になっており、そのままシーフードレストランに入りました ここはカリブ海の真っ只中 人口300万人の島 プエルトリコ (スペイン語で綺麗な港 という意味)です 魚介類は豊かなのですが、何しろ魚介類をおいしく調理する習慣が未だありません こんなに大きな鯛の仲間もいるのです

大きな鯛

見かけは鯛のようですが、体が流線型ですよね 白身の魚でしたが味はおいしいものでした できれば釣り上げた直後に〆て、わたとエラをとって氷の中に保存したまま市場に回して欲しいなあ そうすれば僕がさばいて、それから酢と塩で〆てからおいしい寿司を握るのですが・・・・

という訳で本日もひどい時差ポケ 睡眠時間2時間です