だいぶん頭脳が Haskell脳になってきました

最近感じるのですが、これまでの半年間以上に渡る苦闘の末に、いやまだまだ末ではないのですが、自分の思考がなんだか変わりつつあるのを自覚するようになってきました。要するに Haskell脳になってきているのです。もっともその道のプロの方から見れば「赤ちゃん」のように幼稚な脳でしょうが、それでも変わりつつあります。

そのように自覚するのは、別に Haskellの勉強をしたり、プログラムを書いたりしている時ではないのです。日常生活で、フト今までとは違った思考をしているのに気づくのです。ようやくここまで来ました

-- Haskellで書いた
--リストより先頭文字が一致した項目
--を削除するプログラム
-- remove0.hs

remove' hanbetsu [] = []
remove' hanbetsu (x:xs) = if hanbetsu x
                          then remove' hanbetsu xs
                          else x:remove' hanbetsu xs

test_array = ["apple", "banana", "avogado"]

このソースコードは remove0.hsとしてセーブされています。
これでターミナルから以下のように打ち込みます

$stack ghci

これによりHaskell Interpreterが立ち上がりますので以下のようにプログラムのソースコードである remove0.hs

Prelude>:l remove0.hs

とすることによりコンパイルされますそして

Main>remove' (\(x:xs) -> x == 'b') test_array

とすることにより”banana”のみ無くしたリストが得られます。

本日の陝西人民医院におけるPCIデモ

日曜日(9月08日)夜に陝西(せんせい: ShaanXi)省の省都である西安市に入りました これで西安を訪問するのは10回ではきかないでしょう。そして本日は朝講演を行った後、実際の患者さんの治療を二例行いました。二例ともなかなか厳しい症例でしたが、無事成功裏に終了しました。もちろん二例とも慢性完全閉塞の患者さんでした。何時来てもこの街は中華文明の粋が集まる美しい省都です。とはいうものの明日(9月10日)の 6:00AMにはホテルを出て北京経由で帰国せねばなりません。短い旅です。

まだまだ分からないことだらけ

今朝実は北京経由で西安に入ります それで早朝ですが、突然 node.jsをインストールしようと思いました こんなものとうの昔にインストールしてあった筈ですが、さっきひょんなことで homebrewをアンインストーるして、再びインストールしたのです。そんな訳で homebrewでインストールしてあった node.jsも消えてしまったのです。

「うん? どうやれば node.jsインストールできるんだっけ?」

そこで google博士に聞いて見ました ここにヒットし、とても最近の uploadなのでこれが最高!と思いましたね、そして指示に従いインストールしたのです キモは最後の最新の node.jsをインストールするというこのコマンドです

$nodebrew install-binary latest

ところが、これがエラーが出てどうしてもインストールできないのです。sudoにより権限昇格しても駄目なのです!! 結構こんな時の僕の気分は深海の如く deep blueとなりますね。

それでもやはり朝でした 未だ元気な僕でした ふと思ったのです 何でこんなコマンド入れるのかな? もっと素直に

$brew install node

で良いのでは?

そこでやったところ一発で node.jsがインストールされ、今現在僕のターミナルでは

$node -v
v12.0.0

という具合に最新 node.jsが戻ってきます やったね!!!

技術伝承の困難

先日鎌倉では久しぶりに慢性完全閉塞に対するPCIをしました もちろんご紹介の患者さんであり、他院で前回トライされましたが不成功に終わった比較的若い、長い閉塞長を有する右冠動脈の慢性完全閉塞患者さんでした

一見すると順行性アプローチでも容易そうであり、事実CT冠動脈造影でも前を遮るような石灰化と認められず「どうしてこれがうまく行かないのかな?」と思える程でした

そんな訳で”念の為”両側アプローチで、しかも 6Fr guide cathtersで入りました 穿刺部位はもちろん両側遠位橈骨動脈です。

まずは順行性からXTAで開始したのですが、これが進まない そこでUB3に変更し、Gaia-Next1に変更した時点で前回形成された解離腔にワイヤーが進むのみで順行性は断念したのです。そして左冠動脈より心尖部ルート、これが内径は1.5mm以上あるのですが、蛇行が著しく、しかも良くあることですが、蛇行ヘアピンカーブ頂点には直線的に枝が分離しているのです。Caravel + Fielder-FCで入りましたが、ワイヤーはやはり頂点から分岐する直線的枝に入るのみであり、また心拍動に呼応して蛇行のカーブが変動するため全くワイヤーコントロールできないのです。それでも頑張り、結局XTRを心拍動に同期させて操作することによりこの難局を乗り越え、Caravelを右冠動脈の末梢に持ち込むことに成功しました。ところが、右冠動脈の遠位閉塞は#4AV/#4PD分岐部直前であり、ワイヤーを右冠動脈近位に向けようとしても冠動脈血流に乗り、ワイヤーは末梢側にとられるのみなのです。

何とかタイミングをとり、Caravel先端を#4PD – #3と90度以上の曲がりを超えさせ、そしてGaia Next1を近位に向けて進めました。しかし、ここで慢性完全閉塞部位がとても硬いことに気が付きました。線維性組織により閉塞していてワイヤーがその繊維の絡みによりトラップされている、そんな印象です。

ここは我慢の子で、じっと頑張り徐々にそれこそ「コンマ4mm」の速度で進め、ようやく閉塞部位を抜けましたが、先端は薄皮一枚で解離腔に向かっていくのです。しかし、ワイヤーをこの時点でコントロールすることは不可能と思われ、頑張って進めました。途中まで進めたところで、順行性に 4.0mm balloonを挿入し、そこでアンカーかけ、これにより逆行性Caravelを引き込もうとしたのですが、なんとアンカーが全く効いていない!!!!!!!

結局システム抜去となりました。この時点で90分経過していて、気力も萎えかかったのですが、部下が「もう一度試しましょう」と呼びかけたため、今度は順行性ガイディング・カテーテルを7Frに up sizingして再開しました。そして、今度は通過困難であった心尖部蛇行をやはりXTR/SUOH03を用い、さらにマイクロをCorsair-Pro XSを用いて前回よりも数手間少なく通過させることができたのです。しかし、ここで面白い現象に気づきました。Corsairだと決して分岐部を超えて#3方向にワイヤーを向けることができないのです。しかし、Caravelに変更することによりこれが可能だったのです。これは「出来る/出来ない」あるいは”+/-“あるいは「白/黒」の如く明白な観察事実でした。これには正直驚きました。その驚きの源は
「僕にも未だ慢性完全閉塞に関して学ぶ部分があるのだ」
というものでした。

そして、それと共に「やはり技術の伝達は難しい」「なぜならば自分自身が未だ完璧ではないから」というものです

しかし、その一方で気づきました「技術伝達する立場の人は完璧である必要は無い」かも知れない そのようにも思いました。「技術伝達する立場のひとも、それを受ける人も 互いに技術を高めるようにすればよい」そんなのが今朝の結論です。

 

僕のbashに一体全体何が起こったのか?

昨日TAVI三例とMitraClip一例の合間に突然のごとく気がついたのです また Visual Studio Code (VS Code)上でかんたんなHaskell programをテストがてらに書いていて、それを VS Codeのターミナルで走らせようと思ったところ、なんとなんと VS Codeターミナル画面から command promptが消失しているのです

これって、要するにコマンド打ち込めません $stack ghc ****.hsとして Haskellプログラムをコンパイルしようとても、なにせその $ が無いのです!!!

まさか、と思い Macのターミナルを立ち上げるとここにも $が無いのです これは大変な事態になりました 何も悪いことはしていません それなのに突然そんなことになったのです 前日はそんなことありませんでした

ひょっとして bashでなく zshでは大丈夫では? と zshを $より立ち上げようとするのですが何しろその $が無いっ!!

きっと、~/.bashあるいは ~/.bash_profileという bashの設定ファイルが壊れたためか? と思いそれを何とか VS Codeの「開く」という graphical interfaceで開こうとしても、今度は 隠しファイル(先頭に .がついたファイルで通常の Macからは見ることも存在も知ることができないファイル)を調べようとしても、何しろそれが見れないのです。そこで、今度は「コマンド」+「シフト」+「.」を押したところ、隠しファイルを見ることができましたので、それで両方の設定ファイルを調べても何も変わっていないのです

今度はとりあえず、「ターミナル」の「環境設定」から立ち上がりシェルを zshに変更し、とりあえずターミナルで zshを立ち上げそれにより操作をしました。まずは、この環境設定から、zsh上で $/bin/bash –version により現在のシステムbashの versionを調べると version 3.2.57(1)となっていました

これは MacOS Mojaveをインストールすると立ち上がる bashですが、何しろ現在の bashは version 5.0.11なので相当に古いものです

そこで次にzshより立ち上がるコマンドをbashにしたのです そして、homebrewで最新の bashをインストールしました

これにより $which bashとすると /usr/local/bin/bashとなり、bash –versionも version 5.0.11となりました

今は訳のわからないままこの状態で動かしています 一体全体何が突然起こったのでしょうか? どなたか Unixに詳しい方教えて下さい

MySQLで DateTime fieldにおいて、年と日付のみ変更する方法

さてそろそろ鎌倉ライブの Web Siteを更新せねばなりません 結構なプログラムが仕込んでありますが、鎌倉ライブのプログラム(予定表)そのものが非常に flexibleですので、Web programmingも結構苦労するのです

2018年のデータを活用するつもりなのですが、これは MySQL databaseに取り込まれている2018年のデータをコピーすれば良いのですが、そこで フト悩んだことが

session_tbls2019の中のbeginTimeというDateTime fieldにコピーされた 2018年データ:: つまりは、”2018-12-15 09:30:00″というようなデータをどうやって2019年データ::つまりは、”2019-12-14 09:30:00″という本年の正しいデータに変換すれば良いのか? これってなかなか難しいですね でも調べました、その結果はこうです SQL文で以下のようにするのです

UPDATE `session_tbls2019` SET `beginDate` = (`beginDate` + INTERVAL -1 DAY);
UPDATE `session_tbls2019` SET `beginDate` = (`beginDate` + INTERVAL +1 YEAR);

これで年と日付が更新されました 便利ですねえっ

WordPressで隠し文章を記録

WordPressでの文章で、ちょっとした trickを思いつきました もう少し暇があれば、Javascriptを用いて動的に画面を作成できるのですが、色々なことを勉強せねばなりません

ここで記載する trickといのは WordPressの文章で cssを用いてあるブロックの文章を表示しなくするのです これと jQueryを組み合わせればボタンをつけてそのボタンにより表示・非表示を切り替えることもできますね

cssはかんたんで style=”visibility: hidden; height:0px;” とするだけなのです でもこれって隠し文章を記録するのに便利ですよっ

25年来のモヤモヤ

昨日は二日続けての経皮的僧帽弁接合不全修復システム (MitraClip)植え込みがありました 火曜日にTAVI3例、経皮的僧帽弁接合不全修復システム (MitraClip)1例あったため、水曜日午前中にも一例経皮的僧帽弁接合不全修復システムを行うことになりました

実は火曜日午前中には他院でTAVIのプロクタリングを行い、それから鎌倉に戻ったのです

さて、その水曜日のMitraClipですが、25年間のモヤモヤが自分の心の中にはあり、それが患者さんのご協力で振り切れました

僕が鎌倉に来たのは 1988年10月からでした 実際に病院が新規開院したのはそれから一ヶ月後の 11月01日でした ゼロからの出発でしたので新鮮な喜びがあり、いろいろなことがありましたが、まずまず順調に立ち上がったと、今にして思えば思えます。

心臓部門も心カテという武器の下で順調に立ち上がり、やがて心臓外科も充実しようという時になりました しかし、そのような時に色々なトラブルは内部から発生するものです。1992年頃になり、心臓外科が中心になり、鎌倉市の隣の隣の町に心臓センターを独立して建設する、という話となりました ところが、その中心となっていた今はもう何処におられるのでしょうかねえ? その方たちが中心となり、循環器内科よりまあ ソースを集めるという下心もあったのでしょうか? 僕が中心の鎌倉の循環器内科に対する強い相当な圧力、それこそあること無いこと 色々な圧力を受けました。実際、そのような圧力の結果、当時循環器内科には僕を頂点に合計8名の医師が在籍していましたが、その内の 4名が他院に移籍しました。残ったのは僕も含め、4名のみでした。こんな状況にあっという間に追い込まれました。それはそれは辛かったです。

ちょうどそんな時に一人の患者さんにお会いしたのです。その患者さんは無事手術で治療され、そして 25年後の昨日今度は僕たち循環器内科により良くなられたのです。25年間という歳月を超えて患者さんも僕も歳を取り、そして再び元気にお会いすることができたのです。

1994年 大動脈炎症候群の瘢で、大動脈が全体石灰化あり、しかも上行大動脈が拡大し、それに伴い重症大動脈弁閉鎖不全となり、その結果心不全となっておられた女性がご紹介となり来られました。この患者さんの治療としては大動脈弁置換術しかありませんので、僕たちに圧力をかけ続けていた心臓外科医グループに手術を依頼したのですが、「この患者さんは手術は無理である」と断られたのです。それでも比較的若い患者さんであり、それから何年も人生を過ごしてしかるべき患者さんでしたので、しかも手術以外に治療法は無い患者さんでしたので思い悩み、その頃知り合った別の心臓外科医に相談し、手術を引き受けてくださることになりました。手術は、心臓外科医が既に隣の隣町に移ってしまっていた鎌倉の心臓外科で行ったのです。その紳士的な、人間味溢れる心臓外科医は、6時間に及ぶ手術を丁寧に行って下さり。その患者さんは 25年を経た今でもお元気にされているのです。その外科医は、後に「天皇を手術した外科医」として有名になられましたね。一方、僕を苛め続けた外科医グループはその後どうなったのでしょうか?

そして、昨日のMitraClipを行ったその患者さんというのは、その時の患者さんの 25年後だったのです。たくさんのたくさんの人生、

波動の合成

昨日、某企業で長年超音波診断装置の開発に携わって来られた尊敬する技術者の方からお話を伺い、長年の疑問に対してヒントを賜りました。とてもありがたいことです。

例えば経食道心エコー法ですが、三次元画像や X-planeによる二次元直交画像を表示するためには、いったいいくつの 超音波クリスタルが必要なのか? さらには、そこからの信号線の数は膨大な数にならないのか? そもそもphased-arrayにより超音波ビームの方向を自由に振るとしても、膨大な数の超音波アレイをどのように正確に制御できるのか? 取り出した信号を信号処理ユニってに送り込むためには、その信号線が膨大になり、その間の同期などが困難となるのでは? あるいは、エラー耐性が著しく低下しないのか?

などなどたくさんの疑問を抱えて僕はこれまで生きてきました それらに対する明確な回答のとっかかりを得ることができました もちろん自分で何をするか? ではなくって、単なる疑問なのでした 疑問を疑問のままにしておくことができなかったのです

要するにクリスタルから出る波動を自由自在に合成することにより、あるいは受信時に仮想的に合成することにより自由自在に方向を決定できる そのようなことでした。ものすごいテクノロジーですね。

Haskellに惑わされ – 13

ライブデモンストレーション開始の直前に理解を深めるために ghciで REPLにより実行しました

Prelude> :{
Prelude| myDiv x = case x of (0, 0) -> 1 :: Int
Prelude|                     (_, 0) -> maxBound
Prelude|                     (n, m) -> n `div` m
Prelude| :}
Prelude> myDiv (0, 0)
1
Prelude> myDiv (100, 0)
9223372036854775807
Prelude> myDiv (3, 5)
0
Prelude> myDiv (100, 2)
50

思いどおりの実行ができましたね もっとも本からの抜粋ですが・・・・ しかし、本に書いているからと言っても簡単に実行できないのが Haskellです 要するにとても「厳しい」言語仕様なのです