またまた Haskellに迷わされ

さて本日は順調にTAVIが進んでいます 僕自身も 1st operatorとして EvolutProを用いて一例あっという間に治療終了しました 完璧なできでした

さて、その間に頭脳の一部、というか手技の合間に Haskell programmingを考えています 相変わらずとても難しい あの例の、「すごいHaskellたのしく学ぼう!」という有名な書籍で始めた勉強も途中 20%程度進んだところで暗礁に乗り上げてしまいました 何が何だかさっぱり理解できない

そこで今度はこの有名な入門書から、日本人が書いた本「Haskell入門 – 関数型プログラミング言語の基礎と実践」に切り替えたのです

もちろん最初から読み始めたのですが、そうすると前の本で勉強した部分も再び読むので何となく理解が進みます でもやはり暗礁に乗り上げたのです 現在、

$ghci

あるいは

$stack ghci

というコマンドで GHC interpreterを走らせてテストしているのです どうしてもうまく行かない!!

Prelude>:{
Prelude>|f x = case x of n | n `mod` 2 == 0 -> putStrLn "even"
Prelude>|                 | otherwise -> putStlLn "odd"
Prelude>|:}

これで compile errorが出るのです!! ちなみにそのエラー内容は

:40:3: error: parse error on input ‘|’

というものです まさかまさかと思ってやってみました 今度はこのように入力したのです

Prelude> :{
Prelude| f x = case x of n | n `mod` 2 == 0 -> putStrLn "even"
Prelude|                   | otherwise -> putStrLn "odd"
Prelude| :}

そうすると何とエラーが出ずに

Prelude>f 10
even
Prelude>f 9
odd

となり作動しました 要するに”|”という縦棒までの文字数が上下で同じでないとエラーになるのでした 何でもこの縦棒のことを”ガード”と呼ぶらしいです これで論理構造を表すのですね 何だか Pythonのインデントのようです でもここに辿り着くのに30分かかりました 何しろ Kindle本ではこの部分縦棒が揃っていないのですから・・・

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

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

$brew update
$brew upgrade

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

PowerPointで複数の動画を同時再生するには? その(3)

さて複数動画再生手順の最終段階です 02と01とかややこしいので 新たに動画ファイルを4つ配置しましょう こんなふうになります

動画ファイルを4つ配置

ここで「再生メニュー」を見るとこのようになっていますね

初期状態

さてここで「自動」と「停止するまで繰り返す」を選択します このようになります

「自動」などの選択

これを今の場合四つの動画ファイル全てに適用します そうするとこんなふうに四つの動画ファイルの左上隅に「0」が出てきましたね

わーあぃっ Zeroが並んだ

今度はこの Zeroのどれでもいいから double clickして下さい そうすると突然こんなふうに右のパネルが出現し、時計アイコンが縦に並んでいますね

新たな時計パネルの出現

今度はこの中のどれでも良いので 3時時計アイコンをクリックして下さい そうするとこんなふうにサブメニューが出てきました

サブメニューの出現

このサブメニューの「タイミング」を選択すると・・・・

タイミングを選択すると・・・

はい出てきました これが動画再生タイミング選択Dialogなのです ずいぶんと深い階層にあるのでなかなか到達できないのですねっ ここで今「直前の動作の後」になっていますが、これを「直前の動作と同時」にします

直前の動作と同時 を選択

そうするとあらあら不思議、3時時計アイコンが消えました

3時時計アイコン消滅

この操作をそれぞれの動画ファイルをクリックして行います 今三番目の動画ファイルをクリックし、03の左側にある 3時時計アイコンをクリックしたのですが、そうするとまた「タイミング」メニューが出てきましたね このメニューで「直前の動作と同時」を選択します

直前の動作と同時 選択

これを四つの動画ファイルそれぞれに対して行います 行う毎に 3時時計アイコン子が消えていきます 結果こんなふうになりましたね

最終形態

はい奇麗に 3時時計アイコンが消えました ここで Slide Showして下さい はいっ 見事に四つの動画ファイルが自動で同時再生していますね これ良いのです

ただ、このメニューの下にずらずら「開始のタイミング」というのが縦に並んでいますよね これは何なのでしょうか? プログラミングを趣味としている人間としては、このような疑問を大切にします 試しに01のところの矢印をクリックすると あれあれ「タイミング」サブメニューが出てきました

タイミング・サブメニュー

ここは defaultで「クリック時」になっていますので、このサブメニューが有効であれば、動画ファイルをクリックせねば再生しないことになります しかしながら、それよりも 「3時時計アイコンの消失」という事象の方が作用として強いので、結果的にこの「タイミング」サブメニューは無意味なのです ですから、これを選択して、右上の赤いペケアイコン つまり✕ をクリックして消してしまいましょう こんなふうになります

動画ファイル再生タイミング2つ分を消したところ

全部消すとこんなふうにタイミングも「直前の動作と同時」となり見かけも奇麗ですね ここは美学の問題ですよっ

お~っ 美しい

この状態で Slide Showして下さい はいっ 見事に四つの動画ファイル自動同時再生の出来上がりです

ちなみに、このブログに Upするためにデモを実際に Powerpointで行ったのですが、 MacOS Mojave 10.14.3 で Powerpointは Microsof® PowerPoint for Mac/Version 16.23/Office 365サブスクリプション です しかしながら基本的にほぼ全ての PowerPointで動作すると思いますよっ ちなみに、こうして作成した PowerPointですが、 .pptxで Saveしたファイルは動画ファイルを内部に包括しているので、たとえば Windows 10マシンでも動画自動同時再生できます この時に注意するのは、動画の Formatであり、先に upしたように適宜 Format Factoryなどで動画Formatを変換して下さい ちなみに僕のオススメは、.mp4、.mpgあるいは .movです 最悪は .aviです またこの先人生 Windows 10で過ごすつもりならば、.wmvも圧縮率高く良いですが、Macでは動画再生できない可能性があります

はいここまでお疲れ様でした 皆様方の華麗なるプレゼンのお役に立てれば幸いです

PowerPointで複数の動画を同時再生するには? その(2)

さてここまできちんとやられれば、2つの動画ファイルが左右に並んだ状態で「再生」をクリックしてから、左右のファイルをクリックすれば、どちらのファイルに対しても以下のようになっていますね

2つのファイルでも「再生」クリックすれば

さて、これだけでは Slide Showにしても2つの動画自動再生とはなりません ここからが重要です

今この状態で動画ファイルを見ればこんなふうになっています

現在の状況動画ファイルは普通です

ところがここで「アニメーション」メニューをクリックすると あれあれ不思議 動画ファイルの左上隅に何やら出てきましたね

「アニメーション」クリック前

これが「アニメーション」クリックすると

「0」と「雷マーク」が出てきた

なんだか「0」と「雷」マークが出てきましたね こうなればしめたものです ここでこの「0」と「雷」マークをクリックして下さい そうすると 今度は右のパネルが出現し、このようになっていますね

あれあれ不思議

こうなればしめたものですよっ 重要なのはこの部分です

この部分が重要です

このパネルの「01」とか「02」は今無視して下さい 僕が動画ファイルを並べた順が右側からにしてしまいましたので、この順番になっていますがどうせ「同時再生」するので関係ありません

PowerPointで複数の動画を同時再生するには? その(1)

Powerpointを用いてシネ画像などを2つ並べて再生する場合がよくありますよね この時なかなか簡単には複数の動画を同時に再生することができなく、しばしば画面上でクリックして次の動画を再生することになります

さてこれをどう解決すれば良いでしょうか? ようやく見つけたのです 公開しましょう

試しに 2つのシネ動画像を並べます まずその前に動画には色々な形式があります そしてややこしいのは Windows10とか MacOSあるいは iOSなどの OS毎に受け入れる動画の種類が異なるのです もちろんこの差異は有償の plug-in softwareを購入することで補間されどの OSでも作動するようになるのですが、現段階で .wmv (Windows Media Video)形式は、Windows10に対して最適化されていますが、MacOSでは作動しませんし、.mov形式は MacOSに最適化していますが、Windows10では動作しません 安全なのば .mp4形式か .mpg形式だと思います 間違っていればごめんなさい .mpgというのは MPEGという標準化団体が定めたものであり、多分どの OSでも大丈夫です

あとよくあるのが .avi形式ですが、これは圧縮率が良くないのでなるべく他の形式に変換しましょう

さて変換するにはどうするか? ですが、Windows10であれば、フリーソフトでとても優れたものとして FormatFactoryというのがあります ググればすぐにヒットします とても良く、使いやすいソフトなので僕はもっぱらこれを使用しています ほとんどあらゆる形式の動画に相互変換可能です 素晴らしい

さて Macではどうするか? ですが、多分 QuickTimeで変換可能だと思います やったこと無いので知りません あしからず

まずは Powerpointの画面に、フォルダより目指す動画ファイルを一個でも二個でも drag and dropします そうして奇麗に並べればこのようになります

Dran and Dropした動画二枚

次にそれぞれの動画をクリックするとメニューに出てくる「再生」をクリックします

「再生」が出てきたよ

この「再生」をクリックすると下に次のような選択項目が出現します

ビデオの開始や終了の指示

ここで「自動」と「停止するまで繰り返す」をクリックします

自動と停止するまで繰り返す

ここまでの操作を右に並べた動画でも繰り返します 行ったならば一旦ファイルを Saveして下さい

焦ったあ – 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が作動中ですよっ

代数的データ型

何やら訳も分からずに使っていた data という型ですが、これは代数的データ型 という特別な「型」なのだそうです

それを実現しているのは Preludeという Haskellの Interpreter/Compiler system GHCiに付属する標準的なライブラリー (この呼名で正しいのか知りません)のようです 何だかさっぱり分かりません つまり

data Human = Human String derived Show

というのは data型から発生したHumanを定義して、それはString型の変数を持ち、Showという性質を引きずる ということのようです

ものすごく曖昧な理解です とにかく難しい

すぐ忘れるmysqlコマンド

折角ターミナルで $mysqlと打ち込めば mysqlが CLI (command line interface)で立上るようになったにもかかわらず数日使わないとすっかりコマンドを忘れていました そこで自分で良く使うものをここに書いておきます

## mysql を 「ユーザー名」で立ち上げる うまく立ち上がると passwordを要求される
$mysql -p -u ユーザー名

## mysqlに既に登録されているデータベース一覧を表示
mysql> show databases;

## 「そのデータベース」を使用する
mysql> use そのデータベース;

## 「そのデータベース」のtable一覧表示
mysql> show tables;

## 「そのデータベース」の「そのtable」のフィールドを一覧表示
mysql> desc そのtable;

## mysqlを終了する
mysql> quit;

 

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デモページ