P48 ?.演算子[Safe Navigation Operator]

template: '<div>{{member?.name}}</div>'

?.演算子は、オブジェクトmemberが空であるかどうかを確認し、空でない場合だけnameプロパティにアクセスする様になる。

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

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

P47 {{...}}式の注意点

【利用できない演算子がある】
副作用を伴う演算子は、{{...}}式では禁止されている。
具体的には、以下の様なものです。
・代入演算子(=、+=、-=など)
・new演算子
・";"や","など連結を表す演算子
・インクリメント/デクリメント演算子(++、--)
・ビット演算子(|、&)
逆に、{{...}}でのみ利用できるテンプレート演算子もある。
具体的には、存在演算子「?.」と、パイプ演算子「|」である。

【グローバル名前空間のオブジェクトを参照できない】
window、document、console、Mathのようなグローバル名前空間上のオブジェクトに{{...}}式からアクセスすることはできない。
そのため、{{AppComponent.name}}のような表現をしてはならない。

【{{...}}式を利用する上でのガイドライン
・式が副作用が伴わないこと(=他の値に影響がでないこと)
・冪等であること
・短時間で実行できること
・シンプルであること

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

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

P44 データバインディング構文

データ方向 種類 記法
コンポーネント→ビュー Interpolation(補間) {{...}}
コンポーネント→ビュー プロパティ/属性バインディング(※1) [property]="value"
ビュー→コンポーネント イベントバインディング (event)="handler"
コンポーネント⇔ビュー 双方向バインディング [(target)="value"]

※1 プロパティバインディングの特殊系として、スタイルバインディング/クラスバインディングという構文もある。

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

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

P34 Angularアプリのコンパイル/実行に必要となる設定ファイル

設定ファイル 概要
package.json Angular、またはアプリ本体で利用するライブラリ情報などを定義
tsconfig.json TypeScriptコンパイラーの動作を定義
systemjs.config.js モジュールローダー(SystemJS)の設定情報

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

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

P107 キャプチャフィルタとディスプレイフィルタ

【概要】
 ・キャプチャフィルタ:キャプチャするパケット自体を絞り込む機能
 ・ディスプレイフィルタ:絞り込んだパケットの表示を絞り込む機能
 キャプチャフィルタとディスプレイフィルタでは構文が異なるため、注意が必要

【キャプチャフィルタ】
 tcpdumpと同じpcap-filterの構文で設定可能
 構文をすべて入力し終えたとき、ボックスが緑色であれば正しい構文、赤色であれば構文エラー
 not(!)やand($$)やor(||)も指定可能

(設定方法)
 ・"Wiresharkへようこそ”画面にあるキャプチャフィルタのボックスに入力する方法

f:id:yoneyore:20180430152819p:plain
キャプチャフィルタ・・・を入力の箇所
 ・[キャプチャインタフェース] - [キャプチャフィルタ]から選択する方法
f:id:yoneyore:20180430152822p:plain
キャプチャフィルタの箇所

(文法)

Proto Dir Type ID

 ・Proto:プロトコルを指定(ip, tcp, udp, arp, ether, 省略した場合はTypeで指定されたフィールドを持つすべてのプロトコルが指定)
 ・Dir:通信方向を指定(ex. src, dst, 省略した場合はsrc or dst)
 ・Type:IDの種類を指定(ex. host, port, 省略した場合はhost)
 ・id:Typeで指定した属性に呼応する値

(基本的なキャプチャフィルタ指定例)

キャプチャするパケット キャプチャフィルタ
TCPパケット tcp
送信元や送信先IPアドレスが192.0.0.1 ip host 192.0.0.1
送信先のポート番号が80/tcp tcp dst port 80
送信先のポート番号が80/tcpを除く not tcp dst port 80
送信先のポート番号が80/tcpまたは443/tcp tcp dst port 80 or tcp dst port 443

 
(詳細リンク先)
Manpage of PCAP-FILTER
CaptureFilters - The Wireshark Wiki


【ディスプレイフィルタ】
 pcap-filterとはまったく異なる構文で設定
 構文をすべて入力し終えたとき、ボックスが緑色であれば正しい構文、赤色であれば構文エラー
 not(!)やand($$)やor(||)も指定可能
 
(設定方法)
 ・Wiresharkのメイン画面にあるフィルタツールバーのボックス

f:id:yoneyore:20180430152825p:plain
表示フィルタの箇所
 ・[分析] - [表示フィルタ]から選択する方法

(文法)

fieldname relation value

 ・fieldname:プロトコルを指定(ex. eth, arp, tcp, udp, http)[※1]
 ・releation:比較演算子を設定(ex. eq[==], gt[>], lt[<], ge[>=], le[<=])
 ・value:文字列や数値を指定、文字列の場合はダブルクォートで挟む必要有

  ※1 各フィールドにある下位のフィールドを指定する場合は、フィールド名.下位のフィールド名のように指定する。

(基本的なディスプレイフィルタ指定例)

表示するパケット ディスプレイフィルタ
TCPパケット tcp
送信元や送信先IPアドレスが192.0.0.1 ip.addr == 192.0.0.1
送信先のポート番号が80/tcp tcp.dstport == 80
送信先のポート番号が80/tcpを除く not tcp.dstport == 80
送信先のポート番号が80/tcpまたは443/tcp tcp.dstport == 80 or tcp.dstport == 443

(詳細リンク先)
6.4. Building display filter expressions

パケットキャプチャ入門 第4版― LANアナライザWireshark活用術―

パケットキャプチャ入門 第4版― LANアナライザWireshark活用術―

パケットキャプチャの教科書 (Informatics&IDEA)

パケットキャプチャの教科書 (Informatics&IDEA)

プロキシ配下でeclipseを使うとマーケットプレイスなどにアクセスできない

事象

プロキシ配下でeclipseからマーケットプレイスなどでモジュールを引っ張ってこようとしても407エラーなどになってしまう。
他にも、gradleで以下の様なエラーが発生してしまう。(※1)

Could not install Gradle distribution from 'https://services.gradle.org/distributions/gradle-6.3-bin.zip'.
Unable to tunnel through proxy. Proxy returns "HTTP/1.1 407 authenticationrequired"

※1 407はプロキシ認証のエラーであるが、実はそこまで届いていなかった。

原因

Java8以降でトンネリング経由のbasic認証が止められてしまっているため

確認ポイント

$JAVA_HOME/jer1.8.0_XXX/lib/net.propertiesの以下をコメントアウトする
jdk.http.auth.tunneling.disabledSchemes=Basic

eclipseの内蔵JDKを用いている場合も同様である。
なお、Java11以降は、$JAVA_HOME/conf/net.propertiesに移動している。

Proxomitron ,BlackJumboDog, MAPEなどのソフトを介して通信する

eclipseのネットワーク設定が怪しい場合、外部との通信を別ソフトに任せる。
構築されているプロキシ環境など、通常net.propertiesを設定変更すればうまくいきそうなのに駄目な環境が存在した。
その際、Windows上のプロキシを経由すると何故かうまくいく場合があった。
(技術的な裏付けは行えず仕舞いではあるが・・・)

補記事項

  • 設定 の [一般] - [ネットワーク接続]で正しくネットワーク設定されているか確認すること。

 ネットワーク接続のところでアクティブ・プロバイダー(※2)のとこなど設定方法が分からないまま適当に設定しているのであれば、見直すこと。また、同じ設定を一度違う値に書き換えて、再度元の設定に書き換えるとうまくいくケースがあった。(※3)

  • 環境変数にproxy_httpなどが設定されていた場合、邪魔になる場合があるので怪しむこと

 但し、上記で記載したプロキシソフトがその様な設定を入れる場合もある

  • MavenやGradleなどでは別途そちらの環境設定ファイルに記述してあげないといけない場合がある。

 (ここの挙動差異がいまいち何がトリガーになっているのかきちんと理解できていない…)

※2 アクティブ・プロバイダーの意味

  • 直接:全てプロキシー・サーバー無しで通信を行う
  • マニュアル:プロキシーのバイパスで記述したプロキシー・サーバーで通信を行う
  • ネイティブ:OSで検出したプロキシー・サーバーで通信を行う

※3 長年プロキシ配下で利用しているが、eclipseのネットワークの設定は怪しい動きすること多い

プロキシの環境変数がうまく引き継がれない

[事象]
プロキシ環境下でyumコマンドなどを実行する際に、環境変数にプロキシの設定などを行っているのに参照が行われずにエラーになってしまう。

[原因]
sudoコマンドを利用しているのにオプションをつけていなかったため。

[対応方法]
-Eコマンドを付与して実行する。

[参考リンク]
mikio.github.io
qiita.com

新しいLinuxの教科書

新しいLinuxの教科書