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が盗まれたとしても個人情報漏洩、という観点からは安全となります

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

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (5)HorliXはどのように入手するのか?

HorliXのアイコン – カッコいいね

HorliXの白い天馬のアイコン とてもカッコいいですね さて、一番肝心なことを忘れていました

HorliXはどのように入手するのか? とても簡単です

Macの左上隅の Appleマークから App Storeを選択します そして「検索窓」で HorliXと打ち込みます

そうするとこの様にすぐにヒットしますので、HorliXのアイコンをクリックすれば良いのです あっ、僕は既に10,000円で購入していますので、「開く」という選択ボタンになりますが、あなたの Apple IDでこのソフトを未だ購入しておられない場合には、10,000円のボタンが出てきます 何れにしろ OsiriX MDの二年間ライセンスが 100,000円超と比較するとものすごい安価ですね

ちなみに、隣の DCM Viewerというものがどんなものか良く知りません 開いてみるとこんなでした これは DICOMファイルの色々なことの確認用のソフトであり、いわゆる Viewerとしては動画も見れないものだと思います 胸部レントゲン写真などの静止画精査用のものですね

さて、ここで疑問です 何故  HorliX Dataはログインした個人の /Users/*****/ 配下、つまり ~/ というフォルダの下に無いのでしょうか?

ここからは僕の推測ですので余り信じないで下さいね 見方を変えれば これって、iPadや iPhoneのように MacOSではなく iOSのようにも見えないですか?

そもそも iOSはもともと Unixの派生である OSXという現在の macOSの前身から派生したものです ここらについてはここ とか ここ を読んで下さい 難しい記事ですが、特に後者は秀逸です 流石に Appleが書いた記事ですね

この iOSのファイル構造 この中に /Library/ Container/ というディレクトリがありますが、これって 要するに HorliX Dataが入っているディレクトリですよね

これはこれまで macOSのデータなどは /Application/ というフォルダ (= ディレクトリ)に入ってきたのと比べると随分と異なりますね 何故そうなっているかは知りません しかし、言えることは 確実に iOSに近い、ということです

何でしょうかねえ やはり securityの関係でこうなっているのでしょうねえ

またこの話題はここまでにしておきましょう 真相は Appleしか回答できない筈ですので・・・・

Macの高機能DICOM Viewer/Analyzer : HorliXの紹介 (4)HorliXに読み込まれた DICOM dataはどうなっているのか?

さてここで疑問があります OsiriXのデータはこれまで「書類」フォルダ つまり Unixの表示であれば ” ~/Documents/”というフォルダに “OsiriX\ Data”という名前で保存されていました

そして HorliXに読み込んでしまえば、この OsiriX\ Dataというフォルダは削除しても大丈夫なのです

あれ? 肝腎のDICOM dataは何処に行ったの? バックアップするにはどのフォルダをコピーすれば良いの? そんな疑問と不安に苛まれませんですか? でも大丈夫安心して下さい 僕が解明しましたのでその情報をここで公開します

でもここから先はターミナルを扱える中級者以上が対象です

ずばり DICOM dataは以下のフォルダに存在します それは、

~/Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data” という名前で

~/Library/Containers/info.phazor.HorliX/Data/Documents/”というフォルダ内に存在します

つまり意外や意外 通常一般人がアクセスする「書類」、「デスクトップ」、「ピクチャ」あるいは「ミュージック」というフォルダには存在しませんです しかも、一般人も時々アクセスする「プリケーション」フォルダにも存在しないのです!!!

どうやってこれが分かったのですか? と疑問に思いませんでしたか? それは自分自身の Unixの知識で解明したのです OsiriXのデータが OsiriX\ Dataというフォルダにあるのであれば、HorliXのデータは HorliX\ Dataというフォルダにあるだろう そのように当たりをつけて検索しました もちろん Unix commandです

$find ~/ -name HorliX\ Data

これでHome folderから検索しましたが出てきません ということはホーム・フォルダには存在しないのですね!!!! 通常個人ファイルはそのユーザーのホームに存在するのですが、そうなっていないのです!!! これは驚愕の事実でした

仕方ないので、検索範囲を拡大したのです

$find / -name HorliX\ Data

このようにして Mac全体から検索かけたのです とても時間のかかる検索であり、ずらずらと大量の結果が出力されますが、その中に先の

find:/Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data

という出力を発見しました 何とこんなフォルダに存在しているのです これは驚きです

ここまでの解明された知識を基としてこの重要なファイル群 (僕の場合、何と 1998年 9月28日のPCI症例データから保持しているのです PCI症例といっても、これまで何万人の治療を行ってきてその中でも印象に残っている症例や症例報告に用いた症例、あるいは外国でのライブで行った症例などの特別な症例だけです 何れにしても、これは僕の人生の一部 何と20年間の僕のカテ人生、といっても本当の僕のカテ人生は、1976年に始まりましたので、40年間余りのカテ人生の半分近い人生 それが詰まっているのです・・・・ 涙 涙 うわーあんっ)をバックアップするにはこのようにします

たとえば外付けHDDの名前を BACKUP2TB とかつけたとするとまずは、この HDDの中に HorliX\ Dataという名前のフォルダを作ります

$ls /Volume/

とこのようにすれば、外付けディスクの名前が分かります この場合、

BACKUP2TB/      Macintosh HD0/     com.apple.TimeMachine.localsnapshots/

にように出力されます これでこの外付けHDDが BACKUP2TBという名前でマウントされていることが確認できますので次にフォルダの作成です

$sudo mkdir /Volume/BAKUP2TB/HorliX\ Data

これでBACKUP2TBディスクの中に HorliX Dataというフォルダが管理者権限でできました でもこれだけではコピーできません 何故ならば権限が与えられていないからです つまり所有者は管理者 rootだからなのです

$sudo chown ***** /Volume/BACKUP2TB/HorliX\ Data/

とすることにより私 つまり *****がこのフォルダの所有者となりました これで初めてバックアップ可能となります その方法は rsyncという Unix commandを使用するのです

$rsync -av --delete /Library/Containers/info.phazor.HorliX/Data/Documents/HorliX Data/ /Volume/BACKUP2TB/Horlix\ Data/

と打ち込むのです これで全データがバック・アップされます また、新たなDICOM dataが HorliXデータベースに読み込まれていくと思いますが、時々上記の rsyn commandを走らせば、新たな DICOM dataが追記されていき、もう HorliXより削除したデータは backupの /Volume/BACKUP2TB/から同様に削除されます 便利ですねえ

どうですか? 少し難しかったですか? 何ならばシェルスクリプト書きましょうか? シェルスクリプトであれば、自動的にできますもんね