IToTの覚え書き

マイクロビット、アルドゥイーノ、ラズベリーパイなどで楽しい道具を作る趣味のサイトです。 基本的に自分用の覚え書きです。

本の場所検索システムを作っていて家のサーバにColdFusion と SQL Serverまでデプロイして作ったが、そんな必要はなかった
家にサーバが無くても、その代わりにグーグルスプレッドシートを使えばいい。
イフトからA1に本のタイトルが入る。スペースをとるために
B1=SUBSTITUTE(SUBSTITUTE(A1," ","")," ","")
とおく。
G列に本のタイトル、H列に場所を書き入れる。
C1=match(B1,G1:G32,0)
とおいて何行目かを検索する
D1=indirect("R"&C1&"C8", false)
とおいて本の場所を書き入れる
E1=B1&"は"&D1&"にあります"
とおいてGHNに言わせる文を作る。
F1にはそれをURLエンコードした文字をスクリプトで記入して、GHNにURLを送る。

Google spleadsheetのスクリプト(拡張されたjavascript):
function doPost(e) {
var value = e.postData.getDataAsString(); //TextFieldの中身
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange("A1").setValue(value);
value2 = sheet.getRange("E1").getValue();
var value3 = ecl.EscapeSJIS(value2);
sheet.getRange("F1").setValue(value3);
var url = "http://183.77.***.**:50***/?ja="+value2; // アクセス先
UrlFetchApp.fetch(url); // GETリクエスト 元は var response = UrlFetchApp.fetch(url);
}


これだけで、サーバは要らなかった。
どんなにロバストなシステムでも、なくてもすむよりはプニーだ。

いままでFileMakerを使っていた家のサーバを強化しようと思います。

『グーグルホームミニに何かを言うと、IFTTT(トリガーはGoogleAssistant、アクションはWebHook)に行き、GoogleSpleadSheet経由でサーバのFilemakerのWebCompanionに来た後、Filemakerで検索して結果をGoogleHomeNotifier経由で、グーグルホームミニに答をしゃべらせる。』
という仕組みでした。

今まではFilemakerのWebCompanionを使っていて、若干非力でした。
『サーバのFilemakerのWebCompanionに来た後、Filemakerで検索して』のところを
『サーバのIISに来た後、ColdFusion経由でSQL Serverで検索して』にします。

サーバーサイドスクリプトはColdFusionの代わりにASPでもできます
Dreamweverを使えばColdFusionもASPもほとんどソースを書かないでほぼ同じ手順でできます。
でもソースを書かないと自分で書いた気がしません。というか言語を覚えない・・・。
しかもそのスクリプトは、やはり機械が作っただけあって、妙に複雑でまどろっこしいというのもあります。
今回はColdFusionは手書きで書き、ASPはDreamweverを使いました。
タグベースのCFの方がスクリプトのASPより行が短いです。
また今までFMのCDMLに慣れているので、CFMLの方がなじみやすいです。

まず、SQL Serverをインストールします。booksDBというデータベース内にbooksというテーブルを作り、ID、title、placeというフィールドを作ります。
そしてColdFusionをインストールします
ColdFusionは普通、FormPage.cfmでtitleフィールドに本のタイトルを入れると、ActionPage.cfmで変数をFORM.titleで受け取り、本の場所を検索してお知らせするわけです。検索はActionPage.cfm中のcfqueryタグ中のSQL文でwhere title='#FORM.title#'とやればいいわけです。
ですが今回はURLパラメータでtitle変数を渡しますのでFormPage.cfmは使わずActionPage.cfmだけでやります。where title='#FORM.title#'のかわりにWHERE title='#URL.title#'とやります。
IFTTTからActionPage.cfm?title=チャート式化学
と送られてくると
http://192.168.1124/?ja=チャート式化学は机の上にあります
とGHNに送りますのでグーグルホームミニが『チャート式化学は机の上にあります』と言ってくれます。

 

昔はやった倉庫番が懐かしく、最近ひまなときにやってます。
若い人は知らない人も多いと思いますが、1982年シンキングラビットの今林宏行社長自ら開発し、発売したコンピュータパズルゲームです。海外でもsokobanとして有名で
https://www.easyfreeware.com/files/sokoban.zip/9799
など、多数あります。
解けない面があると行きづまりますが答を考えてくれるソフト(sokoban solver)があります。
倉庫番を解く for Windows」からダウンロードできます。
<使い方>
テキストのフォントをMSゴシックにして面のレイアウトを再現します。
# 壁
$ 荷物
. 荷物を置く場所
* 荷物を置く場所にある荷物
@ 番人
それをコピーしてsokoban722.exe(Optionは600sec、1350MBにset)を起動してClipをクリックします。
Solveをクリックすれば答が現れます。
U 上
D 下
R 右
L 左
です。

自分で打つのは面倒な人は、答をコピーした後、倉庫番ソルバーヘルパーを起動したら、自動操作してくれます。

↑このページのトップヘ