jQuery libraryの読み込み判定

jQueryや bootstrapは CDNよりそのソースコードを読み込むのが常道です。これには理由があり、まず CDNはライブラリ読み込みに最適化されているので、自分のサーバーから読み込むよりも早い、そしてCDNより読み込めば プログラムの置かれている階層によらず読み込み先を変更する必要が無い、というものです。

ただ、localhostでインターネット接続せずにプログラムを書いていると CDNから読み込めずにプログラムが作動しなくなることもあります。localhostで開発している時にはこれでは困ります。そんな時に、インターネット接続しているか否かで自動判定すれば助かります。そのコードとしては、

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script>if (jQuery) document.write('<script src="lib/jquery.js"><\/script>');</script>

としたり、あるいは jQueryが既に読み込まれているか否かの判定として以下のようにするか

<script>window.jQuery||document.write('<script src="lib/jquery.js"><\/script>');</script><

とするか、あるいは phpを走らせて

<?php
  if ($_SERVER['SERVER_NAME'] === 'locallhost'
?>

として localhostかどうかを判定する、という方法がありますね

.bash_profileが反映されない!!

先日来 terminalの挙動がおかしくなっていました それは根本的には .bash_profileが反映されない、というものでした
したがって、たとえば composerにより laravel/installerをインストールしても、それが反映されないのです。正確に言えば、もっと訳の分からない挙動を示していいたのです
つまり、

$composer global require "laravel/installer"

として MacOSに Laravel installerをインストールします。そうすると bashの設定ファイル ~/.bash_profileの最後にきちんと以下の一文が書き込まれます

export PATH="/Users/******/.composer/vendor/bin:$PATH"

これにより terminalを再起動すれば、その部分も読み込まれ

$echo $PATH

とすれば、きちんと環境変数 PATHに追加されている筈です!

ところが、これが反映されないのです 何でだ??? もちろん

source ~/.bash_profile

として明示的に.bash_profileを読み込ませれば反映されますが、そうせねば反映されないのです。これは bashが壊れたか? とまじに思いました。

しかし、発見しました ネットでは見つけられなかったので誰か困っている方もおられると思いますのでここに記録しておきます。

ターミナルのメニュー
ターミナルのメニューから環境設定を選択する
環境設定メニュータブからシェルを選択
環境設定メニュータブからシェルを選択
シェルタブ選択すねると、「シェル無いで実行」というチェックボックスがある
シェルタブ選択すねると、「シェル無いで実行」というチェックボックスがある

このチェックボックスをチェックするとシェル内で新たなまっ更なシェルが立ち上がる感じで、~/.bash_profileが読み込まれません!!!

なんとなんとこんなオプションがあったなんて!!!

 

ようやく前に進めました

入門Haskellプログラミングを読みながら Haskellの勉強を未だに続けています 何回も何回も挫折の連続ですが、ようやくサンプル・プログラムが作動しました

 

— $stack ghci addressLetter.hs で読み込む
— そして以下のようにこの関数を呼び出すと出力が適切に変化する
— *Main> addressLetter (“Bob”, “Jones”) “sf”
— “Bob Jones – PO Box 1234 – San Francisco, CA, 94111”
— *Main> addressLetter (“Bob”, “Jones”) “ny”
— “Bob Jones : PO Box 789 – New York, NY, 10013”

  

addressLetter name location = locationFunction name
  where locationFunction = getLocationFunction location

  

sfOffice name = if lastName < “L”
                then nameText
                  ++ ” – PO Box 1234 – San Francisco, CA, 94111″
                else nameText
                  ++ ” – PO Box 1010 – San Francisco, CA, 94109″
  where lastName = snd name
        nameText = (fst name) ++ ” ” ++ lastName

  

nyOffice name = nameText ++ ” : PO Box 789 – New York, NY, 10013″
  where nameText = (fst name) ++ ” ” ++ (snd name)
renoOffice name = nameText ++ ” – PO Box 456 – Reno, NV 89523″
  where nameText = snd name

  

getLocationFunction location = case location of
                               “ny” -> nyOffice
                               “sf” -> sfOffice
                               “reno” -> renoOffice
                               _ -> (\name -> (fst name) ++ ” ” ++ (snd name))
  

このようなプログラムです 本からコピーしましたが、HaskellではPythonのようにインデントにも論理的に重要な意味があり、それを間違えると作動しませんし、compileもできません 何回はねられましたが最後に動作しました 出力例もコメントに記載しています

だいぶん頭脳が 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に詳しい方教えて下さい