久しぶりに brew update/upgradeしてみたら・・・

Haskell systemを upgradeしようとしてまずは Homebrewで

$brew update
$brew upgrade

してみたのです そうしたらば、gccの upgradeで異様に時間がかかり、一見すると停止したように見えたのです しかしながら terminalの表示では compilerが作動しているように見えます。20分ぐらい待ったのですが埒あかないので検索したところ同じような経験された方のページがありましたので、それを参考に今しばらく待っていたところようやく先に進み終了しました。良かった

焦ったあ – MacBook Proのカーソルコントロールが効かなくなった!!

日立から深夜というか早朝鎌倉に戻った後も JICA報告会、部下の結婚式、治験相談などに明け暮れあっという間に時間が流れ、昨日は神奈川PTCA研究会101回目の記念講演がありました その前に聖マリアンナ医科大学で院内ライブを行う機会がありましたが、もう10年ぶりのことでした とても優秀なスタッフだと感じました 皆さん方に感謝です この写真は良い思い出です

聖マリアンナ医科大学の皆様方と

そして本日はこれから神戸に講演に向かっています

さて、昨日聖マリアンナ医科大学から一旦講演前に鎌倉に戻るタクシーの中でファイルを操作していたのですが、MacBook Proの動作が急におかしくなったのです 突然カーソルコントロールができなくなり、止む無く再起動するにも Cmd+Tabによりアプリを切り替え、既に立ち上がっていた Terminalに移動してそこで

$sudo shutdown -r now

とせねばならなくなったのです これには焦りました だって講演スライドを最終型に持っていく最中でこんなことが起こったのです 再起動すれば治るかなと思っていたのですが、何回か再起動しても立ち上がるのですが、やはりカーソルコントロールが効かず操作不可能となり駄目です

頭をめぐらし色々と考えました「原因は何か? ソフトかハードか?」「ソフトだとすれば、TimeMachineからリカバリーせねばならないが、それを行っている時間はあるか?」「ハードだとすれば、新たに MacBook Proを購入せねばならないがそれも時間がかかる」「まずは講演のことを考え、なんとか Terminalを用いて出来上がり寸前のファイルを USB Memoryにコピーして、そのファイルを Windows10で立ち上げよう」 そのように結論しました つまり

$cp ~/Documents/[講演ファイルのパス] /Volume/[USB Memoryのパス]/[ファイル名]

とすれば良い筈です

そんなことを頭を巡らし考えている内に病院についたので、また MacBook Proを立ち上げたのですが、今度はなんの問題も無くカーソルも動作するのです 快適です なんだか原因分からないけどうまく今は動いているのでいいやっ と作業を行い 18:00に講演会場に向かいました

ところがその移動一時間の間再び MacBook Proを立ち上げるとまたまたカーソルコントロールが効かなくなったのです 再度立ち上げ直しても同じです さあ困った これでは講演できません

ここであり得る原因を考えました どうもおかしい カーソルの権限がなにかに乗っ取られている これはどういう場合に起こるか? それを考え、一つ思いあたりました 自分のバッグに BlueTooth Mouseがあるのですが、もちろんその電源は普段切っています もしも、このマウスの電源が入ったならば、そして MacBook Proとそのマウスが BlueTooth圏内にあれば、そのマウスがカーソルコントロール権限を取得するのでは? これが仮説でした そして次第にその仮説が正しいだろうと思うようになったのです 何故ならば講演会場に座り、その時は僕のバッグは離れた場所に預かってもらっていたのですが、その時には MacBook Proは正常に作動したからなのです

そしてバッグを取り寄せ、マウスを確認したところ、やはり電源が Onになっていたのです 電源を Offにしたところ、全く問題なく MacBook Proは作動しだしたのです 解決です

思えば最近 MacBook Proを使用していてえらく CPUが作動していたり、カーソル反応動作が遅くなっていたり最近変な現象に遭遇し、そろそろ OS clean installせねばならないかな? などと思っていたのですが、その原因は何と BlueTooth Mouseの電源を無意識に Onにしているためだったのです 今はとても快適に MacBook Proが作動中ですよっ

MacBook Pro/MAMP mysqlにパスを通すには?

MacBook Proで Laravelをいじっています 直接 MySQLにコマンドを発行せねばならない場面があり、これまで直接 MySQLをいじくっている時には、phpMyadminを立ち上げ、その中で SQLを発行していました

しかし、これは本来のやり方ではなく、本来的には MySQLコマンドを用いるべきです しかし、MAMPを使用している時にこれをどのようにすれば良いのかさっぱり分かりませんでした 金沢に移動する新幹線の中、この中は長野から富山の間は電波が通じず、インターネットアクセスに難儀するのですが、何とか調べました
$ code ~/.bashrc ## ホームの.bashrcを編集します

そしてここからは visual studio codeの中ですが、そこで以下の文を最後に追加します
export PATH="$PATH:/Applications/MAMP/Library/bin/"

そして terminalに戻りもちろんこれを叩いて反映させます

$ source ~/.bashrc

これで直接ターミナルから mysqlと打ち込めば mysqlを動作することができます 便利ですね

Laravel を MacOSにインストール – つづき

さてようやく MacOS上で composerがインストールできました というか既に何ヶ月か前にインストールしていたのに忘れていたのです

そもそも composerは何か? と言えば、phpを用いて web programを書くときに必要な諸々をサクッとインストールしてくれる便利な小槌と思えばいいのです まず行うことは

$ cd ~/target-folder/

とすることにより、目標とする target-folderに移動します

次いで

$ composer create-project "laravel/laravel=5.5.*" projectName

とすることにより、Laravel version 5.5一式をこのフォルダにインストールします これは大量のファイルをダウンロードしますので数分間かかりますよっ

$ cd projectName

とすることにより今作成したプロジェクト・フォルダに移動します そうすると artisanという phpで書かれたコマンドがこのフォルダには既にインストールされていまので、

$ php artisan --V

とすれば、僕の場合には
Laravel Framework 5.5.44というものが戻ってきました 実はこの artisanというプログラムは local serverを立ち上げるものであり、これで local serverを立ち上げるとその後 Laravelでプログラムを開発する時に面倒なことを考えずにできるのです

$ php artisan serve

これで local serverが  ip address = 127.0.0.1, port = 8000で立ち上がりましたので、ブラウザのアドレス・バーで localhost:8000とするかあるいはhttp://127.0.0.1:8000と打ち込めば見事 Laravelのデモページが立ち上がります

Laravelデモページ

Laravel再開

一度は挫折した Laravelに再度チャレンジです Macでインストールするのと Windows10でインストールするのでは大分やり方が異なるようです

Windows10では まずは XAMPPをインストールした方が良いようですね それでは まずは Macから ここは Terminalでの作業になりますね

まずは composerのインストールです これは簡単ですよ
$brew install composer

ところがここで以下のような膨大なエラー出現しました

==> Downloading https://getcomposer.org/download/1.8.0/composer.phar
######################################################################## 100.0%
Error: parent directory is world writable but not sticky
Please report this bug:
  https://docs.brew.sh/Troubleshooting
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/tmpdir.rb:93:in `mktmpdir'
/usr/local/Homebrew/Library/Homebrew/utils/fork.rb:28:in `safe_fork'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:743:in `build'
/usr/local/Homebrew/Library/Homebrew/formula_installer.rb:317:in `install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:326:in `install_formula'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:256:in `block in install'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:254:in `each'
/usr/local/Homebrew/Library/Homebrew/cmd/install.rb:254:in `install'
/usr/local/Homebrew/Library/Homebrew/brew.rb:88:in `'

こんなことで慌ててはいけません 何だか rubyで書かれた Homebrew管理プログラムが色々とシステムに書き込もうとする時に「それは越権行為だ!」というようなエラーですね こういう時は Google叔父さんに聴いてみます 検索したのは

Error: parent directory is world writable but not sticky
Please report this bug:

というものですが、そうすると早速このページにヒットしました これに従い$ sudo chmod +t /private/tmp
$ sudo chmod +t ~/Library/Caches/Homebrew
とすると Treminalからは何の返答もありませんが、再度 $brew install composerと打つと

==> Downloading https://getcomposer.org/download/1.8.0/composer.phar
Already downloaded: /Users/transradial/Library/Caches/Homebrew/downloads/5f21a93cda75f6de1acae0850021a00add848552341d23d14aa9e6afc17de4dd--composer.phar
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/composer
Target /usr/local/bin/composer
already exists. You may want to remove it:
  rm '/usr/local/bin/composer'

To force the link and overwrite all conflicting files:
  brew link --overwrite composer

To list all files that would be deleted:
  brew link --overwrite --dry-run composer

Possible conflicting files are:
/usr/local/bin/composer
==> Summary
🍺  /usr/local/Cellar/composer/1.8.0: 3 files, 1.8MB, built in 2 seconds

というように何だか インストールされたみたいです ただ、僕の場合には既に composerがインストールされているのでそれを修正した方が良いよ と出ているようですので、この指示のとおりに$ rm '/usr/local/bin/composer'
$ brew link --overwrite composer
$ brew link --overwrite --dry-run composer
とすると見事にアンイストールできました そして今度は Laravelのインストーラーをインストールするために

$ composer global require "laravel/installer"

とすると 何やらたくさんのファイルが downloadされて インストール準備段階に入りました

実はこの段階でこのインストーラーなどのパスを通さねばなりません それで

export PATH="$PATH:$HOME/.composer/vendor/bin"

という一文を ~/.bashrcの最後に書き加えねばなりません これには vimとか visual studio code (VisutalStudio Code = VS Code)を用いねばシステム領域の書き換えはできませんので、

$ code

とコマンドラインから VS codeを立ち上げようとすると何と以下のエラー出現

/Users/transradial/.pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/1.2.6/libexec/pyenv: No such file or directory
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory

さあ困った そこで、今度は”/usr/local/Cellar/pyenv/1.2.6/libexec/pyenv”で Google検索するとすぐにここにヒットしました この指示のとおりに

$ pyenv rehash

としたところ解決し、VS codeをコマンドラインから立ち上げることが可能となりました 要するに pyenvという python仮想環境が少し破壊されたので、それを自己修正したのですね さて、このようにそと VS codeでパスを無事通し、それを現在のコマンドラインに反映させるために

$ source ~/.bashrc

したところ、無事

$ laravel --version
Laravel Installer 2.0.1

となり さあこれで laravelをインストール可能となりました

さて、今度は Windows10でも行いたいと思いますが、こちらは仮想サーバーを別に立ち上げねばならないのかな? それとも php artisanコマンドで十分なのかな? 未だ検証していません これからの楽しみですが、時間があるかなあ???

意外や意外 できない!

先の postですが、Chromeブラウザを立ち上げるのには、MacOS上の terminalで

$open -a Google\ Chrome

とせねばならない、と書きました そして、これを単に chromeという名前で立ち上げるにはきっとリンクを貼ればいいのだ、とか書きました この時点で本気でリンクを貼れば解決すると思ったのですが・・・・

実はリンクを貼り、そのリンク先(エイリアスとも呼びますね)に実行権限を与えればいいのだろうと考えていたのです そこで

$ln -s /Applications/Google\ Chrome.app /Applications/chrome.app

としてシンボリック・リンクを貼り、実行権限を与えるために

$sudo chmod 777 /Applications/chrome.app

としたのです これで先の open -a /Applications/chrome.appとしましたが、そんな実行ファイルはありません と叱られてしまいました

ここで暗礁に乗り上げ分からなくなりました 駄目だ

こっ これは便利だ – ChromeやFireFoxをコマンドラインより起動する

Visual Studio Codeを editorにして JavaScriptの勉強をしているのですが、なかなか思いどおりに行きません

何が思いどおりにいかないか? と言えば JavaScriptプログラム単独を走らせるのは

$node sample.js

などのようにすれば、sample.jsというプログラムが走ります そしてこの場合の出力は console.log( )で書き出し、consoleに出力します

しかし、JavaScriptと言えば、やはりブラウザとの連携です そして DOMの操作です、そうなると 例えば index.htmlをブラウザ立ち上げてその中で JavaScript fileを読み込んで走らせる、そのような運用になります ところが、いちいちこれをブラウザより行うのは面倒です どうにかして VS Code内部でできないのか? と色々考えたり、調べたりしてついに見つけました

Chromeの場合には

$open -a Google\ Chrome index.htm

FireFoxの場合には

$open -a firefox index.html

これで良いのです 実は Safariの場合には

$open -a safari index.html

これで一発で該当するブラウザでそのページが開かれ、そして JavaScriptが走ります なんて便利なんだろう

しかし、Chromeだけ Google\ Chromeとせねばならないのは許しがたいですね この場合、リンクを貼るしか無いでしょう

ヘルシンキから神戸 そして WSL

WSLという言葉をご存知でしょうか Windows Subsystem for Linuxのことです

Microsoftは数年前より急速に Open Softwareに舵を切り替え、その代表として WSLという仕組みを開始したのです これは Windows10というこれまで Microsoftを支えてきた OSの中に Linuxという Open Softwareの OSをシームレスに走らせる仕組みです

もちろんこれまでに Windows10の上では、VirtualBoxや、VMWareといった有名な仮想マシン、あるいは Dockerなどのコンテナと呼ばれる仮想マシンの小型版がフリーで走っていました しかし、VirtualBoxや VMWareは Windows10の中に新たにコンピューターシステムを立ち上げるもので、マシンに対する負荷が大きいものでした

これに対して WSLというのは Windows10 OSの上に Linuxの APIを emurateする型で Linux OSを立ち上げるものです ここいら辺に関しては僕も知識がいい加減であり間違ったことも言っていると思いますので、それぞれが調べて下さい 何れにしても WSLを立ち上げたのです

その方法はネットで検索すると色々出てきますが、僕の場合、このサイトに従いました 少なくとも 2018/SEP/13の最新 Windows10 version 1803においてはこれで正しくインストールできます

とは言うもののこのサイトの後ろ半分に書かれている内容はかなり高度なものであり難解です とりあえず僕はここまで つまり、<Hyper の設定 for WSL>という部分まで行い結果的にこのような画面となりました

Linux (Ubuntu) on Windows10
Linux (Ubuntu) on Windows10 on MacOS

さて昨日は成田空港から羽田空港に移動し、伊丹空港に飛び、それから神戸の高橋病院に入りました そこで三例のPCIを行わせて頂きました

楽しく過ごしました

こんなの見つけました

Appleのファイル構造に興味を持つようになりました きっかけは HorliX Dataというフォルダを探していて、それが一般に分からない場所に設定されていることを見つけたことにあります

そして、サンドボックス (SandBox)という一般から隠蔽され、自由にアクセスできない領域について知りました やはりこれも Appleがプログラマ向けに公開している文書なのですが、内容難しいですねえ でも、何処かで見た xml文書構造の例を発見しました

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Move</key>
   <array>
      <string>${Library}/AppSandboxQuickStart/MyConfiguration.plist</string>
      <array>
         <string>${Library}/AppSandboxQuickStart/MyDataStore.xml</string>
         <string>${ApplicationSupport}/AppSandboxQuickStart/MyDataStore.xml</string>
      </array>
   </array>
   <key>MigrateScriptsForApplication</key>
   <string>AppSandboxQuickStart</string>
</dict>
</plist>

あれっ、この構造 何処かで見ましたよね そうです albumファイルの構造です あひゃーっですね

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (6)おまけ

先の (5)の記事を書いていて馬鹿なことを考え試しました それは「同じ Apple IDであれば、何回かは別の Macに downloadして走らせることが通常できる」

だとすれば、「やはり Apple IDでインストールする iPadにも同様にインストールできないのか?」

という妄想です

それで試して見ましたが、そもそも iPadに Apple Storeでは HorliXは検索しても出てきません やはり Apple側も macOSと iOSは兄弟のようなものであっても、Application側でプラットフォームを識別してインストールできるかできないかを判定しているのですね

当たり前じゃない いやいやどんな小さな疑問でもそれが前に進んでいく動機となるのですよ

あととても重要な指摘です DICOM dataというのは重要な個人情報です ですから、やはり cloud上にそのままの形式のファイルを uploadするのは問題あるかと思います また、個人の MacBook上に蓄えている場合、その個人MacBookのログインに関しては、慎重にして下さい 簡単なパスワードだけでは危険です

もっとも DICOM Fileの中から個人情報データのみ削除すれば良いと思います 具体的には、生年月日、患者氏名、患者ID この3つを削除すれば良いと思います

DICOM formatでは、.XA ないし .dcmという拡張子のついたファイルから構成されていますが、この一つのファイルの中に、これらの個人情報が全て書き込まれています ちなみに、それらの情報は単なるテキスト・データですので、テキスト・エディタで開けば簡単に読むことができます

ちなみに、僕の MacBook Proの中の一つの .dcm fileを強制的にテキスト・エディタ VS Codeで開いてみましたところ、下記のような xml formatで出力されました

<dict>
  <key>albums</key>
  <array>
    <string>MassyCTO2012</string>
  </array>
  <key>patientID</key>
  <string>Dr SAITO Dr CHEVALIER</string>
  <key>patientUID</key>
  <string>ZEI...A, 40 YEARS OLD  CTO 2012-DR SAITO DR CHEVALIER-********</string>
  <key>patientsName</key>
  <string>ZEI...A, 40 years old  CTO 2012</string>
  <key>stateText</key>
  <integer>0</integer>
  <key>studyInstanceUID</key>
  <string>1.3.46.670589.28.26540597965520120310121759799988</string>
</dict>

この症例が、僕が Chevalier先生を助手として Massy, Franceの CTO courseで治療したということが一発で分かってしまいますね もちろん、それぞれの .XAや .dcmファイルの大部分は圧縮画像データである バイナリで構成されていますので、その部分はテキスト・エディタでは読むことができません

従って、簡単なスクリプト・プログラムを書いて、個人情報部分に ****** などの文字を書き込めば確実に個人情報が削除されますので、たとえあなたの MacBookが盗まれたとしても個人情報漏洩、という観点からは安全となります

簡単なプログラムです その内書いて公開しますね 今はとりかかる時間がありませんので失礼