■■ 宝宝金属 ■■
給我巧克力!!
捉迷藏
参考:http://rethink-iot.com/2016/06/09/ibm-cisco-access-thingworx-race-iot-edge-analytics/
無線通信での、セキュリティソフトとファームウェアのアップデート
クラウドで分析するために、データを送信する前に事前処理を行い、ネットワークの負荷を軽減する
node.js や PhantomJS(JSCore)がベースの JavaScript エンジンを使ったソフトウェアよりも省メモリで動作する
[HTML5 ユーザーインターフェイス]( node.js 系でアプリ開発)
|
[Chromium ベースの軽量ブラウザ]
|
[独自OS]と[ node.js の実行環境の1つ]と[無線 LAN]
参考: http://www.tutorialspoint.com/nodejs/nodejs_express_framework.htm
■ ハローワールド
ファイル:app.js
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
// app.get('/index.htm', function (req, res) {
// res.sendFile( __dirname + "/" + "index.htm" );
// })
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
■ GETメソッド
ファイル:index.htm
項目入力を作成
フォームの送信先を action="http://127.0.0.1:3000/process_get" にする
ファイル:app.js
public ファイルの公開(ブラウザで直接URLを指定して表示できるファイル)
index.htm の表示
process_get の表示(応答)
サーバーの listen
■ POSTメソッド
ファイル:index.htm
項目入力を作成
フォームの送信先を action="http://127.0.0.1:3000/process_post" にする
ファイル:app.js
urlencodedParser の用意
public ファイルの公開(ブラウザで直接URLを指定して表示できるファイル)
index.htm の表示
process_post の表示(応答)
サーバーの listen
■ ファイルアップロード
ファイル:index.htm
ファイル名を選択(input type="file")
フォームの送信先を action="http://127.0.0.1:3000/file_upload" にする
また、enctype="multipart/form-data" で、POST
ファイル:app.js
bodyParser の用意
multer の用意(ファイルアップロードのモジュール)
public ファイルの公開(ブラウザで直接URLを指定して表示できるファイル)
index.htm の表示
file_upload の応答(POST)
保存先のファイル名を用意
readFile( path, function () { writeFile( file, data, function () {
結果表示
});
});
サーバーの listen
■ クッキー
ファイル:app.js
cookieParser の用意
/ の表示時に、req.cookies で、クライアントから送られたクッキーを取得
サーバーの listen
■ MySQL
参考:https://codeforgeek.com/2015/01/nodejs-mysql-tutorial/
参考:http://atmarkplant.com/nodejs-mysql-basic/
package.json - "dependencies": { - "mysql": "^2.5.4"
npm install
ファイル:app.js
var express = require("express");
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'mysql001.db.com',
user : 'laa0397',
password : 'abcdef',
database : 'laa0397-db'
});
var app = express();
connection.connect(function(err){
if (!err) {
console.log("Database is connected ... nn");
} else {
console.log("Error connecting database ... nn");
}
});
app.get("/control/mysql_responds", function(req,res) {
connection.query('SELECT * from co_person', function(err, rows, fields) {
connection.end();
if (!err)
console.log('The solution is: ', rows);
else
console.log('Error while performing Query.');
});
});
app.listen(3000);
→ 更にプール接続に変更する
■ HTTPS
ファイル:bin/www
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('/var/www/html/homepage/keys/server.rsa'),
cert: fs.readFileSync('/var/www/html/homepage/keys/server.crt')
};
var server = https.createServer(options, app);
■ ルーティング / ビュー / パブリック
ファイル&フォルダ:
routes / index.js、users.js
views / index.ejs
public
render を実行すると、ビューに置かれ編集した HTML を表示する
send を実行すると、データを送信する
■ ボタン押下
ファイル:views / index.ejs
<input name="like" id="like" value="Like" type="submit" /> <input name="count" id="count" value="0" type="text" readonly />
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$('#like').click(function(){
$.post(
'/test',
{name:"ABC", email:"abc@yahoo.com"},
function(data){
$('#count').val(data);
}
)
});
</script>
ファイル:routes / index.js
/* Button click. */
var count = 0;
router.post('/test', function (req, res) {
count += 1;
res.send(String(count));
console.log('works');
});
■ 空きメモリ量
ファイル:views / index.ejs
空きメモリ量<span id="freemem"></span><br>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
setInterval(function() {
$.get(
'/freemem',
function(data){
$('#freemem').text(String((Number(data)/1024/1024/1024).toFixed(3))+' GB');
}
)
}, 300);
</script>
ファイル:routes / index.js
/* Memory information. */
const os = require('os');
router.get('/freemem', function (req, res) {
res.send(String(os.freemem()));
console.log('freemem');
});
■ HTTP プロキシ(HTTPS プロキシ)
ファイル:proxy.js
var http = require('http');
var httpProxy = require('http-proxy');
var url = require('url');
var proxy = httpProxy.createProxyServer({});
var server = http.createServer(function(req, res) {
if (req.headers == null || req.headers.host == null || req.url == null) {
// do nothing
}
else {
var hostname = req.headers.host.split(":")[0];
var pathname = url.parse(req.url).pathname;
if (hostname == 'example.com' || hostname == 'apache.example.com') {
proxy.web(req, res, { target: 'https://localhost:8443', secure: false });
} else if (hostname == 'node.example.com') {
proxy.web(req, res, { target: 'https://localhost:8124', secure: false });
} else {
res.writeHead(404);
res.end();
}
}
});
server.listen(80);
(作成中)
租税回避地を利用しての節税を放置したままで、来年4月の消費税率10%への増税は、ありえないと思いますが、どうでしょう。経過を見守りたいと思います。
2016年5月10日午前3時、公開日
[予想]
日本の多くの大企業、会社経営者、が名前を連ねる。宮内氏かな。
[実際]
公開のウェブページ: https://offshoreleaks.icij.org/
国で探す(Search by country)と管轄で探す(Search by jurisdiction)があって、
前者にて、人名、会社名、住所、を入力して、検索する。
2016年5月、やばそうな情報
Kazuhiko ASAKAWA、AIJ投資顧問
SOKA GAKKAI, INC. (opencorporates から Panama 所在で見つかる)、創価学会
NHK GLOBAL INC.
パナマップ: http://153.120.36.84/
ダウンロードした csv をテキスト検索(Bunkyo)
東京都文京区白山1-33-16 パークコートプレイス 801、1F ネオスタンダード、2F澤田こどもクリニック、3F NiCT、4F NiCT、5F 医療法人社団 同友会、6F NiCT、7F NiCT、8F空き、9F 日本ビル管理保証(株)、9F Grace international Ltd.、PH T.S Investment Ltd.、KIYOTSUGU KAWASAKI
東京都文京区弥生2-4-22、リサーラ東京(有)、MUTO KAZUHITO、塚本和子
東京都文京区白山4-33-21 ライオンズマンション白山 303、TSUSHIMA KOJI
東京都文京区本郷3-15-2 本郷二村ビル、OZAKI SHIGERU
東京都文京区白山5-22-1 コロナビル 2F (〒112-0001、Shiroyama Ichilhara Building)、YASUHIKO ONO
東京都文京区千駄木3-36-8 シルバーパレス千駄木 601、TAKATOSHI KUWAHARA
東京都文京区小石川4-16-13 小石川パークタワー 1705、YASUSHI KINOSHITA、http://www.kinoshita.com/
東京都文京区本郷4-9-25 真成館ビル 604、JASC 日本資産証券化センター、柳川 勇夫、YATSUKI MATSUMI
東京都文京区大塚3-3-14 茗荷谷パークホームズ 901、Hisako Akutagawa
東京都文京区本郷4-12-16 トーア文京マンション 305、WATARU YOSHIKOSHI
東京都文京区音羽1-14-2 三井音羽ハイツ 1303、Masaru Yamamoto
東京都文京区西片2-25-8 モンテベルデ本郷西片 703、Shiro Otomo
2016年5月28日午後10時
来年4月の消費税率10%への引き上げについて、2019年10月まで2年半延期
(作成中)
病床機能報告制度
・電子レセプトへの病棟情報の記録について
入院基本料、又は、特定入院料・その他、にかけて記録する(DPC以外)
・病床機能報告用マスター ファイル仕様説明書
・病床機能報告用マスターファイル(サンプル)(Zipファイル)
診療報酬改定に伴う各種マスターの仕様変更
・医科診療行為マスター
1 項目の変更
(1) 項番 65 が「入院基本料区分(最大バイト2)」から「予備(最大バイト2)」に変更
(2) 項番 117 が「予備(最大バイト3)」から「点数表区分番号(最大バイト30)」に変更
(3) 項番 118 が「予備(最大バイト3)」から「非侵襲的血行動態モニタリング加算(最大バイト1)に変更
(4) 項番 119 が「予備(最大バイト3)」から「凍結保存同種組織加算(最大バイト1)」に変更
2 フラグの変更
(1) 項番 22 の「看護加算」に「68:夜間75対1看護補助加算」と「69:夜間看護体制加算」が追加
(2) 項番 23 の「麻酔識別区分」に「7:臓器移植術加算・~」の追加と「8:術中経食道心エコー連続監視加算」の変更
(3) 項番 24 の「入院基本料加算区分」でコードの変更
(4) 項番 42 の「上限年齢」に「AE:生後90日」が追加
(5) 項番 46 の「処置乳幼児加算区分」に「5:6歳未満乳幼児加算(処置)が算定できる診療行為」等の変更、追加
(6) 項番 63 の「包括逓減区分」に「108:皮膚灌流圧測定」と「109:シャトルウォーキングテスト」が追加
(7) 項番 70 の「地域加算」に「7:7級地地域加算自体」が追加
(8) 項番 72~81 の「施設基準」でコードの変更
3 コメントコードの追加
(1) コード番号 840****** (コメントパターン 40)、標準負担額経過措置(精神)入院 年 月 日
(2) ADL 区分に係る定型コメントコード(コメントパターン 20)
・その他
食事療養標準負担額・生活療養標準負担額のコード変更
医薬品マスターの収載内容一部変更
未コード化特定機材コードの取扱い
記録条件仕様の変更及び記録方法
・包括評価対象外理由レコード
GRレコードの追加、出来高算定理由コード(別表●)の追加
平成28年10月診療分から記録
・病床機能報告の記録
SIレコードを使い、数量データは省略、点数は0を記録する
・その他
国保連固有情報レコード
平成24年3月診療以前分の取扱い
未コード化特定器材の記録に係る文言
日計表レコードの削除
その他文言修正
記録要領と合致していない設定の変更(調剤、SHレコード)
仕事のメールは Gmail を使っています。外出のときは自分の iPhone 6 でメールを確認します。ノートPCを持ち歩くことはあるのですが、ポケット Wifi はみんな持ち出し済みで、無いことが多いです。作業上、誰かにメールで送って貰ったファイルを、ノートPCに移動しなければならないときがあります。
ご存じのように、iPhone 6 の Chrome で Gmail を見ていて、その添付ファイルを、iPhone 6 に保存して加工する、なんてことはできません。特に、zip ファイルは拡張子を zi に変えて添付します。充電用に持ち歩いている Lightning ケーブルで iPhone 6 をノートPCに接続しても、写真ファイルしか扱えません。お金のかかるテザリングは契約しません(例え最初の1年間が無料だったとしても)。
そこで Lightning-USB メモリを購入しました。
Logitec、USB memory for Lightning 16GB、LMF-LGU316GWH
iSmartCopy アプリをインストール。Gmail アプリをインストール(Chrome では不可でした)。メールの添付ファイルをタップ。全画面に表示されたら再度タップ。右上ボタン(アクションボタン)から「iSmartCopy で開く」を選択。iSmartCopy で開いたら、「完了」、「編集」、そのファイルを選択、「移動」、外部ストレージ、「この場所に移動」。以上で、ノートPCのUSBポートに接続して、ファイルを参照できました。
Safari や Chrome でダウンロードした exe ファイル等を、「次で開く」、iSmartCopy を選べば、iSmartCopy の iPhone ドライブへ保存できます。そのファイルを外部ストレージに移動(またはコピー)し、ノートPCのUSBポートに接続して、ファイルを参照できました。
ノートPCからUSBメモリにコピー(または移動)。iSmartCopy の外部ストレージフォルダでファイルをタップ。全画面に表示されたら再度タップ。右上ボタン(アクションボタン)から「Gmail」を選択(無ければ、その他から追加)。メールの宛先や件名を書いて、右上ボタン(送信ボタン)を押せば、ファイルを添付してメールが送信できました。
(追記2016.03.12)
上記方法だと、ファイルを1個しか添付できませんでした。また、文章を、他のアプリからコピーして、メール本文へ貼り付けることができませんでした(バグでしょうか)。
iSmartCopy の外部ストレージフォルダで、「編集」、複数ファイルを選択します。下のメールボタンを押して、iPhone メールで Gmail へメールを出します。そのメール転送して、本当のメールを作成します。
(2016.05.02、iPhone で撮った写真を PC に移動)
覚え難いのでメモ。iSmartCopy アプリの外部ストレージのフォルダを選択。下の+ボタンを押し、ライブラリを選択。フォトアルバムやカメラロールからコピーしたい写真を選択する。
Electron を使えば、標準的な JavaScript で、OS のコントロール API を使ったデスクトップアプリケーションが作れます。ウェブサーバーの代わりにデスクトップアプリケーションで構築した Node.js の実行環境の1つです。
Electron はユーザーインターフェイス(GUI)ライブラリを持つ JavaScript ではありません。代わりに、Electron は、ウェブページをGUIとして使います。JavaScript で制御する最小構成の Chromium ブラウザです。
主プロセス
Electron では、package.json の main スクリプトを実行するプロセスを主プロセスと呼びます。主プロセスで実行するスクリプトは、ウェブページを作り、GUI を表示します。
描画プロセス
Electron はウェブページを表示するために Chromium を使い、Chromium のマルチプロセス機能を利用します。Electron の各ウェブページは自身のプロセスで動作し、それらは描画プロセスと呼ばれます。
通常のブラウザでは、ウェブページはアクセスが制限された環境で動作しており、コンピュータのリソースへのアクセスは許可されていません。しかし、Electron では、ウェブページで、 io.js の API を使って OS の下層レベルの操作が行えます。
主プロセスと描画プロセスの違い
主プロセスは、BrowserWindow インスタンスを作り、ウェブページを表示します。各 BrowserWindow インスタンスは自身の描画プロセスでウェブページを表示します。BrowserWindow インスタンスが破棄されたとき、その描画プロセスも停止します。
主プロセスはすべてのウェブページとそれらの描画プロセスを操作できます。各描画プロセスは独立していて、自分の中で表示しているウェブページのみ操作できます。
ウェブページでは、GUI に関する OS のコントロール API を呼び出すことは許可されていません。ウェブページで OS の GUI を操作することは、大変危険で、容易にリソースをリークするためです。ウェブページで GUI の操作を行いたい場合は、主プロセスと通信する必要があります。
Electron では、主プロセスと描画プロセスの通信を行うために、IPC モジュールを提供します。また、RPC 形式の通信を行うリモートモジュールもあります。
最初の Electron アプリケーションを作成する
Electron アプリケーションは、通常、次のような構成です。
your-app/
├── package.json
├── main.js
└── index.html
package.json の形式は Node のモジュールと全く同じです。main 項目に指定されたスクリプトが、アプリケーションの起動スクリプトであり、主プロセスで実行されます。package.json の例は次のようになります。
{
"name" : "your-app",
"version" : "0.1.0",
"main" : "main.js"
}
main.js はウィンドウを作り、システムのイベントを処理します。main.js の例は次のようになります。
var app = require('app'); // アプリケーションの起動・終了を制御するモジュール
var BrowserWindow = require('browser-window'); // ブラウザを起動するモジュール
// サーバーに障害を報告する
require('crash-reporter').start();
// ウィンドウのグローバルな参照を保存する。そうでなければ、JavaScript が
// ガベージ・コレクション(GC)を実行したときに、ウィンドウが勝手に閉じてしまう
var mainWindow = null;
// すべてのウィンドウが閉じられたとき、アプリケーションを終了する
app.on('window-all-closed', function() {
if (process.platform != 'darwin') {
app.quit();
}
});
// Electron がすべての初期化処理を完了し、ブラウザウィンドウを作る準備ができたときに、
// 呼び出される
app.on('ready', function() {
// ブラウザウィンドウの作成
mainWindow = new BrowserWindow({width: 800, height: 600});
// アプリケーションで index.html を表示する
mainWindow.loadUrl('file://' + __dirname + '/index.html');
// DevTools を開く
mainWindow.openDevTools();
// ウィンドウが閉じたときに呼び出される
mainWindow.on('closed', function() {
// ウィンドウの参照を削除する。マルチウィンドウのアプリケーションを作っている場合は、
// 通常、配列にウィンドウを格納しているので、
// ここで、それら要素を削除する
mainWindow = null;
});
});
最後に、index.html は、表示するウェブページです。
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
We are using io.js <script>document.write(process.version)</script>
and Electron <script>document.write(process.versions['electron'])</script>.
</body>
</html>
作成したアプリケーションを実行する
(作成中)