データベースをスマホに移殖する

termux および mariaDB をインストールしたスマホで、サーバー内のデータベースの最新テーブルを、自動的に取得するためのスクリプトです。

スマホ(ローカル)のローカルIP:127.0.0.1

サーバー(リモート)のIPアドレス:nnn.nnn.nnn.nnn

データベース名:ddddd(dddddは vocabulary と keyword という2つのテーブルを持っています。)

ユーザー名:サーバーのユーザー名、DBのユーザー名ともに uuuu

 

1)まずデーモンの二重起動を防ぐために、もしmysqldが走っていれば kill します。そして、mysqld&でバックグラウンドでデーモンを起動しなおします。デーモン起動とmysqlの起動が近い場合、しばしばエラーが発生しました。sleep文を挟んだり、デーモン起動と同期をとったりした方が良いかもしれません。

 

2)次に、ssh でサーバーに接続しmysqldumpを実行します。id_rsa.server という秘密鍵ファイルを用いてログインしています。

 

3)スマホの一時ファイルディレクトリ .../tmp へ、 scp を使用してダンプファイル *.sql をコピーします。

そして、mariaDB に対して *.sql を標準入力することによりテーブルを更新します。もしエラーが有ればエラーファイルに書き出されます。

 

4)エラーファイルが存在すれば termux:API の termux-notification に処理が移り、警告音とポップアップが表示されます。

 

5)最後に要らなくなったファイルを消去して、デーモンを kill して終了します。

#!/bin/bash
local_host="127.0.0.1"
remote_host="nnn.nnn.nnn.nnn"
DB="ddddd"
USER="uuuu"
error="/data/data/com.termux/files/home/error.txt"

# デーモンの初期化
kill `pgrep mysqld`
mysqld&

# データベース本体のダンプ
ssh ${remote_host} -l ${USER} -i ~/.ssh/id_rsa.server \
 "mysqldump ${DB} vocabulary > /home/user/work/DBback/vocabulary.sql;\
mysqldump ${DB} keyword > /home/user/work/DBback/keyword.sql"

# データベースのコピー
tmpdir="/data/data/com.termux/files/usr/tmp"
scp -i ~/.ssh/id_rsa.server \
 ${USER}@${remote_host}:/home/user/work/DBback/keyword.sql ${tmpdir}
scp -i ~/.ssh/id_rsa.server \
  ${USER}@${remote_host}:/home/user/work/DBback/vocabulary.sql ${tmpdir}

mysql -h ${local_host} -u ${USER} ${DB} < ${tmpdir}/keyword.sql 2> ${error}
mysql -h ${local_host} -u ${USER} ${DB} < ${tmpdir}/vocabulary.sql 2> ${error}

# エラー処理 if [ -s ${error} ] then cat ${error} |\ termux-notification \ -t "cn_copy.sh" --icon error exit fi # 終了処理 rm ${error}
rm ${tmpdir}/keyword.sql rm ${tmpdir}/vocabulary.sql kill `pgrep mysqld`

 

f:id:S_E_Hyphen:20201213160309j:plain

 

スマホでデータベースを持ち運べるようになりました。

 

めっちゃ赤い

 2020年11月上旬以降の大阪府下における新型コロナ患者の増加に伴い、同年12月3日に大阪府知事より「医療非常事態宣言」が発出されました。

 大阪府独自の「大阪モデル」では

(1)市中の感染拡大状況

(2)新規陽性患者の拡大状況

(3)病床のひっ迫状況

の3つの観点から判断を行っています。例えば2020年5月7日に公表された休業要請緩和基準では(1)感染経路不明者1日10人未満、(2)PCR検査の陽性率が7%未満、(3)”重症病床”使用率が60%未満、になれば要請を解除して「緑信号」を灯すとされました。

 

 この大阪モデルに従い、5月7日当初黄色にライトアップされていた通天閣は5月14日に緑信号が点灯したのですが、その後の感染者数漸増により7月12日以降再び黄信号に移行し、その状態が4ヶ月以上継続していたところです。そして重症病床使用率が70%を超える見込みが確実となったことから、この度の非常事態宣言が発出されることとなりました。初めての「赤い通天閣」の出現に、大阪の街は薄気味悪い違和感が漂っています。

f:id:S_E_Hyphen:20201205165926j:plain

 

なお、2020年12月4日時点の(1)感染経路不明者数は216.7人、(2)陽性率は9.3%となっています(いずれも7日間平均)。

上海で行きたい場所

追手門学院大学アジア学科編「上海アラカルト」(ISBN:9784757605152)を読んでみて興味を持った場所を備忘録的に...。

 上海アラカルト (和泉選書) | 追手門学院大学アジア学科 |本 | 通販 | Amazon

 

新世界商城

総合娯楽施設の老舗です。中国語で歓楽街のことを「红灯」というらしい。赤信号も「红灯」なのですが。

 

永安公司

同じく老舗のデパート。1918年開業というから日本なら大正年間の創業になります。

 

洋上深水港・东海大桥

コンテナ船のために建造された巨大洋上港と、それに接続する全長32.5kmの橋です。厳密には上海市内ではないのかもしれない。

 

上海老站

鉄道駅かと思えばレストランなのだそうです。

 

来年は行けるといいなぁ。

简体字フォント

日本語と简体字が同一コードの場合、フォントファミリーを指定しないと思い通りの文字が出てくれないみたいなので、色々なフォントを指定してみました。 

font 中国語
指定なし
微软雅黑
宋体
DengXian
fangsong
font 中国語
指定なし
微软雅黑
宋体
DengXian
fangsong

f:id:S_E_Hyphen:20201128161726p:plain

マイクロソフト系ブラウザのスクリーンショット

マイクロソフト系のブラウザでは微软雅黑(Microsoft Yahei)か宋体(SimSun)を使っておけば良さそうです。Android系では、未だうまくいってないようです。

おでん

朝から600CCの水に出汁昆布2グラムと干しシイタケ2ヶを漬けて、出汁をとっておきました。

f:id:S_E_Hyphen:20201127155809j:plain

 

1ヶ100グラム程度のジャガイモを圧力鍋で蒸します。10分くらい蒸しました。蒸しあがると、皮も簡単に剥くことができるようになります。

f:id:S_E_Hyphen:20201127155918j:plain

 

事前に取っておいた出汁にレードル3杯強の返し醤油を加え、ジャガイモ3個、厚揚げ3枚、ゆで玉子1個を煮込みます。

f:id:S_E_Hyphen:20201127160628j:plain

 

今夜は熱燗をつけることにしましょう。

ロジクールBluetooth®マルチデバイス キーボードK380

f:id:S_E_Hyphen:20201119105209j:plain

ロジクールBluetooth®マルチデバイス キーボードK380を購入したので、Andoroid端末との初期接続時の覚え書きを記します。

向かって左奥の色違いの3つのキー(F1~F3)をEasy-Switchキーと呼ぶのだそうですが、説明書にはこれを3秒押せとしか書いてません。何の事だかわからず、しばらく時間を要したのですが、Andoroid端末側の設定(歯車マークです)からデバイス接続→bluetoothを選んでいるときにEasy-Switchキーを押すと「使用可能なデバイス」欄にk380が表示されます。タップしてやると...

f:id:S_E_Hyphen:20201119105949j:plain

Bluetoothペア設定要求画面が現れます。なんだこりゃと思ってマゴマゴしていると接続が切断されてしまいます。大急ぎでペアリングコードをk380で打ち込んでやるとペアリングが確立されます。その際、入力中のペアリングコードはどこにも表示されません。Andoroid側からすれば、ペアリングが確立されるまではk380はまだ他所の人だからでしょうね。

 

f:id:S_E_Hyphen:20201119110447j:plain

Androidホーム画面のキーボードマークを(手で)タップしてやると入力方法の選択が出ます。これはk380とは別問題。そこでGboardのような多言語入力を選択しておいてやると、k380の[半角/全角漢字]キーで日本語入力が可不可を切り替えることができます。その時に仮想キーボードの表示をOFFにしておくと、ディスプレーの大部分の面積をソフトキーボードに占領されなくて済むようになります。

 

f:id:S_E_Hyphen:20201119110901j:plain

さらに日本語入力可能時に、k380左下の方にある[スタート/alt opt]ボタンとスペースキーを同時に押すと事前に「キーボードの言語とレイアウト」で設定しておいた他国語に切り替えが可能になります。

なお、一般的なファイルの保存にあたる ctrl + s は半角の状態でないと効力を示さないようです。

また、F4はホームボタンの機能、F5はタスク切り替えボタンの機能(トグル)、F6は広告の非表示の機能が設定されているみたいだけど、よくわかりません。

 

ソフトキーボードよりは使いやすいですが、PCの代わりとして使用できるようになるまでは少し時間が掛かりそうです。

 

termux-dialogを使ってみた

termuxAPI は無料でインストールできます。termuxのターミナルから apt などを利用してインストールする方法と、Google play などからインストールする方法が有りますが、両方やっておきました。

termuxAPI はAndroid端末の機能を色々利用することが可能ですが、ここでは特に簡単な termux-dialog を試してみます。

 

ラジオボタン

$ termux-dialog radio -t "選択してください" -v "いちご,りんご,すいか,メロン"

 これだけで、簡単にラジオボタンのフォームが作成出ます。

f:id:S_E_Hyphen:20201114111336j:plain

{
  "code": -1,
  "text": "りんご",
  "index": 1
}

出力はJSON形式なので、 jq コマンドを用いて加工可能です。

 

テキスト(数値限定)

一番よく使うのはテキスト入力だと思いますが、数値入力限定にすることも可能です。 

$ termux-dialog text -t "IDで選択してください" -i "数字を入力" -n

数値入力用のキーボードしか現れませんから、間違っても文字入力ができません。

f:id:S_E_Hyphen:20201114112712j:plain

{
  "code": -1,
  "text": "22",
  "index": 1
}

 「22」と打ち込んでOKボタンをタップした際の出力です。

 

テキスト入力(通常)

$ termux-dialog text -t "中国語を入力して下さい" -i "请填写中文" 

f:id:S_E_Hyphen:20201114113126j:plain

{
  "code": -1,
  "text": "东京奥运会",
  "index": 1
}

むしろ、パソコンからの入力より簡単な印象すらあります。

 

日付

こんなのもあります。

$ termux-dialog date -t "日付を選択してください" -d "预订yyyy年MM月dd日"

f:id:S_E_Hyphen:20201114113500j:plain

{
  "code": -1,
  "text": "预订2020年11月22日",
  "index": 1
}

出力のフォーマットを指定できるので便利です。

 

リストボックス

多量の選択肢が有る場合「リストボックス」のようなフォームも使えます。

$ value="くだもの,スポーツ,乗り物,事務用品,人間関係,個人情報,動物,地名,地形,天候,家具,感覚,数え方,施設,植物,楽器,職業,菓子,身に着けるもの,身心,電化製品,類型語, 食品,食器"
$ termux-dialog sheet -t "キーワードを選択してください" -v "${value}"

f:id:S_E_Hyphen:20201114114042j:plain

 スクショでは少し分かりにくいですが、上下にスクロールできるようになってます。

{
  "code": 0,
  "text": "地名",
  "index": 7
}


termuxAPIを使用することで、Android端末用アプリを簡単に作成することができるようになりそうです。