DEVGRU

プログラミングと競馬予想について書きます

Angular + Sentry でやたらとUpdateが走る現象を解決する

Angular + Sentry 環境でやたらと Update (ツリーの更新)が走る現象を指摘されたところ、 微妙な問題があったので解決した。

どうやら zone.js と Sentry の Breadcrumb の両方で console.log() を置き換えようとしているのがいろいろまずいらしい(斜め読み)。

github.com

これについてエレガントな解決方法はどうやら観測範囲には見当たらないそうなので、シンプルにSentryのBreadcrumbを停止させた。

Sentry.init({
    dsn: (DSN),
    integrations: [
        // console.*() の置換に起因してChange Detectionが連発するので
        // Breadcrumb を諦めて console.*() の置換をやめる
        // Ref.
        // https://github.com/getsentry/sentry-javascript/issues/1883
        // https://docs.sentry.io/platforms/javascript/default-integrations/#breadcrumbs
        new Sentry.Integrations.Breadcrumbs({ console: false }),
    ],
});

これで現象は収まった。

Angularアプリケーションプログラミング

Angularアプリケーションプログラミング

AngularによるモダンWeb開発 基礎編 第2版

AngularによるモダンWeb開発 基礎編 第2版

Angular Webアプリ開発 スタートブック

Angular Webアプリ開発 スタートブック

Angular + Sentry で、 ErrorHandler から console.log() を呼び出すときの落とし穴

あんまりないと思うのだが、Angular と Sentry (Ravenではなく) を同時に使っているとき、ErrorHandler で Sentry にエラーを送ると同時に console.log() にエラー内容を出したいことがあるかもしれない(うちのプロジェクトではなぜかある)。

しかし、そのまま console.log() するとまずいことが起きたので、回避方法をここに書いておく。

発生したまずいこと、というのは再帰呼出しで、ブラウザの制限を食いつぶすまで再帰呼び出しが続いていたようだ。

これを回避するには、以下のようにする。

import { consoleSandbox } from '@sentry/utils/misc';

class MyErrorHandler extends ErrorHandler {

    handleError(err: any) {
         consoleSandbox(() => {
              console.error(err.originalError || err);
         });
    }
}

これで再帰呼び出しは起こらないようになった。

Angularアプリケーションプログラミング

Angularアプリケーションプログラミング

Angularデベロッパーズガイド  高速かつ堅牢に動作するフロントエンドフレームワーク

Angularデベロッパーズガイド 高速かつ堅牢に動作するフロントエンドフレームワーク

  • 作者: 宇野陽太,奥野賢太郎,金井健一,林優一,吉田徹生,稲富駿,丸山弘詩
  • 出版社/メーカー: インプレス
  • 発売日: 2017/12/15
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

大きなテキストファイルをSCPするときは-Cをつけると速い

機械学習用のEC2インスタンスにファイル転送する際、大きなJSONファイルをSCPすると非常に時間がかかっていた。

しかし、オプション1つつけるだけでかなり早くなった。

つけたオプションは -C。以下のように使う。

scp -C from host:/to

実際手元で試してみたら、以下のように違いが出た。

-C なし 43MB   1.1MB/s   00:40
-C あり 43MB   9.8MB/s   00:04

おおよそ10倍の差がついた。

EC2インスタンスは時間課金なので、この差は大きいだろう。

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版

Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)

Amazon Web Services エンタープライズ基盤設計の基本

Amazon Web Services エンタープライズ基盤設計の基本