Ajax synchronousの威力

先週木曜日から土曜日と神戸国際会議場および展示場において、CCT 2019が開催されました。あいにくの雨でしたが、企業協賛がありそれなりに人は集まっていました。

その初日夜に、さくら会 高橋病院において鎌倉ライブ臨時実行委員会を開催しました。ここで、例の Ajax async: false を実際に多量データ入力で用いたのです。まるて field testingでした。

結果は? ばっちりでした。やはり僕の予想したように、これまでのつまづきは、Web Browserが非同期で動作していたからなのです。ここでの「非同期」の意味は、Browserの main threadが、各プログラム単位の関数の戻り値を待たずに、その要求を Queに置くだけで、さっさとプログラムを次のものに変更していく、そんな意味です。これは見かけは turn overが早く、ユーザーは待たされません。

しかしながら、必要なデータを受け取らずに次のプログラムユニットに移行してしまう、ということなので、databaseより適切なデータもらう場合にはまずいことになるのです。そこで、同期が必要なのです。つまりmSec単位で戻り値を待つのです。

これを行ったところ、懸案の web databaseとのやりとりでのデータ欠損問題は全て解決しました。ものすごい威力です。データ入力が本当にスムーズに動作するようになったのです。

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かどうかを判定する、という方法がありますね

MySQLで DateTime fieldにおいて、年と日付のみ変更する方法

さてそろそろ鎌倉ライブの Web Siteを更新せねばなりません 結構なプログラムが仕込んでありますが、鎌倉ライブのプログラム(予定表)そのものが非常に flexibleですので、Web programmingも結構苦労するのです

2018年のデータを活用するつもりなのですが、これは MySQL databaseに取り込まれている2018年のデータをコピーすれば良いのですが、そこで フト悩んだことが

session_tbls2019の中のbeginTimeというDateTime fieldにコピーされた 2018年データ:: つまりは、”2018-12-15 09:30:00″というようなデータをどうやって2019年データ::つまりは、”2019-12-14 09:30:00″という本年の正しいデータに変換すれば良いのか? これってなかなか難しいですね でも調べました、その結果はこうです SQL文で以下のようにするのです

UPDATE `session_tbls2019` SET `beginDate` = (`beginDate` + INTERVAL -1 DAY);
UPDATE `session_tbls2019` SET `beginDate` = (`beginDate` + INTERVAL +1 YEAR);

これで年と日付が更新されました 便利ですねえっ

WordPressで隠し文章を記録

WordPressでの文章で、ちょっとした trickを思いつきました もう少し暇があれば、Javascriptを用いて動的に画面を作成できるのですが、色々なことを勉強せねばなりません

ここで記載する trickといのは WordPressの文章で cssを用いてあるブロックの文章を表示しなくするのです これと jQueryを組み合わせればボタンをつけてそのボタンにより表示・非表示を切り替えることもできますね

cssはかんたんで style=”visibility: hidden; height:0px;” とするだけなのです でもこれって隠し文章を記録するのに便利ですよっ

Haskellに惑わされ – 11: 鎌倉ライブデモンストレーションHome Page改修作業に着手

何時の間にか 8月も真ん中になってしまいました これまでのんびりと構えていたのですが、そろそろ鎌倉ライブデモンストレーションHome Page (https://www.kamakuralive.net/)の改修作業に着手せねばなりません。

ただ改修するのも進歩が無く面白くありませんので、今年は Bootstrap > 4.0で組み直すつもりです。もちろん jQueryも version upですね。本日ようやく着手しましたが、web programmingは久しぶりなので色々なことを忘れてしまい出発点まで自分を戻すのが大変です。

では何をこれまでその代わりにしていたかって? 例によって Haskellです こんな良い本を見つけたのですが、読んで行くにつれ難解になります。どうしてこの computer languageはこんなにも難しいのでしょうか?

この本は10年以上前に出版され、現在は入手できませんので、中古品を購入するしかありません。幸い、とても安価でしたので助かります。内容は不親切ながらも良く書けていると思います。しかし難しい

ふつうのHaskellブログラミング
ふつうのHaskellブログラミング

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

難問解決

半年ぐらい前から急に公共WiFiへのインターネット接続ができなくなりました その原因が分からず困っていたのです

具体的には例えば ANA Loungeで WiFiルーターとは接続できて Macにはこのようなマークがついているのです

おなじみのWiFiマーク

それにもかかわらずブラウザを開いてもログイン画面すら出ないのです ですから、せっかくの公共WiFiに接続できず、仕方なく、自分の iPadでテザリングをしていました そこで今朝思いついたことを試しました それは Google博士に以下の問い合わせをしたのです「フリーwifeが見れなくなった」その結果、色々ヒットしてその中のこのページを読みました

これで解決したのです 具体的には iPadでこのベージに移動して そのトップの窓をクリックすると URLが分かりますね

そして、そのURLの部分から https://www. –> http://www. にしたものをMacのブラウザに打ち込んだのです これで解決しました それ以降はインターネット・アクセスが回復しました

これってようするに security強化のためなのですが利便性は著しく障害されましたね

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