2018年8月10日金曜日

日本からの製品要件一覧


日本からの製品要件一覧

Jump to: navigation, search

Contents

はじめに

本ページでは、KLJから実装要求している製品への要件を一覧できるコンテンツとする。
日本語ビルドのみに搭載されている要件、グローバルビルドにも搭載されている要件いずれも含む。
当該要件はテスト計画書のGTMテスト要件としての必須項目となる。
2017/10/25 今後追記する要件は原則英語とする。

また、各製品ビルドのリリース種別も併せて記載する。リリース種別は以下の通り。
①リリース時のバージョンは原則同じであるが、言語ごとに分けて作成されるビルド
②多言語版としてリリースされ、その一言語として日本語が含まれるビルド
③主要言語版(En, Ruなど)のリリース後、アップデートを加えて上位のバージョン番号でリリースされる日本専用ビルド(MR, SPレベルは変更なし)
④実際は英語ビルドであるが、公開サーバー上Japaneseディレクトリ下にアップロードされるビルド


GDPR 対応の影響

GDPR関連のページは独立させました


B2C

GDPR関連のページは独立させました​

B2B

GDPR関連のページは独立させました


コンシューマー製品 (B2C, B2B2Cのリブランド以外の製品)

KIS (Windows)

  • リリース種別:①
  • BRQ
  • TestReq
  • 非サポートOS:
    • 実装しているバージョン:2016, 2017, 2018, 2019
    • 実装概要:XP 非サポート (2016-) / Vista, 8.0 非サポート (2018-)、その他HQ準拠でサポート対象
  • GUI / チュートリアル等に含まれる製品スクリーンショットイメージの日本語版化
    • 実装しているバージョン:KIS2017, KIS2018
    • 実装概要:機能紹介画面の製品UI画像を日本語版に変える(詳細
  • マイ カスペルスキーサポート
    • 実装しているバージョン:2015~
    • 実装概要:マイ カスペルスキー接続をONとする
  • インストールステップ
    • 実装しているバージョン:2014~
    • 実装概要:インストーラのインストールステップ数の選択 3click or 1click。日本は 3click 採用(Legal)。
  • アクティベーションコード互換
    • 実装しているバージョン:全バージョン
    • 実装概要:日本語版KIS/KAVは日本発行AC (SKU) のみでアクティベート可能。
  • アクティベーションコード互換5年版対応
    • 実装しているバージョン:KMPS2014~
    • 実装概要:ヨドバシ向けBOXで5年を販売。将来5製品バージョンでのライセンス互換を必須。
      • 対象SKU KL1930JBAXS (KMPS2014) / KL1936JBAXS (KMPS2015-)
  • 体験版バージョン用アクティベーションコード
    • 実装しているバージョン:すべて
    • 実装概要:製品は30日間の体験版利用を可能とする。体験版AC用SKUはKL1936JCAMTとする。
  • 90日体験版アクティベート
    • 実装しているバージョン:すべて
    • 実装概要:ツクモ向けPPCSビルドに90日体験版ACを埋め込み提供している。正しく90日版としてアクティベートできること。体験版AC用SKUはKL1936JCAQTとする。
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック(詳細
    • 実装しているバージョン:KIS2014 MR0 Patch F, KIS2015MR1/MR2, KIS2016MR0/MR1, KIS2017, KIS2018, KIS2019
    • 実装概要:警察庁から受領しているURLを対象に、WebAVによるブロック、URLアドバイザによる危険サイト扱い(赤)をする。
    • Requirement 739488:[BRQ] Блокировать контрафактные сайты в японии
  • WEBトラッキング防止機能の「KL関連サイト」へのKLJ運営ドメイン(サイト)追加
    • 実装しているバージョン:KIS2016MR0/MR1, KIS2017, KIS2018, KIS2019
    • 実装概要:KIS2016から搭載された「WEBトラッキング防止」機能に、Kaspersky運営サイトをデフォルトで除外サイトとする設定リスト「KL関連サイト」への登録 (詳細)
      • data.kaspersky.co.jp
      • dl.kasperskylabs.jp
      • home.kaspersky.co.jp
      • kaspersky.co.jp
      • kasperskylabs.jp
      • newvirus.kaspersky.com/ja
      • support.kaspersky.co.jp
      • virusdesk.kaspersky.com/ja
      • www.kasperskylabs.jp
  • NIFTY向けアンインストールパスワード
    • 実装しているバージョン:KIS2016MR1~
    • 実装概要:インストールコマンドラインオプションに特別なアンインストール用パスワード設定を可能とする。パラメタ名は、"EXTRA_UNINST_KLPASSWD"
  • KAVライセンスによるKAVへの変更の禁止
    • 実装しているバージョン:KIS2016
    • 実装概要:KISにKAVライセンスを入力することによるKAVへのコンバートの禁止
    • Requirement 1179550:[BRQ] Prevent kis to kav transformation in Japanese localization
  • Socialization (Bring a friend)機能の無効化
    • 参考(日本非実装要件ではない元BRQ)
  • KFAへの変更の禁止
    • 実装しているバージョン:2019
    • 実装概要:2019よりライセンス有効期限切れ、アンインストール時にKFAへ遷移するオプションが追加された。KFA単体をリリースしない日本では本機能を抑制する。標準ビルドで対応不可。PPCSビルド作成のオプションで設定可能 (Disable Downgrade To Free)
  • L10n
    • ネット決済保護ブラウザ起動時のKB案内 (L10N対応)
      • 実装しているバージョン:KIS2016MR0 ~
      • 実装概要:問題が起きるWebサイトのリストKBへのリンクをネット決済保護ブラウザ起動時の文言に追加 (詳細
    • サポートウインドウのforumへのリンクの転用(L10N対応) (obsolete from 2019)
      • 実装しているバージョン:~2018
      • 実装概要:英語版ではユーザーフォーラム (Support Forum) へのリンクとしているが、日本語版では「サポートセンターのご案内」へのリンクにL10N対応している。リンク先はInterceptorで設定。リンクパラメタは "link=forum"。

KIS for Mac

  • リリース種別:①
  • BRQ
  • Test Req
  • EULA表示インストールステップ
    • 実装しているバージョン:すべて
    • 実装概要:インストーラのインストールステップ数の選択 3click or 1click。日本は 3click 採用。EULA/KSN声明をリンクではなく明示的表示するためのステップとなる。
      • Requirement 2239931:[BRQ][Legal][IP][MUST] Показ EULA для продуктов, продаваемых в Японии
  • ライセンス互換
    • 実装しているバージョン:全バージョン
    • 実装概要:日本語版ビルドは日本発行AC (SKU) のみでアクティベート可能
  • GUI / チュートリアル等に含まれる製品に関するスクリーンショットイメージの日本語版化
    • 実装しているバージョン:2018
    • 実装概要:ブラウザプラグイン導入紹介画面のプラグインインストールボタン等
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック(WebAV)
    • 実装しているバージョン:2015,2016,2018
    • 実装概要:警察庁から受領しているURLを対象にアクセスした際、WebAVによるブロックをする
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック(URLAdvisor)
    • 実装しているバージョン:KISMac16 Patch E→ F(予定 Rejected due to close to release KIS18)/KISM18
    • 実装概要:URLアドバイザによるリンク先検知についてWindows同様に危険サイト(赤フラグ)として検知する
  • VK (セキュリティキーボード/On-Screen Keaboard)
    • 実装しているバージョン:2016, 2018
    • 実装概要:日本語レイアウトをデフォルトとし、レイアウト変更ボタン表示名を「日本語配列」にすること。
    • 補足:KISM18での関係者合意。選択可能レイアウトとしては日英が入ってさえいれば「英日のみ」「英日を含む多言語」の切り替えどちらも可とする。
  • L10n/UX
    • サポートウインドウの各リンクの文言とURLの変更 (l10n, Interceptor対応)
      • 実装しているバージョン:~2018 ※2019ではKISWin2019要件と同じくフォーラムの利用に変更する予定
      • 実装概要:link=forum => サポートセンターのご案内
    • ウインドルタイトルから製品名を削除する
      • 実装しているバージョン:KISM16
      • 実装概要:タイトルバーに「製品名」+「機能名」と表示されることで見切れが発生することを回避するため、製品名を削除。
    • 通知バルーンの文字列数を17文字以下とする

KISA

  • リリース種別:③
  • BRQ
  • Google Play対応
    • 実装しているバージョン:MR9, MR11, MR12, MR15
    • 実装概要:ビルドはGoogle Playストアへ公開。アプリケーションIDは "com.kmsjp"とする。
  • 購入フォーム追加、フロー変更
    • 実装しているバージョン:MR11, MR12, MR15
    • 実装概要:購入説明の詳細を表示するため日本独自購入フォームを追加。グローバルはポップアップのみ。ライセンス失効時、購入アイテム表示順序を初回購入チャネルに応じて購入チャネルの表示順序を変更する。
      • 初期導入ウイザード完了時、ライト版利用時、体験版利用時
        • 1. コンシューマサイトでの購入リンク(KMPS誘導)
        • 2. In-App PurchaseによるAndroid版購入
        • 3. AC入力
      • Google Playライセンス、その失効時のライト版利用時
        • 1. コンシューマサイトでの購入リンク(KMPS誘導)
        • 2. In-App PurchaseによるAndroid版購入
        • 3. AC入力
      • 非サブスクリプションライセンスの失効時
        • 更新ボタン
        • AC入力
      • サブスクリプションライセンス時
        • ライセンスに応じたパートナーサイトへのリンク ("contact provider") およびサブスクリプション更新確認のボタンを表示 (グローバル標準版と同じ)
  • 非互換KISAの検知
    • 実装しているバージョン:
    • 実装概要:以下の環境へのインストール時に互換性問題として検出し、アンインストールを促す表示をする。
      • KISA NIFTY版/KDDI版インストール済み環境
      • 旧製品(KMS/KISA MR7まで)、他のローカリゼーションインストール済み環境
  • コンテンツフィルタリング
    • 実装しているバージョン:MR3, MR3CF1, MR7, MR9, MR11, MR12, MR15
      • 実装概要:KISにおけるペアレンタルコントロール、WebアクセスをKSNカテゴリに準じてブロックする。
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック
    • 実装しているバージョン:MR3, MR3CF1, MR7, MR9, MR11, MR12, MR15
    • 実装概要:警察庁から受領しているURLを対象に、ブラウザでのアクセスをブロックをする。
  • コンテンツフィルタリングの秘密の質問
    • 実装しているバージョン:MR15
    • 実装概要:パスワードと別に秘密の質問を設定し、パスワードリセット
      • 学校の名前
      • 最初に飼ったペットの名前
      • 最初の先生の名字
      • 両親の郵便番号
  • コンテンツフィルタリング利用時のレポート閲覧ブロック
    • 実装しているバージョン:MR11, MR12, MR15
    • 実装概要:コンテンツフィルタ利用時にはレポート閲覧にコンテンツフィルタで設定したパスワードが必要
  • 埋め込み体験版AC
    • 実装しているバージョン:MR11, MR12, MR15
    • 実装概要:ビルド内蔵の体験版ACは"41118-8RWMM-KGKDQ-RXV2K" とする。
  • ヘルプカスタマイズ
    • 実装しているバージョン:MR7, MR9, MR11, MR12, MR15
    • 実装概要:日本要件であるコンテンツフィルタリング機能の追記
  • SIM監視機能のE-Mailアドレス設定の削除 (obsolete from MR12)
    • 実装しているバージョン:MR7, MR9, MR11
    • 実装概要:国際SMSを利用しないようにするためE-mail通知設定削除。MR12~グローバルで廃止となったため日本要件維持の必要なし。
  • app_update_code.dat 識別子の変更 (obsolete from MR11)
    • 実装しているバージョン:MR3, MR3CF1, MR7, MR9
    • 実装概要:アプリケーションのアップグレードをする際に対象ビルドを判別のための識別子。MR11より仕様廃止され、パッケージに識別子を記述したファイルとして含まれない。
  • Google Play 日本語版単独リリース
    • 実装しているバージョン:MR9~
    • 実装概要:Google Play上でグローバルのKISA英語版とは別途に日本語版をリリース(com.kmsjp)。MR7以前はapkファイルパッケージをリリース。
  • 音声認識ライブラリ追加、3rd party code (INFORMATION ABOUT THIRD-PARTY CODE)への記載
    • 実装しているバージョン:MR11, MR12
    • 実装概要:スマートウォッチでの音声認識率を高めるため日本語解析向けライブラリをHQ判断で追加提案、日本担当PMで承認 (Jakaroma / Kuromoji)
  • メインパネルUI上の製品名の日本語化
    • 実装しているバージョン:MR12
    • 実装概要:メインパネルUI上のグラフィックによる製品名を日本語化
  • デフォルトブラウザの起動時初期表示URLの変更
    • 実装しているバージョン:MR12, MR15
    • 実装概要:KISA UIからデフォルトブラウザを起動する際の初期URLを "www.kaspersky.com"から"www.kaspersky.co.jp"へ変更
  • i18n/l10n
    • App Lock 機能の日本語名称
      • 実装しているバージョン:MR15
      • 実装概要:日本語名称を「アプリロック」とする
    • デリミタのリソースアウト
      • 実装しているバージョン:MR12, MR15
      • 実装概要:KISA UI、検知画面、レポート上でデリミタをローカライズ可能とする。例:Webフィルタリング等で検知時に複数カテゴリに該当する場合、デリミタが利用されること。
        • Globalビルドに取り込み済
          • <string name="list_of_words_delimiter">", "</string>
          • <string name="list_of_words_last_delimiter">", or "</string>

KSeC for Windows

  • リリース種別:①
  • BRQ
  • ライセンスグローバル
    • 実装しているバージョン:すべて
    • 実装概要:KISのように日本専用化しない
  • L10n
    • 実装しているバージョン:すべて
    • 実装概要:「定額制サービス」を「ライセンス」へ変更

KSeC for Mac

  • リリース種別:②
  • BRQ
  • Test Req
  • ライセンスグローバル
    • 実装しているバージョン:すべて
    • 実装概要:KISのように日本専用化しない
  • L10n
    • 実装しているバージョン:すべて
    • 実装概要:「定額制サービス」を「ライセンス」へ変更

KSeC for Android

  • リリース種別:②
  • BRQ
  • Test Req
  • ライセンスグローバル
    • 実装しているバージョン:すべて
    • 実装概要:KISのように日本専用化しない。KL1985*
  • L10n
    • 実装しているバージョン:MR2,MR3,MR4
    • 実装概要:製品名「カスペルスキー セキュアコネクション」
    • 実装概要:短い製品名「セキュアコネクション」。アイコンに表示する製品名。
    • 実装概要:製品情報:サポートアドレスの日本専用化。jp_ksec_android_support@kaspersky.com
      • [製品情報] - [テクニカルサポートへのお問い合わせ] をタップした際に起動するメールの宛先として
      • 製品評価ダイアログで星3つ以下が選択された際に起動するメールの宛先として
    • 実装概要:製品情報:Webサイトアドレスを日本Webサイトアドレスへ変更
    • 実装概要:製品情報:SNSサイトのリンクを日本サイトアドレスへ変更(Youtube, Instagram, LinkedIn, Facebook, Twitter)
    • 実装概要:製品情報:日本語化されていないSNSサイトアイコン、リンクを削除(Pinterest)

KSeC for iOS

  • リリース種別:②
  • BRQ
  • Test Req
  • ライセンスグローバル
    • 実装しているバージョン:すべて
    • 実装概要:KISのように日本専用化しない。KL1985*
  • L10n
    • 実装しているバージョン:MR2
    • 実装概要:製品名「カスペルスキー セキュアコネクション」
    • 実装概要:製品情報:サポートアドレスの日本専用化。jp_ksec_android_support@kaspersky.com
    • 実装概要:製品情報:Webサイトアドレスを日本Webサイトアドレスへ変更
    • 実装概要:製品情報:SNSサイトのリンクを日本サイトアドレスへ変更(Youtube, LinkedIn, Facebook, Twitter, Google+)
    • 実装概要:製品情報:日本語化されていないSNSサイトアイコン、リンクを削除(VK)
    • プライバシーポリシー日本語化WEBページ

My Kaspersky

  • リリース種別:②
  • すべての日本要件はTFSのJP_QA_KPCプロジェクトにて管理されている。
    ttps://hqrndtfs.avp.ru/tfs/DefaultCollection/JP_QA_KPC/_workitems#path=Shared+Queries%2FChange+Management%2FKPC+all&_a=query

KSS (bundled KSU)

  • リリース種別:③

コンシューマーリブランド製品

KIS (Windows) for Nifty

  • NIFTY専用AC (Subscription)
  • 製品名変更 '常時安全セキュリティ24'
  • 製品アイコン変更
  • EULA変更
  • UIカスタマイズ
  • ビルトインヘルプカスタマイズ
  • 体験版アクティベーション削除
  • Buy/Renew リンクUI削除
  • kavremover対応
  • レジストリ UpgradeCode の前バージョンからの維持
    • 4E5552CD-DC26-4cc3-A8C4-F9A7B5805ADA
  • レジストリ ProductCode の前バージョンからの変更
  • アンインストール用パスワードの設定 (標準版で実装)
    • /pEXTRA_UNINST_KLPASSWD

KIS for Mac for Nifty

  • NIFTY専用AC (Subscription)
  • 製品名変更 '常時安全セキュリティ24'
  • 製品アイコン変更
  • EULA変更
  • UIカスタマイズ
  • ビルトインヘルプカスタマイズ
  • 体験版アクティベーション削除

KISA for Nifty

  • NIFTY専用AC (Subscription)
  • 製品名変更 '常時安全セキュリティ24'
  • 製品アイコン変更
  • EULA変更
  • UIカスタマイズ
  • ビルトインヘルプカスタマイズ(~MR12)
  • オンラインヘルプカスタマイズ(MR12~)
  • 体験版アクティベーションUI削除
  • 体験版遷移期間 90日

KIS (Windows) for KDDI

KIS for Mac for KDDI

KISA for KDDI

コーポレート製品(B2B)

Update Utility

  • リリース種別:①
  • 製品名を日本語化しない
    • 実装しているバージョン:3.0 MR1
    • 実装概要:UI上の製品名は日本語化しない
  • リリースノート日本語化
    • 実装しているバージョン:3.0 MR1
    • 実装概要:リリースノートを日本語化。提供アーカイブに含まれる。

KSOS

  • リリース種別:①
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック
    • 実装しているバージョン:KSOS5 (PC/FS)
    • 実装概要:警察庁から受領しているURLを対象に、WebAVによるブロック、URLアドバイザによる危険サイト扱い(赤)をする。
  • KPM機能削除
    • 実装しているバージョン:KSOS5 (PC/FS) / KSOS6 (PC/FS)
    • 実装概要:グローバルではKSOSライセンスでKPMまで使用可能でありメインUIにダウンロードリンクがある。メインUIからの当該リンクを別の機能(KSOS5ではプライバシー保護)に変更。
  • KPM機能削除に関する注意メッセージ表示(インストーラ)
    • 実装しているバージョン:KSOS5 (PC)
    • 実装概要:KSOS3で備わっていたパスワードマネージャ機能がKSOS5で提供されないため、インストーラ上で注意文言を追加

KES for Windows

  • リリース種別:①
  • Activation with KESB Core license
    • Targeted version:KES11Windows
    • Overview: Activation with KESB Core license. (TFS2253572)
      • Basically, KL Globally does not sell KESB Core license. But the license continuously be marketed in Japan. Keep making product available with KESB core.

KES for Mac

  • リリース種別:②
  • Activation with KESB Core license
    • Targeted version:KES10Mac
    • Overview: Activation with KESB Core license. (TFS2253573)
      • Basically, KL Globally does not sell KESB Core license. But the license continuously be marketed in Japan. Keep making product available with KESB core.

KES for Linux

  • リリース種別:④ 8 MP1まで
  • リリース種別:② 10から(ただし、10 MR0はJa localizationを含まない。10 SP1から含まれている)
  • Activation with KESB Core license
    • Targeted version:KES10Linux SP1 (KES8Linux has an implementation of this.)
    • Overview: Activation with KESB Core license. Basically, KL Globally does not sell KESB Core license. But the license continuously be marketed in Japan. (However, KES Cloud does not sell in Japan.)

KS for Mobile

  • リリース種別:③
  • 日本語版独自ビルドのリリース
    • 実装しているバージョン:KS10 for Mobile SP1MR3
    • 実装概要:Globalでリリースしている多言語版(com.kaspersky.kes)ではなく、日本語版を独立したビルドとしてリリース(com.kaspersky.kes.ja)
  • ​日本独自のシステム要件
    • ​​実装しているバージョン : KS10 for Mobile SP2MR1
    • 実装概要 : システム要件に「ガラホ、ガラスマは対応していません」の加筆。サポートコールを減らすため。

Safe Browser

  • リリース種別:②
  • 警察機関指定ならびに消費者庁指定の危険サイトブロック
    • 実装しているバージョン:KSB 1.x
    • 実装概要:警察庁から受領しているURLを対象に、Webコントロールによるブロックをする。

KSC

  • リリース種別:①
  • 日本語版KES mobileのGoogle Play対応
    • 実装しているバージョン:KSC10 SP2MR1
    • 実装概要:Google PlayのリンクがKES android日本語版(com.kaspersky.kes.ja)のリンクに変更
  • Windows Storage Server対応
    • 実装しているバージョン:KSC10S SP2
    • 実装概要:NASにバンドルして販売する案件のためWindows Storage Server に対応

KES Cloud

  • リリース種別:②

KSWS

  • リリース種別:①
  • ストレージ保護未提供の表示
    • 実装しているバージョン:KSWS10.0, 10.1 *10.1の次バージョンからは表示内容を変更する方向(KS for Storageライセンスを販路限定で販売開始するため)
    • 実装概要:インストーラーのメイン画面に、KS for Storageライセンスは日本で未販売でストレージ保護は未提供の旨を記載(En版は、ストレージ保護にはKS for Storageライセンスが必要と記載)
  • ストレージ保護用ガイドを英語のまま提供
    • 実装しているバージョン:KSWS10.0, 10.1 *10.1の次バージョンからは日本語化の方向(KS for Storageライセンスを販路限定で販売開始するため)
    • 実装概要:ストレージ保護用ガイド"Implementation Guide for Network Storage Protection (ks4ws_netstorage_guide_ja.pdf)を日本語化せずに英語のまま提供。日本ではKS for Storageライセンスを販売していないため。このガイドはビルドに含まれている。
  • KMP未提供の表示
    • 実装しているバージョン:KSWS10.1
    • 実装概要:KMP声明に、日本ではKMPを提供していない旨を記載

LFS

  • リリース種別:①
  • KSCイベントログの日本語表示
    • 実装しているバージョン:LFS8 MP2CF3
    • 実装概要:kav4fs.kpdファイルをkav4fs.kudファイルに変更(UTF8に対応させるため)してメッセージを日本語化し、akinstall.shからcallするファイル名もkav4fs.kpdからkav4fs.kudに変更

KSV Agentless

  • リリース種別:① ※ KSV5.0 Agentlessの次バージョンより②となる見込み

KSV Light Agent

  • リリース種別:① ※KSV5.1 LAからは②となる見込み
  • LinuxゲストOSのサポート
    • 実装しているバージョン:KSV4.0 LA
    • 実装概要:Linux用Light AgentによるLinuxゲストOSの保護

LMS

  • リリース種別:②
  • Not customization but noted as the QA out of scope, Jpaan sales does not need the subscription license due to no oppotunity. (as of 2017.5.22)

KAV for Proxy Server

  • リリース種別:① ※KSProxy 6.0から②となる予定
  • URLフィルタリング
    • 実装しているバージョン:KSProxy 6.0(予定)
    • 実装概要:危険なサイトやカテゴリ指定されたサイトへのアクセスをブロック
  • MaxNestingLevel=8
    • 実装しているバージョン:5.5 MP3 (5.5.80) ※日本未リリース, 5.5 MP3 CF1 (5.5.86)
    • 実装概要:スキャンするアーカイブ階層数の指定。IIJ様要望
  • HTTPClientIpICAPHeader=X-Client-IP
    • 実装しているバージョン:5.5 MP2 (5.5.62)
    • 実装概要:ProxyサーバーにアクセスするクライアントIPアドレス情報ヘッダ名(詳細
  • HTTPUserNameICAPHeader=X-Client-Username
    • 実装しているバージョン:5.5 MP2 (5.5.62)
    • 実装概要:Proxyサーバーにアクセスするユーザーの認証情報ヘッダ名。(詳細
  • SendAVScanResult=false
    • 実装しているバージョン:5.5 MP2 (5.5.62), 5.5 MP3 (5.5.86)
    • 実装概要:スキャン結果をICAPヘッダに記載する(詳細

コーポレートリブランド製品

KS for Mobile for NTT data

  • リリース種別:③


JP req doc / test req doc導入に関する議論


2018年8月9日木曜日

会計


Gross Profit = Total Revenue(A)  - Cost of Revenue(B)

Total Revenue(A) = Total Operating Expense + Earnings Before Interest and Taxes(D).

Operating Income or Loss = Total Revenue(A) - Total Operating Expense

Earnings Before Interest and Taxes(D).= Operating Income or Loss

Cost of Revenue(B) = Total Operating Expense - R&D - Selling G&A

 Income Before Tax(C)=Total Other Income/Expenses Net+Earnings Before Interest and Taxes(D)

Net Income From Continuing Ops = Income before Tax (C)- Income tax Expense


俳句


2018/8/9

台風を
 言い訳に飲む
  昼の酒

雪月花
 無くても旨し 
  昼の酒

のらくらと
 遊びくらして
  日が暮れて

夜もふけて
 沈黙来る
  涼風至

楽しみは
 季節外れの
  盆休み

巡り来て
 去りゆきて
  約束しれず
   行方知れずの
    薄情者

夏日星
 影を残して
  さようなら


15年ぶりに火星が大接近した夜、あまりに明るく赤く輝くのでその光で闇を透かして人の影を感じられるのではないかと目を凝らしてみた

蜩鳴いて
 鷹乃
  鳥を祭る


2018/8/31

夏休み
  最後の一日
    何しよう

2018/9/2

夏休み
   土日を足して
      六週間

2018/9/11

さがしもの  尋ね歩いて   迷い道

2018/11/22

くるとしの こよみくばるよ としのくれ

2018/12/10

こもごもの
   しらせとどくよ
      としのくれ

2018/12/26

ただざけを
    こばめばたたぬ
         いちぶかな

したがきを
 おえてひといき
  ねんがじょう

なつやすみ
 あてがはずれて
  まちぼうけ

ばんこくの
 しわすまんげつ
  ねったいや

2019/1/1

はつもうで
 さんれつじゅうたい
  しんこうちゅう

くらやみを
 あかくともせよ
  なつひほし

2019/3/19

さくらまつ
 ねんにいちどの
  てんてこまい

きがつけば
 ひとりぼっちで
  あなのなか

いつまでも
 つづけつづくよ
  はるやすみ

てのなかの
 とうにきれてた
  たこのいと

2019/3/27

はるのひと
 さくらをおって
  たびしたい

ひるよるを
 ひとしくわかつ
  ふしめのひ

かぜぬるむ
 はなのさかりに
  ひとりいて

かぜぬるむ
 はなのさかりよ
  ひだまりよ

2018/3/28

みかんきを
 こうじつにのめ
  らふろいぐ

2019/4/1

あたらしき
 みよのなまえを
  まちかねて

2019/4/14

あめがいう
   きょうでさくらは
     おしまい、と

2019/5/3

わがわざは
 わがみとともに
  くちるべし

2019/6/3

あめつちの
 あいだでひとり
  いきをする

だすあての
    ないふみばかり
         かきつらむ

2019/6/5

なつのひの
 ひのひかりは
  しのしるし

だれひとり
 しらぬしらべを
  さがしあつ

2019/06/09

あるあらむ
 こたえのないとい
  ふりつもる

げしのひを
 ひるのさかりと
  さだめたり

しんくうを
 とびこえひびく
  うたをきけ

2019/6/10

げしすぎて
 よるのちからの
  よみがえる

つゆのよも
 くものむこうに
  ほしのある

さいせいの
 ぎしきおこなう
  とうじのひ

2019/7/4

つゆつづく
 しゅうまつのひの
  あめおもう

(梅雨続く
 終末の日の
  雨想う)

とうがんは
 あきのきごなり
  つゆにくう

2019/7/9

やまぬあめ
 とどかぬてがみ
  とけぬとい

(あけぬつゆ
 とどかぬてがみ
  とけぬとい)

2019/7/16

つづるのは
 みどりのふゆの
  みまいなり

2019/8/10

にじすぎて
 ひとのあつまる
  さかばあり

2019/8/14

ゆめのなか
 かえりきてつぐ
  なつがすき


2019/9/9

ゆきすぎて
  いまいちどなつ
     よみがえる

台風15号が通過して、暑い日が帰ってきた。

2019/11/03

みちしるべ
   ぶんきろにて
       ひとりたつ

にちぼつの
    ありかをしめす
        あかねぐも

つきをとも
     よるのたびじの
          かえりみち

2020/5/8

ひとしれず
 はなのふりつむ
  けものみち





2018年8月7日火曜日

了簡

この道を仕掛る人は我了簡を立てず、人の了簡にて商いする人はなき筈なり

2018年8月5日日曜日

TIPS 20180805



警告の抑止(未検証) 

options(warn=-1)
library(・・・)
# 読み込んだよーというメッセージがでなくなる

警告の抑止(検証済)  その2

        sink(file="/tmp/r.log") # console output is redirected to "/tmp/r.log"
     
        sink()  # reset to the console.

警告の抑止(未検証) その3

        options("getSymbols.yahoo.warning"=FALSE).

ヒストグラムの出力


  # kikan like kikan or "2018::06-21::2018-07-13"
  # len is a number of samples.
  # loc_x is x-axis position kikan 0 to 1.
  # loc_y is y-axis.
  # br is breaks for hist()
  # ymax is max value of y-axis.
  # xmin and xmax are for x-axis
  # color is from 1 to 9?
  hist(as.vector(last(par_xts[kikan][,highlow],n=len)),breaks=br,xlim=c(xmin,xmax),ylim=c(0,ymax),col=color)
  axis(side=2, pos=round(mean(par_xts[kikan][,highlow])),labels=F)
 #
 # par + text to output overlay messages on the graph.
 # graph's dimension data to graph_dim
 # "graph_dim[1] + graph_dim[2] *  loc_x " is 50% of horizontal loc
 #
  graph_dim <- par('usr')
  text( graph_dim[1] + graph_dim[2] *  loc_x   ,(graph_dim[4] - graph_dim[3]) * (loc_y+0) + graph_dim[3] ,paste("#",len,sep="="),adj=c(0,0))

垂直線をxtsグラフに引く


events <- xts(c("natrix","weight"),as.Date(c("2018-06-20", "2018-07-14")))
addEventLines(events, srt=90, pos=2,col=10)

   未検証だが以下もOKなはず。

addEventLines(as.xts(c("natrix","weight"),as.Date(c("2018-06-20", "2018-07-14"))), srt=90, pos=2,col=10)

多面プロットのやり方(plot when multi.panel=T and yaxis.same=F)

plot(merge(to.monthly(N225["2007-01::"])[,4],as.vector(residuals(result)/to.monthly(N225)[,4])),multi.panel=TRUE,yaxis.same=FALSE)

季節調整 case shiller 10 city composite.


CS.stl <- stl(ts(as.numeric(CS),frequency=12), s.window="periodic")
last(merge(CS,as.numeric(CS.stl$time.series[,2]),suffixes = c("","season")),n=24)
plot(last(merge(CS,as.numeric(CS.stl$time.series[,2])),n=48)[,1] - last(merge(CS,as.numeric(CS.stl$time.series[,2])),n=48)[,2])

chartSeries(
  weekly_pf,
  show_grid=TRUE,
  type="candlesticks"
)

ffmpegの使い方 再生できないファイルがある場合


再生できないファイルがある場合、mp4に変換してやるとうまくvlcで再生できることが多い。以下はcodecを変更しないでコンテナだけをmp4に変えてやる使い方。以下はaviファイルでオーディオストリームに問題があるらしい場合のエラーメッセージ。

[avi @ 0x7ffaf7800000] Could not find codec parameters for stream 1 (Audio: mp3 (mp3float) (U[0][0][0] / 0x0055), 48000 Hz, 2 channels, fltp, 128 kb/s): unspecified frame size


で、オーディオストリームはそのままにしてコンテナだけをmp4に変更する。

# no conversion just switch container. highly reliable.

ffmpeg -i <INPUT>.avi -codec:v copy -codec:a copy <OUTPUT>.mp4

OR

ffmpeg -i <INPUT>.avi -codec:a copy out.mp4

こちらは ビデオストリームをコピーする例。やはり、コンテナはmp4に変更する。

ffmpeg -i <INPUT>.mkv -vcodec copy <OUTPUT>.mp4

OR

ffmpeg -i sample_input.mkv -vcodec copy sample_output.mp4

for文とカウンタ in bash


j=0;for i in  *.mkv; do echo $i;  let ++j ; echo $j ; ffmpeg -y -i $i -vcodec copy $j.mp4; done


  • ;を書く文の最後に
  • let をつかってカウンタを加算する
  • ffmpeg -yで既存ファイルがあっても強制上書き
  • forはdo とdoneで受ける
  • 変数は初期化すること

以下と等価となる。

j=0;for i in  *.mkv; 
> do echo $i
> let ++j 
> echo $j 
> ffmpeg -y -i $i -vcodec copy $j.mp4
> done

j=0;for i in *.mp4; do let ++j; mv $j.mp4 hibike_euphonuim_S2E$j.mp4; done


  • -e 大事。これがないと\1 が使えない。(間違い。なくてもOK)
  • さいごの「2」で出現順序を指定して置換する。
  • \(<patter>\)で指定して\1で受けてる。

Zero Padding by sed

ただし、awkのgensub関数を使ったほうが良いと思う

Hibike Euphonium 1 [BD 720p]$ ls *.mp4 | awk '{ print "mv "$1" "$1}' | gsed -e 's/E\([1-9]\)\./E0\1./2'
mv hibike_euphonuim_S1E1.mp4 hibike_euphonuim_S1E01.mp4
mv hibike_euphonuim_S1E10.mp4 hibike_euphonuim_S1E10.mp4
mv hibike_euphonuim_S1E11.mp4 hibike_euphonuim_S1E11.mp4

awk のgensub関数を使えば、sedは使わなくて良いはず。第二引数の"g"はグローバル?例えば2を指定すると2番めにヒットした正規表現だけを処理してくれるらしい。(要研究)

ls *.mp4 | awk '{ print "ls "$1" "gensub("0([1-9])","1\\1","g",$1)}' 

gensub関数 in awk

gensub(regexp, replacement, how [, target])
gensubは汎用的な置換関数である。subやgsubのように 対象文字列targetから正規表現regexpに マッチする部分を検索する。subやgsubと違うのは、 関数の戻り値として置換が行われた文字列を返し、 元の文字列を変更しないという点である。

gensub を使うとこうなる。

K-On!$ ls | awk '{print "ffmpeg -i \""$0"\" K-OnS1E" gensub(/(\y.\y)/,"0\\1",1,$3)".mp4"}'

ffmpeg -i "K-ON! Ep 01 - Dissolution!.mkv" K-OnS1E01.mp4
ffmpeg -i "K-ON! Ep 02 - Instruments!.mkv" K-OnS1E02.mp4
ffmpeg -i "K-ON! Ep 03 - Special Lessons!.mkv" K-OnS1E03.mp4
ffmpeg -i "K-ON! Ep 04 - Training Camp!.mkv" K-OnS1E04.mp4
ffmpeg -i "K-ON! Ep 05 - Advisor!.mkv" K-OnS1E05.mp4
ffmpeg -i "K-ON! Ep 06 - School Festival!.mkv" K-OnS1E06.mp4
ffmpeg -i "K-ON! Ep 09 - New Club Member!.mkv" K-OnS1E09.mp4
ffmpeg -i "K-ON! Ep 10 - Another Training Camp!.mkv" K-OnS1E10.mp4
ffmpeg -i "K-ON! Ep 11 - Crisis!.mkv" K-OnS1E11.mp4
ffmpeg -i "K-ON! Ep 12 (Season Finale) - Light Music!.mkv" K-OnS1E12.mp4
ffmpeg -i "K-ON! Ep 13 (Extra) - Winter Days!.mkv" K-OnS1E13.mp4
ffmpeg -i "K-ON! Ep 14 (OVA) - Live House!.mkv" K-OnS1E14.mp4
ffmpeg -i "K-ON! Ep 7 - Christmas!.mkv" K-OnS1E07.mp4
ffmpeg -i "K-ON! Ep 8 - Freshman Reception!.mkv" K-OnS1E08.mp4

gawk 正規表現

\w
これは単語を構成する任意のキャラクタ、つまり 文字、数字、それとアンダースコアにマッチする演算子である。 これは [[:alnum:]_] の簡潔な表現とみなして良い。
\W
これは単語を構成する要素にならない任意のキャラクタにマッチする 演算子である。これは [^[:alnum:]_] の簡潔な表現とみなして良い。
\<
これは単語の先頭にある空文字列にマッチする演算子である。 例えば、/\<away/`away'にマッチするが、 `stowaway'にはマッチしない。
\>
これは単語の末尾にある空文字列にマッチする演算子である。 例えば、/stow\>/`stow'にマッチするが、 `stowaway'にはマッチしない。
\y
これは単語の先頭、あるいは末尾の空文字列とマッチする演算子である (つまり語の区切りとマッチするということである)。 例えば、`\yballs?\y'は独立した単語として `ball' にも `balls'にもマッチする。注意! 他のGNU softwareは単語の区切りに\bを使うらしい。
\B
この演算子は単語中の空文字列にマッチする。言い換えると、`\B'は二つ の単語の構成要素文字の間にある空文字列にマッチするということである。例え ば、/\Brat\B/ は`crate'にマッチする。しかし、`dirty rat' にはマッチしない。`B'は簡単にいうと`\y'の反対語である。
\( .... \) () でマッチの塊を扱う
\n  \n は n 番目の () に対応 ([a-z]*) \1*




2018年8月3日金曜日

Draw histgrams to compare high and low


Write function to draw the histgram being optimized for recording blood pressure.

my_bp_hist_x <- function(par_xts,kikan,highlow,len,loc_x,loc_y,br,ymax,xmin,xmax,color){
  # kikan like kikan or "2018::06-21::2018-07-13"
  # highlow 1 or 2. 1 means high, 2 for low.(loc_y+0.04)
  # len is a number of samples.
  # loc_x is x-axis position kikan 0 to 1.
  # loc_y is y-axis.
  # br is breaks for hist()
  # ymax is max value of y-axis.
  # xmin and xmax are for x-axis
  # color is from 1 to 9?
  # function(bp.bangkok,"::2016-06-21,2",length(as.vector(bp.bangkok["2018-06-21::"][,2]),0.3,0.5,20,55,120,2)
  hist(as.vector(last(par_xts[kikan][,highlow],n=len)),breaks=br,xlim=c(xmin,xmax),ylim=c(0,ymax),col=color)
  # axis(side=2, pos=84,labels=F)
  axis(side=2, pos=round(mean(par_xts[kikan][,highlow])),labels=F)
  graph_dim <- par('usr')
  text( graph_dim[1] + graph_dim[2] *  loc_x   ,(graph_dim[4] - graph_dim[3]) * (loc_y+0) + graph_dim[3] ,paste("#",len,sep="="),adj=c(0,0))
  text( graph_dim[1] + graph_dim[2] * loc_x   ,(graph_dim[4] - graph_dim[3]) * (loc_y+0.1) + graph_dim[3] ,paste("mean",round(mean(par_xts[kikan][,highlow]),2),sep="="),adj=c(0,0))
  text( graph_dim[1] + graph_dim[2] * loc_x   ,(graph_dim[4] - graph_dim[3]) * (loc_y+0.2) + graph_dim[3] ,paste("sd",round(sd(par_xts[kikan][,highlow]),2),sep="="),adj=c(0,0))
  text( graph_dim[1] + graph_dim[2] * loc_x   ,(graph_dim[4] - graph_dim[3]) * (loc_y+0.3) + graph_dim[3] ,paste("period ",kikan,sep="="),adj=c(0,0))
}


Use as below which replaces Aug 2 entry.


par(mfrow=c(3,1))
my_bp_hist_x(bp.bangkok,"::2018-06-19",2,70,0.1,0.6,20,15,55,100,4)
my_bp_hist_x(bp.bangkok,"2018-06-21::2018-07-13",2,length(bp.bangkok["2018-06-21::2018-07-13"][,2]),0.1,0.6,20,15,55,100,5)
my_bp_hist_x(bp.bangkok,"2018-07-15::",2,length(bp.bangkok["2018-07-15::"][,2]),0.1,0.6,10,15,55,100,6)
par(mfrow=c(1,1))


par(mfrow=c(3,1))
my_bp_hist_x(bp.bangkok,"::2018-06-19",1,70,0.1,0.6,30,15,90,150,4)
my_bp_hist_x(bp.bangkok,"2018-06-21::2018-07-13",1,length(bp.bangkok["2018-06-21::2018-07-13"][,2]),0.1,0.6,20,15,90,150,5)
my_bp_hist_x(bp.bangkok,"2018-07-15::",1,length(bp.bangkok["2018-07-15::"][,2]),0.1,0.6,20,15,90,150,6)
par(mfrow=c(1,1))

2018年8月2日木曜日

Draw histgram in multiple panes.



  1. Draw histgrams in 3 panes. Each pane represents
    1. before 2018/06/19
    2. between 06/21 and 07/13
    3. after 07/15
  2. Set the mean value mark by axis command.
  3. Output overlay text for Standard Deviation, Mean value and the number of samples.

par(mfrow=c(3,1))
hist(as.vector(last(bp.bangkok["::2018-06-19"][,2],n=length(as.vector(bp.bangkok["2018-06-21::"][,2])))),breaks=20,xlim=c(55,100),ylim=c(0,15),col=3)
# axis(side=2, pos=84,labels=F) 
axis(side=2, pos=round(mean(bp.bangkok["::2018-06-19"][,2])),labels=F) 
graph_dim <- par('usr') 
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.64 + graph_dim[3] ,paste("#",round(length(bp.bangkok["2018-06-21::"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.70 + graph_dim[3] ,paste("mean",round(mean(bp.bangkok["::2018-06-19"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.76 + graph_dim[3] ,paste("sd",round(sd(bp.bangkok["::2018-06-19"][,2]),2),sep="="),adj=c(0,0))
hist(as.vector(bp.bangkok["2018-06-21::2018-07-13"][,2]),breaks=20,xlim=c(55,100),ylim=c(0,15),col=2)
axis(side=2, pos=round(mean(bp.bangkok["2018-06-21::2018-07-13"][,2])),labels=F) 
graph_dim <- par('usr') 
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.64 + graph_dim[3] ,paste("#",round(length(bp.bangkok["2018-06-21::2018-07-13"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.70 + graph_dim[3] ,paste("mean",round(mean(bp.bangkok["2018-06-21::2018-07-13"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 2.2   ,(graph_dim[4] - graph_dim[3]) * 0.76 + graph_dim[3] ,paste("sd",round(sd(bp.bangkok["2018-06-21::2018-07-13"][,2]),2),sep="="),adj=c(0,0))
hist(as.vector(bp.bangkok["2018-07-15::"][,2]),breaks=10,xlim=c(55,100),ylim=c(0,15),col=4)
axis(side=2, pos=round(mean(bp.bangkok["2018-07-15::"][,2])),labels=F) 
graph_dim <- par('usr') 
text( (graph_dim[1] + graph_dim[2]) / 1.8   ,(graph_dim[4] - graph_dim[3]) * 0.64 + graph_dim[3] ,paste("#",round(length(bp.bangkok["2018-07-15::"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 1.8   ,(graph_dim[4] - graph_dim[3]) * 0.70 + graph_dim[3] ,paste("mean",round(mean(bp.bangkok["2018-07-15::"][,2]),2),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 1.8   ,(graph_dim[4] - graph_dim[3]) * 0.76 + graph_dim[3] ,paste("sd",round(sd(bp.bangkok["2018-07-15::"][,2]),2),sep="="),adj=c(0,0))
par(mfrow=c(1,1))

2018年7月29日日曜日

compare PAYEMS and S&P500


Use classic plot function.

  • Don't forget to use as.Date to convert index to x-axis, otherwise axis will loose away.
  • Locate "axis" sentence in the script with a full caution. It may work at other places but may not either.

plot.default(as.Date(index(to.monthly(SP5)[kikan][,1])),to.monthly(SP5)[kikan][,1],axes=T,type='l',ylim=c(400,3000))
axis(side=2, pos=as.Date("2017-01-01"))
par(new=T)
plot.default(as.Date(index(to.monthly(SP5)[kikan][,1])),rep(2700,length(index(to.monthly(SP5)[kikan][,1]))),type='l',col=3,ylim=c(400,3000))
par(new=T)
plot.default(diff(PA[kikan]),axes=F,ylim=c(-900,900),col=2,type='h')




> to.monthly(SP5)[kikan][200]
        SP5.Open SP5.High SP5.Low SP5.Close  SP5.Volume
 8 2008  1269.42  1313.15 1247.45   1282.83 86266010000

plot.default(as.Date(index(to.monthly(SP5)[kikan][,1])),to.monthly(SP5)[kikan][,1],axes=T,type='l',ylim=c(400,3000),first=grid(28,10),tck=0.01)
par(new=T)
plot.default(diff(PA[kikan]),axes=F,ylim=c(-900,900),col=2,type='h')
abline(v=200)   # draw v-line at 2008 August
par(new=T)
plot.default(as.Date(index(to.monthly(SP5)[kikan][,1])),rep(1282,length(index(to.monthly(SP5)[kikan][,1]))),type='l',col=3,ylim=c(400,3000))




2018年7月26日木曜日

Manage Blood Pressure data



# read data as csv format and convert to xts to plot
#
Sys.setenv(TZ=Sys.timezone())
bp <- read.csv("~/Downloads/bp - シート1.csv")
system("rm \"$HOME/Downloads/bp - シート1.csv\"")
bp.xts <- xts(bp[,c(-1,-2,-6)],as.POSIXct(paste(bp$Date,bp$Time,sep=" "),tz=Sys.timezone()),tz=Sys.timezone())
# weekly average
apply.weekly(bp.xts[bp.xts$High > 95],mean)
#
#  draw the graph
#
plot(bp.xts[,c(1,2)][bp.xts$High > 95],col = c("red", "blue"),lwd=c(3,3,2,2),major.ticks='days',grid.ticks.on='days',type='p',ylim=c(60,160))
# draw a horizontal line at 130 as the benchmark
addSeries(xts(rep(130,length(index(bp.xts[bp.xts$High > 95]))),index(bp.xts[bp.xts$High > 95])),ylim=c(60,160),on=1,col=5,lwd=1)
# draw another line at 85.
addSeries(xts(rep(85,length(index(bp.xts[bp.xts$High > 95]))),index(bp.xts[bp.xts$High > 95])),ylim=c(60,160),on=1,col=5,lwd=1)
# add aux axis
axis(2,at=c(135,130,125,120,115,85))
axis(4,at=c(135,130,125,120,115,85))
# draw the horizontal line at the average
addSeries(xts(rep(mean(bp.xts[,1][bp.xts$High > 95]),length(index(bp.xts[bp.xts$High > 95]))),index(bp.xts[bp.xts$High > 95])),ylim=c(60,160),on=1,col=6,lwd=1)
addSeries(xts(rep(mean(bp.xts[,2][bp.xts$High > 95]),length(index(bp.xts[bp.xts$High > 95]))),index(bp.xts[bp.xts$High > 95])),ylim=c(60,160),on=1,col=6,lwd=1)
events <- xts(c("natrix","weight","abort natrix"),as.Date(c("2018-06-20", "2018-07-14","2018-08-09")))

addEventLines(events, srt=90, pos=2,col=10)

# prepare data according to system timezone. "Asia/Tokyo" in most cases.
#
bp.day <- merge(as.xts(as.vector(bp.xts[,1]),as.Date(index(bp.xts),tz=tzone(bp.xts))),as.vector(bp.xts[,2]))
colnames(bp.day)[1] <- "high"
colnames(bp.day)[2] <- "low"
#
# prepare timezone 2 hours behind "Asia/Tokyo".
#
bp.bangkok <- merge(as.xts(as.vector(bp.xts[,1]),as.Date(index(bp.xts),tz="Asia/Bangkok")),as.vector(bp.xts[,2]))
colnames(bp.bangkok)[1] <- "high"
colnames(bp.bangkok)[2] <- "low"
apply.weekly(bp.bangkok,mean)


#
# t test between before 2018-06-20 and after 2018-06-21
#  2018-06-20 is to add natrix into prescription.
#  2018-07-14 is to start weight training.
#
t.test(as.vector(last(bp.bangkok["::2018-06-20"][,2],n=length(as.vector(bp.bangkok["2018-06-21::"][,2])))),as.vector(bp.bangkok["2018-06-21::"][,2]))
#
# t test no.2
#
t.test(as.vector(bp.bangkok["2018-06-21::2018-07-13"][,2]),as.vector(bp.bangkok["2018-07-15::"][,2]))
#
# t test no.3
#
t.test(as.vector(last(bp.bangkok["::2018-07-13"][,2],n=length(as.vector(bp.bangkok["2018-07-15::"][,2])))),as.vector(bp.bangkok["2018-07-15::"][,2]))
#
# t test no.4
#
t.test(as.vector(last(bp.bangkok["::2018-06-19"][,2],n=length(as.vector(bp.bangkok["2018-08-16::"][,2])))),as.vector(bp.bangkok["2018-08-16::"][,2]))



#
# use anonymous function in line to calculate the average of the data sorted by the time to take samples of higher pressure.
#
mapply(function(x,y){return(mean(na.omit(bp.xts[strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") > strptime(x,"%H:%M:%S") & strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") < strptime(y,"%H:%M:%S")])
[,1]))},c("05:00:00","06:00:00","07:00:00","08:00:00","09:00:00","10:00:00","11:00:00","23:00:00","00:00:00"),c("05:00:00","06:59:00","07:59:00","08:59:00","09:59:00","10:59:00","11:59:00","23:59:00","00:59:00"))
#
# mean value of the lower prssure.
#
mapply(function(x,y){return(mean(na.omit(bp.xts[strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") > strptime(x,"%H:%M:%S") & strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") < strptime(y,"%H:%M:%S")])
[,2]))},c("05:00:00","06:00:00","07:00:00","08:00:00","09:00:00","10:00:00","11:00:00","23:00:00","00:00:00"),c("05:00:00","06:59:00","07:59:00","08:59:00","09:59:00","10:59:00","11:59:00","23:59:00","00:59:00"))
#
#  count the number of samples
#
mapply(function(x,y){return(length(na.omit(bp.xts[strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") > strptime(x,"%H:%M:%S") & strptime(format(index(bp.xts),"%H:%M:%S"),"%H:%M:%S") < strptime(y,"%H:%M:%S")])
[,1]))},c("05:00:00","06:00:00","07:00:00","08:00:00","09:00:00","10:00:00","11:00:00","23:00:00","00:00:00"),c("05:00:00","06:59:00","07:59:00","08:59:00","09:59:00","10:59:00","11:59:00","23:59:00","00:59:00"))


par(mfrow=c(3,1))
hist(as.vector(last(bp.bangkok["::2018-06-20"][,2],n=length(as.vector(bp.bangkok["2018-06-21::"][,2])))),breaks=20,xlim=c(55,100),ylim=c(0,15),col=3)
# axis(side=2, pos=84,labels=F) 
axis(side=2, pos=round(mean(bp.bangkok["::2018-06-20"][,2])),labels=F) 
hist(as.vector(bp.bangkok["2018-06-21::2018-07-13"][,2]),breaks=20,xlim=c(55,100),ylim=c(0,15),col=2)
axis(side=2, pos=round(mean(bp.bangkok["2018-06-21::2018-07-13"][,2])),labels=F) 
hist(as.vector(bp.bangkok["2018-07-15::"][,2]),breaks=10,xlim=c(55,100),ylim=c(0,15),col=4)
axis(side=2, pos=round(mean(bp.bangkok["2018-07-15::"][,2])),labels=F) 
graph_dim <- par('usr') 
text( (graph_dim[1] + graph_dim[2]) / 2   ,(graph_dim[4] - graph_dim[3]) * 0.70 + graph_dim[3] ,paste("mean",mean(bp.bangkok["2018-07-15::"][,2]),sep="="),adj=c(0,0))
text( (graph_dim[1] + graph_dim[2]) / 2   ,(graph_dim[4] - graph_dim[3]) * 0.75 + graph_dim[3] ,paste("sd",sd(bp.bangkok["2018-07-15::"][,2]),sep="="),adj=c(0,0))
par(mfrow=c(1,1))

2018年7月23日月曜日

IRON ORE VIX and USDJPY



Download monthly Iron Ore price from this URL.

Dont' forget cut&paste table data into the terminal and format them by the editor

cat <INPUT CSV FILE NAME> |sed 's/,//' |awk '{print $1"-"$2","$3","$4}' >  <OUTPUT CSV FILE NAME>

IRON_ORE <- as.xts(as.numeric(read.csv("~/icloud/R/iron_ore_price.csv")[2:240,2]),seq(as.Date("1998-07-01"),as.Date("2018-05-01"),by="months"))

summary(lm(to.monthly(YJUSDJPY)["2008::2017"][,4] ~ to.monthly(VIX)["2008::2017"][,4] + to.monthly(IRON_ORE)["2008::2017"][,4]))

> summary(lm(to.monthly(YJUSDJPY)["2008::2017"][,4] ~ to.monthly(VIX)["2008::2017"][,4] + to.monthly(IRON_ORE)["2008::2017"][,4]))



Call:

lm(formula = to.monthly(YJUSDJPY)["2008::2017"][, 4] ~ to.monthly(VIX)["2008::2017"][, 4] + to.monthly(IRON_ORE)["2008::2017"][, 4])

Residuals:
    Min      1Q  Median      3Q     Max
-32.025  -9.121   0.750   7.764  25.368

Coefficients:
                                                     Estimate Std. Error t value Pr(>|t|) 
(Intercept)                                    98.2969     3.0042  32.720  < 2e-16 ***
to.monthly(VIX)["2008::2017"][, 4]       -0.5002     0.1147  -4.361 2.80e-05 ***
to.monthly(IRON_ORE)["2008::2017"][, 4]   0.1470     0.0238   6.179 9.69e-09 ***

---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 11.57 on 117 degrees of freedom
Multiple R-squared:  0.316, Adjusted R-squared:  0.3043
F-statistic: 27.02 on 2 and 117 DF,  p-value: 2.249e-10



plot(merge(to.monthly(YJUSDJPY["2008::2017"])[,4],predict(lm(to.monthly(YJUSDJPY)["2008::2017"][,4] ~ to.monthly(VIX)["2008::2017"][,4] + to.monthly(IRON_ORE)["2008::2017"][,4]))))

IRON ORE,COPPER,VIX and USDJPY



> summary(lm(to.monthly(YJUSDJPY)["2008::2017"][,4] ~ to.monthly(VIX)["2008::2017"][,4] + to.monthly(COPPER)["2008::2017"][,4] +to.monthly(IRON_ORE)["2008::2017"][,4]))

Call:
lm(formula = to.monthly(YJUSDJPY)["2008::2017"][, 4] ~ to.monthly(VIX)["2008::2017"][,
    4] + to.monthly(COPPER)["2008::2017"][, 4] + to.monthly(IRON_ORE)["2008::2017"][,
    4])

Residuals:
    Min      1Q  Median      3Q     Max
-18.569  -7.629  -0.686   4.995  22.341

Coefficients:
                                          Estimate Std. Error t value Pr(>|t|) 
(Intercept)                              1.426e+02  6.451e+00  22.103  < 2e-16 ***
to.monthly(VIX)["2008::2017"][, 4]      -6.714e-01  9.754e-02  -6.883 3.18e-10 ***
to.monthly(COPPER)["2008::2017"][, 4]   -5.174e-03  6.956e-04  -7.438 1.92e-11 ***
to.monthly(IRON_ORE)["2008::2017"][, 4]  6.416e-02  2.261e-02   2.838  0.00536 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 9.565 on 116 degrees of freedom
Multiple R-squared:  0.5369, Adjusted R-squared:  0.5249
F-statistic: 44.82 on 3 and 116 DF,  p-value: < 2.2e-16

plot(merge(to.monthly(YJUSDJPY["2008::2017"])[,4],predict(lm(to.monthly(YJUSDJPY)["2008::2017"][,4] ~ to.monthly(VIX)["2008::2017"][,4] + to.monthly(COPPER)["2008::2017"][,4] +to.monthly(IRON_ORE)["2008::2017"][,4]))))


2018年7月22日日曜日

Calculate your mortgage.


CHECK THIS AS WELL

For the case interest rate is 0.875%, months to pay is 26 full years, and the remaining principle is 50,814,556JPY.

See aDFyear for each year and aDFmonth for each month.

> mortgage(P=50814556, I=0.875, L=(26*12), amort=T, plotData=T)

The payments for this loan are:


Monthly payment: ¥182,154.3 (stored in monthPay)
Total cost: ¥56,832,131

The amortization data for each of the 312 months are stored in "aDFmonth".

The amortization data for each of the 312 years are stored in "aDFyear".

> aDFyear
   Amortization Annual_Payment Annual_Principal Annual_Interest Year
1      50814556        2185851          1748224       437627.33    1
2      49066332        2185851          1763582       422268.88    2
3      47302750        2185851          1779076       406775.49    3
4      45523674        2185851          1794705       391146.00    4
                                     <skip>
25      4332107        2185851          2156580        29270.81   25
26      2175526        2185851          2175526        10324.87   26

2018年7月17日火曜日

Upgrade packages in R


When unable to upgrade packages as they are already loaded, check "package" panel and uncheck loaded ones.


Unchecking the mark is equal to the command "detach("package:RMySQL", unload=TRUE)".
Do same for "DBI".
*Note: Skip "restart R session before upgrade" as it will bring back unloaded packages.

R_proj$cat ~/.Rprofile 
source( "~/R_proj/startup.R" )
R_proj$cat ~/R_proj/startup.R
library(xts)
library(quantmod)
library(vars)
library(mondate)
# library(RMySQL) #junbi
library(forecast)
library(beepr)



Don't forget to comment and uncomment packages in initial start files as required.