何だコリャ そして 素晴らしい

相変わらず神経痛で悩んでいます 眠れない 痛い 時間との勝負でしょうか

ところで今朝突然ひどい話に気が付きました MacOS High-Sierraとなって新しいディスク formatである APFSが導入されました この APFSは SSDに対して最適化されていることは有名ですが、HDDに対して使うなとは書いていません

僕は調子に乗って 外付け portable 3TB HDDを APFSで formatしてそれを TimeMachine backup diskの一つとして使用してきたのです 流石に 3TBですから何回 backupしても余裕がありました

昨晩一晩かけて残り 100GBぐらいになっているので TimeMachie backupしたところ、今朝気がつくと「エラー」となっているのです そして 「MacOSジャーナリングでないと TimeMachineのバックアップはできません」などとエラー表示しているのです

なになに 今更なんだ これまで何回もバックアップしているのに途中ではそんなエラー出てこない

まあ仕様ならば仕方ないと諦め このdiskを MacOS Journalingで formatしようとしたのですが、できない!!! 何と APFSで formatされた diskは APFSでしか formatできないのです

困りました Parallelsで Windows10を立ち上げ Windowsによりこの diskを formatしようとしたのですが 何しろ認識すらできません さあ困りました 3TB HDDがゴミになるのでしょうか

それで Googleさんと相談したところ、見つけましたここを そして救われました

世の中奇特で優秀な方がおられるのですね それにしても Appleはもう少し user friendlyになって欲しいなあ

こんな馬鹿なことで1週間潰した

さて、今から本格的にプログラム書こうと思っているのが、2019年に学会長を行うように指示されといるとある学会があるのですが、そのいわゆる学会プログラムやその他諸々を handlingするソフトの開発なのです 当然のことながら Smart Phone/Tablet/PCの全てに対応するように “Responsive Web Design”で開発するのです DBは慣れている MySQLを使用し、言語もこれも慣れている PHPを使用します

こんものいちなり書けないのでテスト・プログラムを作成し、local web serverでテスト繰り返すのですが全く作動しないのです

「えーーっ、なんでぇーーー こんな筈は無いはずだあ」と一週間悩んだのです 少しずつ修正しながらテストするのですが全く僕の意図を無視して動作しないのです

まあこんな感じです

// ここれはフロントエンドで SQLに探索語を渡す Ajax通信のルーチン
    $( document ).ready( function () {
      $( "#search_results" ).slideUp();
      $( "#search_term" ).keyup( function ( e ) {
        e.preventDefault();
        ajax_search();
      } );

      function ajax_search() {
        $( "#search_results" ).show();
        var search_val = $( "#search_term" ).val();
        $.post( "dr_role_find_backend.php", {
          search_term: search_val
        }, function ( data ) {
          if ( data.length > 0 ) {
            $( "#search_results" ).html( data );
          }
        } );
      }
    } );

 

そして受け取る方は、PHPとMySQLです

 session_start();
 session_regenerate_id(true);
 require_once('../utilities/config.php');
 require_once('../utilities/lib.php');	
 charSetUTF8();
 //接続
	try {
   // MySQLサーバへ接続
  	$pdo = new PDO("mysql:host=$db_host;dbname=$db_name_sessions;charset=utf8", $db_user, $db_password);
 // 注意: 不要なspaceを挿入すると' $db_host'のようにみなされ、エラーとなる
 } catch(PDOException $e){
   		die($e->getMessage());
 }

 $hp_name = strip_tags(trimBothEndSpace(mb_substr($_POST['search_term'], 0, 100)));	// 前後のspaceなど削除し、文字数を100文字に制限する
 $hp_name = strtoupper(mb_convert_kana($hp_name, 'ashK'));		// 半角英字大文字に変換する

 $stmt = $pdo->prepare("SELECT * FROM `hp_tbls` WHERE `hp_name` LIKE :hp_name ORDER BY `hp_name` ASC;");
 $stmt->bindValue(":hp_name", '%'.$hp_name.'%', PDO::PARAM_STR);
 $flag = $stmt->execute();
 $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
 
 if (!$flag) {
   		$infor = $stmt->errorInfo();
     exit($infor[2]);
 }

 

これで、検索語として病院名の一部を入力すれば、DBより検索してくれる筈なのです

しかし、しかし動作しない 本当にこの解決に一週間かかり、先程やっと解決しました

色々な問題があったのです まずは

trimBothEndSpace(mb_substr($_POST['search_term'], 0, 100))

という関数ですが、(1) mb_substrの引数を何時の間にか消去してました つぎに(2) trimBothEndSpaceという関数ですが、これは自作関数なのですが、それをlib.phpに作成してあり(ある筈)、それを読み込んで使用するのですが、何と lib.phpの中にこの関数を書いていなかったのです

この2つのバグのために、phpそのものが走らず結果的に echoで途中経過を出そうと思っても出せない そんな事態に陥っていたのです 本当に大変なバグ退治でした これも Ajax通信によるプログラムだからのことです 本当に非同期通信というのは難しいです これが解決してうまく動作しているデモ画面です

うまく Ajax通信が動作しているところ

Dockerの何回目かの勉強

これまで何回も Docker習得に挑み、挫折してきました 挫折すると暫く、そうですね数ヶ月間 Dockerのことは忘れ、またブーメランのように戻ってくるのです さあ今度はどうでしょうか また挫折するのかな?

そもそも Dockerとは Container-baseの仮想コンピューターシステムです 何と言えばいいか、例えば自分の MacBook Proの上に、たとえば Linux serverを何個も同時に動かしたりできるのです これは現代コンピューターサイエンスのもっとも進んだ利用なのだと思います

何れにしても目標としては、自分の MacBook Proの上に、Linux Web + PHP + MySQL (つまりいわゆる LAMP: L = Linux, A = Apache Web Server, M = MySql database server, P = PHP or Python programming language)を構築し、それを使用して Web program開発をすることなのです 現在はこの目的のために MAMPを利用しているのです

実はアメリカから帰国する前に「やったあ できた」と思ったのですが、その後検討すると Chromeでしか作動しない、FireFoxや Safariでは動作しない、http://localhost:8080/ではアクセスできない などの問題点があり、これではプログラム開発できません

それでゼロ点に回帰してやり直すことにしました 本日はこんなこと学びました

MacBook Proの bash terminal上で

$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

と入力し、Enterを押す そうすると

linuxkit-025000000001:~#

という待受になりこの時点で Linuxが Dockerコンテナの中で作動しだすが、ここで exitと入力すると あれあれ不思議 bash terminal上にこの Docker container上で動作する Linuxが遊び心でこんな素敵な画面を出力するのです

Welcome to LinuxKit

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""___/ ===
          {                       /  ===-
           ______ O           __/
                          __/
              ___________/

linuxkit-025000000001 login: root (automatic login)

Welcome to LinuxKit!

NOTE: This system is namespaced.
The namespace you are currently in may not be the root.
login[483]: root login on 'ttyS0'
linuxkit-025000000001:~#

このままだと終了しないので、Ctrl-a kと入力することにより、Macbook Proの terminal bashに復帰します

こんなことですが、Dockerの始めの一歩でした 是非とも皆様方試みて下さい

ちなみにこのクジラの絵ですが、Dockerの trade markですクジラが貨物船のようにコンテナを積み込んでいる模式絵なのです 面白いですね

本当のやったあ

この前の投稿ではタイトルが「やったあ」となっていますが、そのタイトルは実はこの投稿に対するものなのです

それと言うのも、このアメリカでの時差ボケの最中に解決したこと一つ それは Dockerで LAMPサーバーを Macbook Proの中に立ち上げることに成功したのです

といっても結構スキルの必要な作業であり、それを探すというのも一つの才能なのです 僕はサーチして このページに行き着きました いやいやありがたいことです

ただ、その記載の中に一箇所誤りがあり、そもそも良く理解していないので、何が誤りか検出するのに20分ぐらいを費やしました それは

./db/Dockerfile

DBサーバの設定ファイルです。
DockerHubにあるmysql:5.6を使用しています。

FROM mysql:5.6
MAINTAINER docker-db

COPY ./my.cnf /etc/mysql/my.cnf ※1

ここに一箇所誤りがあるのです それは簡単な話ですが、※1を削除せねばならない、ということです

それに気づいて修正したところ、見事に

docker-server$ docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
dockerserver_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
dockerserver_web_1 docker-php-entrypoint apac ... Up 0.0.0.0:8080->80/tcp

というふうに mysqldとphpが立ち上がりました 感謝感謝です

久々の Pythonネタ

Bokehという Pythonのライブラリの勉強を少しだけしました APIとかの変更が行われており、解説Blogでも 2016年のものではもう動作しません

最新のマニュアルを参照せねばなりません その結果こんなのできました

from bokeh.plotting import figure, output_file, show
x = []
import numpy as np
x = np.arange(0.1, 3.0, 0.1)

y0 = [i**2 for i in x]
y1 = [10**i for i in x]
y2 = [10**(i**2) for i in x]

# output to static HTML file
output_file("log_lines.html")

# create a new plot
p = figure(
   tools="pan,box_zoom,reset,save",
   y_axis_type="log", y_range=[0.001, 10**11], title="log axis example",
   x_axis_label='sections', y_axis_label='particles'
)

# add some renderers
p.line(x, x, legend="y=x")
p.circle(x, x, legend="y=x", fill_color="white", size=8)
p.line(x, y0, legend="y=x^2", line_width=3)
p.line(x, y1, legend="y=10^x", line_color="red")
p.circle(x, y1, legend="y=10^x", fill_color="red", line_color="red", size=6)
p.line(x, y2, legend="y=10^x^2", line_color="orange", line_dash="4 4")

# show the results
show(p)

これでできるグラフは下記のようになります

グラフ

しかもこのグラフ動くのです すごいですねえ

さて続き

そうそう 2月02日には治験薬剤溶出性ステントのために、Ferdinandが鎌倉に来られました 植え込み終了後、鎌倉でお食事、そして土曜日、日曜日と過ぎ、再び2/05には Ferdinandを鎌倉にお迎えし、外来終了後に治験DES植え込み、そして火曜日はTAVI、水曜日 つまり2/07にはメールでT-Siteから修理が上がってきた、との連絡があり、その日夕方の便で札幌東徳洲会病院に入り、治験DES植え込み予定でありましたので、急いで T-Siteに行き、修理終了した MacBook Proを受け取りました もちろん3年間の Apple Careに加入してあるので、修理代金は無償でした

結局、本社工場でも修理できず、Logic Boardが交換されたのでした つまり中身が真っさらとなった、ということです 結局SSDのデータ全てが消失したのです この日札幌には古い Macと新しいのと二台を持ち込みました 重い重い

そして札幌で治験DES植え込みしてから、部屋で TimeMachineでrecoveryしたのです これには10時間かかりましたよ その後、さらに新しいファイルをHDよりリカバーし、結局マシンは修理以前の状態に戻りました

本日は緊急症例に対してPCIを自らしたのですが、以前苦労して治験を行いつい最近承認されたDESの市販後初めての本邦植え込みをしました 全く世の中には治験を軽んじる人や会社が多くて困ったものです ばっかみたい

最近は Pythonもどんどん Version Upしていて現在の最新版は 3.6.4です すごいですねえ

すごく大変な一週間

とてもとても忙しくその忙しさは我を忘れるほどのものでした

先週の土曜日2月3日にそれは始まります どうもMacBook Pro2016年版の調子が悪いとここ数ヶ月間思っていました その症状というのは(1)明らかに速度低下している (2)4つあるUSB Type C portsの内の少なくとも2つでは充電できない (3)それと一つは重なるもののその他の一つの portではそもそも USB Type Cを接続しても認識できない といったものでした

これがソフトのトラブルなのかハードのトラブルなのかそれは分かりませんが、何れにして「故障」であると考えていました 問題は何時修理に出すか? なのでした だってその間この Mac使用できなくなり、それは業務に大きな支障を来すことが予想されるからです

もちろん複数の Backupをとっています 一つは重要ファイル 僕の場合 ~/Documents/, ~/Sites, ~/Osirix Data/, ~/Pictures/, ~/Music/, ~/各種講演/ なのですが、それをファイル単位というかフォルダー単位での backup、そして次ぎに CCC (Carbon Copy Cloner)での起動可能な backup、そして TimeMachineでの backupなのですが、それを行っています

そういう訳で思い切って 2/03に藤沢にある湘南T-Siteのに中の「カメラのキタムラ」そこが、Appleの authorized 修理センターにもなっているのでそこに提出しました

かっこいいお兄さんが相手をして下さったのですが、一時間ぐらいかけてようやく「故障」と認定してくれ、結局そこでは修理できないとのことで、Appleの正規工場に配送となりました

 

ということでこの続きはまたね

いやはや大変です

さて購入後1年2ヶ月ぐらいしている MacBook Proですが、全て Type C connectorになっていて何ともやりにくく、またKeyboardもペチャペチャとキーを打つ度に気に入らない音がするし、何しろキーを打ちにくい

おまけに何時の頃からか 4つある Type Cが一つ、二つと反応しなくなってきたのです 最初は電源供給できなくなり、その内 USBを認識しなくなりなのです

土曜日に思いあまり湘南T SiteにあるApple正規修理代理店カメラのキタムラに持ち込みました お兄さんは小一時間調べ僕が指摘した症状を確認、当然のことながら原因特定できませんでした

それで結局 Apple修理工場に運ばれることになりました こんなだったらば、Appleと直接やり取りした方が早かった

それで本日は backup filesを以前使用していたMacBook Proにコピーして、さらにアプリもupgradeしてもう夜遅くなりました うーん大変です

ああ辛かったけど何とかやり遂げました

昨日金曜日には外来終了後、珍しく自分でPCIをしました というのも理由があり、新しい薬剤溶出性ステントの日本導入にあたり、僕が operatorとして治験症例の治療をさせて頂いたからです

全く新しい概念の薬剤溶出性ステントです 薬剤溶出性ステントそのものはこれまでのものと同様なのですが、delivery systemが異なるのです Kiemeneij先生もわざわざオランダから飛んで来られました そして今朝も一例治療したのですがそこにもKiemeneij先生が来られました

昨夜は実は 19:00より横浜で開催された比較的大きな研究会があり、そこの出だしての Opening Remarkを述べる予定だったので、18:00に湘南鎌倉総合病院を出発し、タクシーで横浜駅前のホテルに移動 結構ぎりぎりで到着し、19:10頃より10分程度の挨拶をしたのです そしてそれからすぐに再びタクシーで鎌倉のお寿司屋さんに移動し、20:00から Kiemeneij先生を囲んで楽しい食事会でした

今朝は一例治療させて頂き、そのあとまたすぐに多数の論文を読み、そしてそれを消化してプレゼンにして、それらの蓄積物を大船駅から東京駅の移動の電車の車内で分類、修正してさっき 13:00 – 14:00に無事大作の講演をしたのです

現在は再びタクシーを飛ばし、辻堂の湘南T-Siteにいます 実はこの MacBook Proは4つの Type C portがあるのですが、一つずつ順に異常を呈し、現在は2つしかまともに作動しなくなっているのです なんてことでしょうね ひどい話です

何しろ電源もこの Type C portを使用しているのでこのまま病勢が進行すれば何れ充電もできなくなりそうです こんなこと以前の Macでは考えられないことです どうしたのでしょうか Appleは

Python BootCamp in 茅ヶ崎 に参加してきました

茅ヶ崎駅から歩いてPython BootCamp in 茅ヶ崎会場まで行きました 案内では駅から徒歩5分ぐらいとあったのですが、スマホで検索してもなかなかわからず、何回か行き過ぎて15分ぐらい歩き回ってようやく会場に到着しました

今回の参加者は 12名でした そして講師の先生方か 5名と、とても手厚い講義でした

内容的には Python言語の基礎に始まり、簡単なプログラム作成、そして Scrapingを行いました 僕が改変して使用した Codeは以下の通りです

import requests
from bs4 import BeautifulSoup


def main():
    url = 'http://www.kamakuraheart.org'
    res = requests.get(url)
    content = res.content
    soup = BeautifulSoup(content, 'html.parser')
    columns = soup.find_all('div', class_='col-md-4')
    for column in columns:
        name = column.h2.text
        explain = column.p.text
        print('***項目***', name, "---内容---", explain)


if __name__ == '__main__':
    main()

これで結果は以下の通り

***項目*** TAVI/TAVR (経カテーテル的大動脈弁植え込み術/置換術)および僧帽弁閉鎖不全に対するカテーテル治療(TMVR: Transcatheter Mitral Valve Repair = 経カテーテル的僧帽弁修復術) ---内容--- ここ数年間で循環術です。当科は、この分野でも日本国内数少ない治験施設として、その実施に当たってきました。今でも重症大動脈弁狭窄症に対する治療法として外科的大動脈弁置換術しか治療法を提示されていませんでしょうか? 今や、TAVIという画期的な治療法を受けることができるのです。
***項目*** PCI (経皮的冠動脈インターベンション) ---内容--- 経皮的冠動脈インターベンション (PCI: かつては経皮的冠動脈形成術 PTCA とも呼ばれていました)は 1977年に当時チューリッヒ在住であった Dr. Andreas G治療が行われました。この時は、単純な風船の拡張により、冠動脈狭窄病変を拡大し成功裏に治療が行われました。この時より、既に40年間が経過し、その間に様々な治療法の改良と医学的知識の蓄積が行われ、現在では薬物界的にも先駆者であり、実際最初に齋藤 滋がPCIによる治療を行ったのは、昭和56年 (1981年)のことでした。それ以来、日本核内のみならず全世界での治療経験を有しています。
***項目*** カテーテル・アブレーション ---内容--- 頻拍性不整脈に対して、カテーテルから主として高周波電流通電を局所異常回路に対して行い、不整脈を根治する治療法です。伝統的な対象疾患は、発作性上室性頻拍症、れてきた高周波通電アブレーションのみならず、マイナス70度まで異常電流回路組織を冷却し、これにより異常回路を遮断するクライオ・アブレーション(Cryo Ablation)も多数の患者さんに対して行っており、患者さんに対する負担軽減に寄与しています。
***項目*** EVT (血管内治療) ---内容--- 以前は PTA (Percutaneous Transluminal Angioplasty: 経皮的経管的血管形成術)という呼び名が主流でしたが、必ずしも血管形成のみが治療の方法論ではないことから、最近では は、冠動脈に対する治療や、TAVI/TAVRも排除できませんが、一般的に EVTとは PAD (Peripheral Arterial Disease: 末梢動脈疾患)に対するものに限定されます。主な対象疾患は、閉塞性下肢動脈硬化症 特に、重症虚血肢 (Critical Limb Ischemia)、腎血管性高血圧症、内頚動脈狭窄症による一過性脳虚血性発作/脳梗塞症が挙げられます。
***項目*** 現在当科で行っている医療機器治験 ---内容--- 医療機器、特に循環器病分野の医療機器は急速に進歩しています。これにより以前は胸を開いての開心術でしか、あるいはそれ以前には薬物療法でだましだまし何と切り開くことなく)にカテーテルを用いて治療することが可能となってきました。この急速な医療機器の進歩をもたらしているのが、治験なのです。当科では、冠動脈内薬剤溶出性ステント、冠動脈内生体吸収性薬剤溶出性スキカテーテル左心耳閉鎖術など多数の最先端治験を実施しています。
***項目*** ペースメーカーなどの植え込み術 ---内容--- 現在では年間 200例を超える患者さんに対して、ペースメーカー植え込み術、ICD/CRT/CRT-D植え込み術を行っております。以前に体内式ペースメーカー植え込み行わえ込み電極が感染した場合に、電極を抜去して新しい電極を植えねばなりません。しかし、植え込みが長年経過していると、電極は心筋に強く接合しており、その抜去にはレーザーで癒着組織を剥離する必要があります。これを行うのが、エキシマレーザーを用いた植え込み電極レーザー抜去術でありますが、当院では神奈川県下でも数施設しか無い、施行の認定を受けており、他の施設からも抜去依頼を多数受けております。

要するに http://www.kamakuraheart.org/index.html を読み込み、その中からある特定の tagがついた部分を切り抜いたのです

でも一番参考となったのは、venvによる Python仮想環境の作成でした この過程では TA (Technical Assistance)の方々にお世話になりました

勉強会は 13:00に開始し、17:00で終了 その後小一時間会場で色々な雑談を行い、それから茅ヶ崎駅から近い居酒屋で二時間ぐらい歓談しました とても楽しかったです でもやっぱり僕がダントツにおじいちゃんでしたよ 一番若い参加者は現在大学生の 20歳ぐらいの方で、アルバイトでプログラムを書いている、という本格的な IT engineerでした 参加者の平均年齢は 35歳ぐらいでしょうか 以前参加したこのような会よりも少し年齢が高い印象でした

それにても茅ヶ崎駅に以前行ったのは うーん 20年ぐらい前でしょうか 随分と発展しているのに驚きました それでも人の流れが随分と少なくなった、ということでした

申し込みをして、実際に行くまで「参加するか」「キャンセルするか」と思い逡巡しました 昨日の会参加直前にも迷いに迷いました 一番恐れたのは「自分が参加して皆の足をひっぱるのでは?」という恐れでした しかしビルの屋上から飛び降りるような覚悟で参加してみてとても良かったです 決して知り合うことは無いであろう方々にも知り合うことが出来ました これからも思い切って参加したいと思います