マイブーム@技術と生活

仕事や生活に関わる技術的なことを記述します。

Nintendo Switch 予想

Nintendo Switch 初公開
2016年10月20日 日本時間 23:00
【初公開映像】Nintendo Switch(ニンテンドースイッチ) - YouTube

 

CPU:
 NVIDIA Tegra X2、Pascal世代
 世界中の誰も作れないデバイスがターゲット
 2016年05月16日
 http://www.4gamer.net/games/049/G004964/20160530012/

 

OS:
 iOS
 2016年10月13日
 Appleのティム・クックCEO来日 日本語でツイート、任天堂訪問も - ITmedia ニュース

 

タッチスクリーン:
 有り_◎
 2016年10月21日
 A Deep Dive on LPVG’s Nintendo Switch Reports and Info | LetsPlayVideoGames.com
 2016年10月27日、10点マルチタッチ、720p_◎、6.2インチ_◎
 Nintendo Switch has a 6.2" 720p multi-touch screen • Eurogamer.net

 

カメラ:
 有り
 2016年08月05日
 http://www.digitimes.com/news/a20160805PD205.html

 

NFC ID カード:
 e-Shop で購入したゲームやキャラクターが、他人の Switch でもダウンロードできるようになる
 リーク2016年11月4日
 http://www.itechpost.com/articles/49921/20161104/nintendo-switch-rumor-region-free-bundles-game-titles-retail-price-leak.htm

 

ハードウェア:
 イヤホンジャック
 2 USB ポート(ドック正面)
 ゲームカード
 キックスタンド
 +、-ボタン
 アミーボ
 ×1920×1080 修正→ 1280×720_◎
 6.2インチ=WiiUと同じ_◎
 ドックに置いたとき、小画面が消え、その内容は大画面に表示される。ドックに置かないで、小画面は別の内容を表示し、タッチ操作して使うこともできる。

  Real Arcade Pro SW 2017/01/11リーク

 

  

テクノロジー:
 テッセレーション

 

ローンチタイトル:
 ゼルダ
 スプラ2
 マリオカート
 3Dマリオ
 スカイリム
 NBA 2K14(バスケットボール)
 ドラクエ11
 ポケモン(2016年09月20日、ポケモン、任天堂の次世代機「NX」向けにゲーム開発へ - WSJ

 

値段:
 35,000 円 (または、49,800円?)_×
 2017年11月14日
 $329.99、26,213円(レート79.436018)_×
 Nintendo Switch - Nintendo - Toys"R"Us
 Wii U は 32,400円

 

 

発売日:
 2017年3月17日、リーク2016年11月2日_×
 https://twitter.com/LaurakBuzz/status/793947481574780928

 

居心地の良いコーヒーショップ

【 判断基準 】
Wi2Premium が使える
静かで、ゆっくりできる
トイレに余裕がある

 

本郷三丁目本郷三丁目東:
 ドトール(電源あり)
 サンマルクカフェ(電源少しあり)

千石:
 フレッシュネスバーガー
 デニーズ(朝食・石窯ブール、7SPOT)

神保町:

 ドトール(電源あり)
 × マック(人が...)

小川町:
 ドトール

巣鴨
 サンマルクカフェ(平日BF1が良い、壁際だと寄りかかれる、電源なし)
 タリーズ(atre free wifi

春日:
 サンマルクカフェ(席少なめ)
 マック(MCD、電源あり、1時間で切れるが再起動すれば使用可能)
 ジョナサン(朝食6:15)
 Littlewood(wifi弱い、電源1か所あり)
 × 珈琲庵(Wi2使えず)

千駄木
 サンマルクカフェ(席少なめ、トイレ混み)

湯島:
 ドトール

秋葉原
 アトレ・スターバックス(4F、スタバ wifi より Wi2 のほが良い、電源あり)
 △ 駅東口ベローチェ(通信が不安定)

御徒町
 昭和通りドトール(電源なし)
 秋葉原御徒町ベローチェ(2F窓際電源あり)

池袋:
 シアトルズベスト(1F、電源あり)
 ベローチェ南池袋(電源あり、非ウォシュレット)
 × タカセ(wifiなし)
 × モリド(wifiなし)
 × イタリアントマト(wifiなし)
 × サンシャイン・ドトール(B1F、wifiあるが狭い)
 × サンシャイン・タリーズ(1F、wifiなし)

飯田橋
 タリーズ(電源あり)
 神楽坂ベローチェ(電源あり)
 珈琲館(電源2口あり、壁際は圧迫感がある)
 トヨタスターバックス(スタバwifi
 × ベッカーズカフェ(softbankのみ)

日暮里:
 × マック(MCD通信が不安定、電源あり)
 ×エクセルシオールカフェwifiなし)

神田:
 ベローチェ鍛治町店

田端:
 マック(Wi2、電源あり)

日比谷:
 ドトール

江戸川橋
 ドトール(電源あり)

京橋:
 ドトール(1Fに電源あり)

 

駒沢大学前:
 ベローチェ
 × ドトールsoftbankのみ、1Fに電源あり)

三軒茶屋
 ドトール(窓際、電源なし)
 × サンマルクカフェ(wifiなし、電源あり)

  

 

 

ポケモン GO: Google クラウドで、ポケモンがいる、本当のパラレルワールド(並行世界)を作った

勉強のために日本語訳します。

Google Cloud Platform Blog: Bringing Pokémon GO to life on Google Cloud

2016年9月29日(木)

ルーク・ストーン、顧客信頼性エンジニア主任

エンジニアとしてのキャリアの中で、ユーザーが数百万となる、いくつもの製品の配信に関わりました。比較的長い時間で計画された新しい機能や仕組みの変更に、通常、ユーザーは、数か月かけて、徐々に夢中になります。

作成中。

MongoDB の使い方

https://mlab.com/

MongoLab のホームページより、
[SIGN UP]からユーザー登録(user、account)やパスワード(password)を設定します。

届いたメールのリンクから作業を進めます。

MongoDB Deployments、Create new
Amazon's US East (Virginia) Region (us-east-1)

Plan:
 Single-node
 Sandbox
を選んで、無償で使えます。

Database Name:
user-account-administration
Create new MongoDB deployment

データベースを作成した後、データベースユーザー(Database Users)を作成します。 

 

データベースへの接続:
const MongoClient = require('mongodb').MongoClient;
var db;
MongoClient.connect('mongodb://myname:mypass@ds999999.mlab.com:88888/database-name', function(err, database) {
  if (err) return console.log(err);
  db = database;
});

 

SELECT文:
    db.collection('quotes').find( { user:'abcde' } ).toArray(function(err, result) {
      if (err) return console.log(err);

      if (result.length > 0) {
        req.session.user = result[0].user;
        req.session.description = result[0].description;
        return next();
      }
      res.send('接続に失敗しました。');
    });

 

UPDATE文:
          db.collection('quotes').update( { user:'abcde' }, { $set:{description:'あああ'} }, function(err, result) {
            if (err) return console.log(err);
          });

 

INSERT文:
  db.collection('quotes').save(req.query, function(err, result) {
    if (err) return console.log(err);
    res.send("データベースに保存しました。");
  });

 

 

ポケモン Zリング

ほとんど話題になっていませんが、「ポケモン Zリング」なるものが発売されるようです。

TAKARA TOMY

2016.11.18(金)
ポケモン サン・ムーン」と同時発売!

ゲームと連動する「ポケモン Zリング」をキミの腕につけよう!

Zワザの迫力をリアルに体感!

Zワザに、音、光、振動でシンクロ! 4D体感!

価格:2,600円+税

※「デンキZ(黄色)」以外のクリスタルは別売です。 ※画像はイメージです。

 

3DSと連動とは、Bluetooth Low Energy だろうか
ポケモンGOプラスと同じ?しかし 2,600円

to react simultaneously to the devastating Z-MOVES in the video game with sounds, lights and vibrations! 音、光、振動で、ゲームの強力な Z ムービーと同時に反応する

Bring the battle play to life by pressing the button on the Z-RING to experience the different colors, lights and vibration with each Z-CRYSTAL! それぞれの Z クリスタルを使い、様々な色、光、振動を感じ、Z リングのボタンを押して戦闘を実際に体験する

Two AAA batteries are required and included with the set. 2つの単4型乾電池が同梱

 

今遊んでいるゲームのポケモン
ポケモン サン・ムーン』につれていける!
ニンテンドー3DSダウンロード専用ソフト『ポケモンバンク』が
この冬以降、『ポケモン サン・ムーン』に対応してつながるぞ!※
※ヴァーチャルコンソールも今冬対応予定

ポケモンGOも対応する?

 

ポケモンGO、世界の熱狂

ニューヨーク(米国)

  https://www.youtube.com/watch?v=MLdWbwQJWI0

  https://www.youtube.com/watch?v=eh2w1KQCmRw

ベルビュー、ワシントン州(米国)

  https://www.youtube.com/watch?v=mZcUFHCYcbU

 

台湾(中国)


www.youtube.com

  https://www.youtube.com/watch?v=trzb9bAIKpA

 

マドリード(スペイン)

  https://www.youtube.com/watch?v=XRBielBXqK8

ジラルデット橋(ドイツ)

  https://www.youtube.com/watch?v=gl9f8VPiCts

ブリュッセル(ベルギー)

  https://www.youtube.com/watch?v=KbEoaab4Pf0

ラ・ヴィレット公園(フランス)

  https://www.youtube.com/watch?v=gOJJ1ywiJ1M

ハーバーフロント(カナダ)

  https://www.youtube.com/watch?v=bMtsBOL7vTc

カイクダイン(オランダ)

  https://www.youtube.com/watch?v=XIIqLg5nxgY

ロンドン(英国)

  https://www.youtube.com/watch?v=oPsjrP8Ln3w

  https://www.youtube.com/watch?v=Xj-C2O9dbXE

ブラジル

  https://www.youtube.com/watch?v=wXVslADAxPw

サイアムスクエア(タイ)

  https://www.youtube.com/watch?v=9c7HcBcMnFc

カイサニエミ公園、ヘルシンキ(フィンランド)

  https://www.youtube.com/watch?v=aGn4-ogO_Ps

 

マリーナベイサンズ(シンガポール)

www.youtube.com

上野公園・不忍池(日本)

www.youtube.com

 

 

.NET プログラマの JavaScript、Node.js 勉強

[Object]
JSON形式で表現するデータ型
キーと値のペア
{"name": "John Smith", "age": 33}

[ProtoBuf]

[RequestEnvelop、ResponseEnvelop]

[EventEmitter]
on('イベント名', function() { ... で実行

[var self = this;]

[module.exports]

[無名関数、即時関数、コールバック関数、ミドルウェア関数]
var abc = function (){...};
(function(){...})();
self.SetLocation = function (location, callback) {
 if (!location.name) {
  return callback(new Error('You should add a location name'));
 }
 callback(null, self.GetLocationCoords());
}
middleware function
関数を変数のように扱う
そのまま使用は、受取る変数
return は、実行後結果をイコールで戻す

MongoClient()
connect(url[, options], callback)
 Arguments:
  url (string) – connection url for MongoDB.
  [options] (object) – optional options for insert command
  callback (function) – this will be called after executing this method. The first parameter will contain the Error object if an error occured, or null otherwise. While the second parameter will contain the initialized db object or null if an error occured.
 Returns:
  null

 

[ArrayBuffer(typed array、JavaScript)、Buffer(Uint8Array、Node.js)]
Octet Stream

 

[forEach]
非同期になるきっかけは「処理に時間がかかるもの」ではなく、非同期メソッドを使うか否か
http://qiita.com/ishisak@github/items/cee2811a5a131d4ef946

 

 

Poke.io

参考:https://github.com/Armax/Pokemon-GO-node-api

ポケモンGO API node.js ライブラリ <開発中>

Discord に開発チャンネルがあります。開発でのみ使います。サポート問合せはしないでください。

example.js の例を確認してください。

 

インストール方法と使い方:

npm install pokemon-go-node-api
var Pokeio = require('pokemon-go-node-api')

 

マニュアル:

■ Pokeio.init(username, password, location, provider, callback)
ポケモントレーナークラブまたは Google アカウントで Pokeio を初期化する。地名または緯度・経度を指定できる。
username {String} ポケモントレーナークラブまたは Google アカウントのユーザー名
password {String} ポケモントレーナークラブまたは Google アカウントのパスワード
location {Object} 位置は、
  type = 'name' と name
  type = 'coords' と latitude、longitude、altitude
  の組合せで指定する
type {String} 'name' または 'coords'
name {String} Google マップ API を使い検索する地名
coords {Object}
  latitude {Number} 緯度
  longitude {Number} 経度
  altitude {Number} 標高
provider {String} 'ptc' または 'google'
callback {Function(error)}
  error {Error} エラー

■ Pokeio.GetAccessToken(username, password, callback)
Pokeio 内部変数に、接続チケットを保存する
username {String} ポケモントレーナークラブのユーザー名
password {String} ポケモントレーナークラブのパスワード
callback {Function(error, token)}
  error {Error} エラー
  token {String} チケット

■ Pokeio.GetApiEndpoint(callback)
Pokeio 内部変数に、API 終点を保存する
callback {Function(error, api_endpoint)}
error {Error} エラー
api_endpoint {String} API 終点

■ Pokeio.GetProfile(callback)
callback {Function(error, profile)}
error {Error} エラー
profile {Object} プロファイル
  creation_time {Number} 作成時間
  username {String} ユーザー名
  team {Number} チーム
  tutorial {Number/Boolean} 情報
    poke_storage {String} 所有できるポケモン
    item_storage {String} 所有できるアイテム数
    daily_bonus {Object} 毎日のボーナス
      NextCollectTimestampMs {Number} 次のアイテム入手更新時間(ms)
      NextDefenderBonusCollectTimestampMs {Number} 次の防衛ボーナス更新時間(ms)
    currency {Object} 所持金
      type {String} 種類
      amount {Number} 数量

■ Pokeio.GetLocation(callback)
Google マップ API を使い、現在の緯度・経度から、各国表記での住所を表示する
callback {Function(error, formattrd_address)}
error {Error} エラー
formatted_address {String} 各国表記での住所

■ Pokeio.GetLocationCoords()
Pokeio 内部変数に位置を保存する。緯度・経度または地名を指定できる
location {Object} 位置
  type {String} 'name' または 'coords'
  name {String} Google マップ API を使い検索する地名
  coords {Object}
    latitude {Number} 緯度
    longitude {Number} 経度
    altitude {Number} 標高
callback {Function(error, coordinates)}
error {Error} エラー
  coords {Object}
    latitude {Number} 緯度
    longitude {Number} 経度
    altitude {Number} 標高

 

プログラム例:

var a = new PokemonGO.Pokeio();
var location = {
 type: 'coords',
 coords: {
  'latitude': 35.712271,
  'longitude': 139.770557,
  'altitude': 0.0
 }
};

var username = 'abcde@gmail.com';
var password = 'xyz';
var provider = 'google';

a.init(username, password, location, provider, function(err) {
 if (err) throw err;

 console.log('1[i] Current location: ' + a.playerInfo.locationName);
 console.log('1[i] lat/long/alt: : ' + a.playerInfo.latitude + ' ' + a.playerInfo.longitude + ' ' + a.playerInfo.altitude);

 a.GetProfile(function(err, profile) {
  if (err) throw err;

  console.log('1[i] Username: ' + profile.username);
  console.log('1[i] Poke Storage: ' + profile.poke_storage);
  console.log('1[i] Item Storage: ' + profile.item_storage);

  var poke = 0;
  if (profile.currency[0].amount) {
   poke = profile.currency[0].amount;
  }

  console.log('1[i] Pokecoin: ' + poke);
  console.log('1[i] Stardust: ' + profile.currency[1].amount);

  setInterval(function(){
   a.Heartbeat(function(err,hb) {
   if(err) {
    console.log(err);
   }

   if(hb) {
    for (var i = hb.cells.length - 1; i >= 0; i--) {
     if(hb.cells[i].NearbyPokemon[0]) {
      var pokemon =  a.pokemonlist[parseInt(hb.cells[i].NearbyPokemon[0].PokedexNumber)-1];
      console.log('1[+] There is a ' + pokemon.name + ' near.');
     }
    }
   }
  });
  }, 5000);

 });
});

 

デモ:

node --debug-brk=28179 --nolazy example.js
Debugger listening on port 28179
[i] Logging with user: abcde@gmail.com
[i] Received Google access token!
[i] Received API Endpoint: https://pgorelease.nianticlabs.com/plfe/196/rpc
1[i] Current location: 2-1 Uenokōen, Taitō-ku, Tōkyō-to 110-0007, Japan
1[i] lat/long/alt: : 35.712271 139.770557 0
1[i] Username: abcde
1[i] Poke Storage: 250
1[i] Item Storage: 350
1[i] Pokecoin: 0
1[i] Stardust: 35247
[i] Logged in!
1[+] There is a Magikarp near.
1[+] There is a Psyduck near.
 

家で実験:

Github からプログラムコードを入手。[Clone or download]ボタンで Pokemon-GO-node-api-master.zip をダウンロード
cd C:\Git\Pokeio
npm install request
npm install geocoder
npm install protobufjs
npm install gpsoauthnode
npm install s2-geometry
npm install node-pogo-signature
npm install long

node example.js

 

日本語化:
pokemons.jsonポケモン名を日本語にしました。
https://1drv.ms/u/s!AtrmEyB9KEJijlh96gjw3mpSjoFX

 

プログラム例(ビュー):
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
  $.get(
    '/loc',
    function(data){
      $('#locationName').text(String(data));
    }
  );
  $.get(
    '/nearby',
    function(data){
      $('#nearbyPokemon').text(String(data));
    }
  );

  $('#set').click(function(){
    $.post(
      '/set',
      {latitude:$('#latitude').val(), longitude:$('#longitude').val()},
      function(data){
        $('#locationName').text(String(data));
        $('#nearbyPokemon').text('');
      }
    )
  });

  $('.map').click(function(){
    var id = $(this).attr('id');
    var data = id.split(',');
    $('#latitude').val(data[0]);
    $('#longitude').val(data[1]);
    $('#set').click();
  });

  setInterval(function() {
    $.get(
      '/loc',
      function(data){
        $('#locationName').text(String(data));
      }
    );
    $.get(
      '/nearby',
      function(data){
        $('#nearbyPokemon').text(String(data));
      }
    );
  }, 5000);
</script>

 

eexさんの情報(eextutto):
LEDのついた万歩計程度のもので、GOプラスに内蔵されてる振動センサーやら時計機能やらを元にポケモンが出現したことにして、アプリを立ち上げると位置に見合ったポケモンが出てきたことにすればいい

ポケストップからのアイテム入手は?
→ 近くを通ると自動的にアイテムを入手する。定期信号を送信して、スマホ側で位置ログを残せばよい

ダイアログ・セミコンダクター DA14580:「Pokemon GO Plus」のBLEソリューション、採用の決め手は

東京でポケモンGO

コラッタ、文京区、0723、1020

f:id:sato7411:20160723130425p:plain

 

カイロス、文京区、0723、1039

f:id:sato7411:20160723130612p:plain

 

ズバット、文京区、0723、1222

f:id:sato7411:20160723160900p:plain

 

サンド、文京区、0723、1228

f:id:sato7411:20160723131007p:plain

 

ニョロモ、文京区、0723、2054

f:id:sato7411:20160725013702p:plain

 

トランセル、文京区、0723、1033

f:id:sato7411:20160723132404p:plain

 

ドードリオ、文京区、0723、2011

f:id:sato7411:20160724022238p:plain

 

トサキント、文京区、0723、2053

f:id:sato7411:20160724022338p:plain

 

ポッポ、文京区、0724、1354

f:id:sato7411:20160725030809p:plain

 

 

ビーコン、モノのインターネット(IoT)、Bluetooth Low Energy(BLE)

(株)ACCESS よりビーコンの使い方のマニュアルが出ていました。

https://a-beacon.com/manual/

 

管理アプリ(iPad) / 管理サイト(ウェブ)

ビーコン機器(ビーコン端末)

リファレンスアプリ(スマホ / タブレット

 

スマホ / タブレット
位置情報を有効化
Bluetooth を ON
プッシュ通知をタップすると配信要素をアプリで開きます
LINK の場合は、URL をタップするとウェブページを表示します

 

■ リファレンスアプリ
ログイン / ログアウト(メールアドレスまたはユーザID、パスワード)
事業者ID
商品説明 / ポイントカード / スタンプラリー / クーポン配信 / 勤怠管理 / Passbook / Google Glass

 

■ 管理サイト
PUSH配信の要素
 TEXT、TEXTBOX、NUMBER、IMG、FILE、EXTERNAL_IMG
 LINK、DATE、EXPIRED(有効期限)、AVAILABLE(有効 / 無効)
 JSONJSON形式のテキスト)

トリガー対象(ビーコン(グループ)、位置情報、NFC
日程(任意期間、日時・曜日繰り返し)
配信条件(常に配信、性別、年齢)

■ ビーコン機器
特性
 UUID
 Type
 isLowBattery
 is3axis
 TxPower(送信パワー)
 Adv Interval(送信間隔)
 Measured Power(キャリブレーション用電波発信強度)
 Battery Level(電池残量低下の警告)、Notify Battery Low(電池残量低下通知)
 Term Of Signal(s)(ボタン押下時の信号送信時間)※ボタンビーコンのみ対応
 LED Control(電波発信時のLED点灯/点滅On/Off) 
表示項目
 名前
 Major / Minor
 Proximity (Far / Intermediate / Near / Unknown)
 RSSI (受信強度)

リージョン(=ビーコングループ: UUID / Major / Minor で指定する)
クラウドデータ、ビーコンデータ、ビーコンパラメータ

ファームウェア更新、nRF Toolbox App、Nordic

 

GPS 位置情報
位置情報名
経度、緯度、距離(プッシュ受信領域の半径)、概要(住所)、都道府県、都市名

 

■ ログ
ビーコンアクセスログ、ユーザアクションログ、コンテンツ取得ログ
(アプリユーザの行動履歴ログ)

ユーザ
 メールアドレス
 エリアに属する、エリアは4階層まで、エリアで配信要素を制限する

ヒートマップ
 多くのユーザを検出すると赤に変化する
 ビーコンと通信したスマホ/タブレットがビーコン間を移動した動線を表示

 

■ Wallet(Passbook)
空港アプリで搭乗券を購入し、右上のボタンを押して Wallet(Passbook)に追加する。空港アプリを起動しておく。搭乗口のビーコンに近づくと、一覧に搭乗券名が表示される。タップすると、Wallet(Passbook)アプリが起動し、紐付けられた搭乗券が表示される。

 

Google Glass
[事前準備]
MyGlass アプリを iPhone にインストールする。iPhoneGoogle GlassBluetooth でペアリングする。MyGlass アプリで表示した QR コード(接続名とパスワード)を、Google Glass で読み取って、サインインする。Google GlassWifi 経由でネットワークに接続可能になる(Google Glass 単体ではパスワードを入力することができないため)。

案内アプリに Google アカウントでログインする。Google Glass がビーコンに近づくと、データ要素が配信され、Google Glass と案内アプリの両方に表示される。

 

■ 雑
https://fabkura.gitbooks.io/ble-docs/content/


 

介绍在欧洲和美国流行的日本人乐队。

■■ 宝宝金属 ■■

給我巧克力!!

www.youtube.com

捉迷藏

www.youtube.com

 

IoT 末端分析

参考: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]

 

開発ツール Express

参考: 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) {
  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年半延期

 

(作成中)