カテゴリー
PHP SQL ただの現状記述 (Daily Activities) インターネット一般 (Internet General) プログラミング (Programming)

昨日よりぶったまげました

いやあ 昨日この現象に気づきました 原因精査にもう一杯一杯となってしまったのです 色々な懸案事項をそっちのけで原因究明に身も心も取られてしまいました

しかし、突然閃きが起こり全て解決しました。それは西暦年号が当然ながら現在は 2020年であり、2019年ではないからだったのです。

現在、鎌倉ライブデモンストレーションの Home Pageにアクセスして例えばコメディカル・セッションを覗いて下さい

そうするとこんなふうにもぬけの殻状態のページが見えるでしょう

もぬけの殻のページ
もぬけの殻のページ

我ながら最初にこの画面見た時、「あーっ、とてつもなく良くないことが起こっている、ページを乗っ取られたのかな」と頭の中が真っ白でした。冷静になり、local serverで動かしても同様なのです。これはおかしい、サーバーを乗っ取られたのであれば、ローカルでも同じ現象が出るのはおかしい、そのように考えました。

そして今朝、シンガポールでコーヒーを飲みながらテストしていて気が付きました。それは kamakuralive.net全体の設定ページに仕込んである次の一文です

$this_year = date('Y');

これにより例えば 次のSQL文が発行され、データベースからデータを読み込むのです

$stmt = $pdo->prepare( "SELECT * FROM `session_tbls2019` WHERE `class` = 'com' AND `year` = '" . $this_year . "' ORDER BY `sessionNo` ASC;" );

要するに、プログラムを時間経過から独立させるために、わざわざ $this_yearという変数を設定し、それを用いているのです。

当然のことながら、現在の date(‘Y’); という文は、’2020’を返します。従って、それに従う SQL文ではデータが無く、空白となるのでした。つまり年号が 2019年から 2020年に変わった途端に見かけ上データが表示されなくなるのでした。でもこれっていいことですね。昔のページが自動的に消失するに等しいのですから・・・

カテゴリー
PHP ただの現状記述 (Daily Activities) インターネット一般 (Internet General) コンピューター (Computer) プログラミング (Programming)

知らなかった

さて、MySQL databaseより UTF-8で文字コード化されているデータを取得し、それを .csv形式で出力するこにより、Excelで読み込みたいと思っているのです。

しかし、先日 uploadしたようにこれはなかなかの難物なのです。普通にやれば必ず激しい文字化けで使い物になりません。ようやく、local database/serverで走らせて文字化けしないようになりましたが、これを Internet Serverに uploadして走らせると、HTTP ERROR: 500という訳の分からないエラーが出て走らないのです。

そこで検索して、かろうじてこのページにヒットしました。これによれば、サーバー処理で時間がかかったりメモリーを消費したりしてエラーが出るようです。ここに書いているように

set_time_limit(600); 
ini_set('memory_limit', '2048M');

この二行を書き加えることにより見事に解決しました。

カテゴリー
Ajax インターネット一般 (Internet General) コンピューター (Computer) プログラミング (Programming) 日本国内 (Japan Domestic) 神戸 (KOBE)

Ajax synchronousの威力

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

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

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

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

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

カテゴリー
Ajax Javascript インターネット一般 (Internet General) プログラミング (Programming)

並列処理と並行処理

何となくもやっとしていたのが今朝このブログを読んで少し理解しました いやあ難しいですね非同期処理は

カテゴリー
Javascript jQuery PHP インターネット一般 (Internet General) コンピューター (Computer) プログラミング (Programming)

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

カテゴリー
SQL インターネット一般 (Internet General) コンピューター (Computer) プログラミング (Programming)

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);

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

カテゴリー
インターネット一般 (Internet General) プログラミング (Programming)

WordPressで隠し文章を記録

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

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

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

カテゴリー
Haskell インターネット一般 (Internet General) プログラミング (Programming)

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ブログラミング
カテゴリー
Mac ただの現状記述 (Daily Activities) インターネット一般 (Internet General) コンピューター (Computer) 日本国内 (Japan Domestic) 神戸 (KOBE)

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

カテゴリー
ただの現状記述 (Daily Activities) インターネット一般 (Internet General)

難問解決

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

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

おなじみのWiFiマーク

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

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

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

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