今月のお買い物

BUFFALO Giga対応 金属筺体 電源内蔵 8ポート ブラック スイッチングハブ LSW5-GT-8NS/BK

https://www.amazon.co.jp/gp/product/B00I5871QU/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

光ネクストのスループットに適した、Giga対応のベストセラー1位のスイッチングハブ。以前に予備としてストックしていたのですが、NTTルータのPPPoEブリッジに充てたため、宅内LAN配線のためもう1台必要となったものでした。

これで、ひかりTVのストリーミングもスムーズに鑑賞できそうです。

電話番号降ってキター

NTTルータ(PR-500KI)をPPPoEブリッジにした直後、固定電話の開通テストをしたところ着信できない症状が出て深刻に悩んでいたのですが、2~3日で電話番号が降ってきました。些細な杞憂というものだったのでしょうか、一安心。現在も症状が続いています。

RTX810でひかりTV

取りあえず去年から放置していたYAMAHAルーター RTX810 を置いてみました。古い無線ルーターを押し入れから引っ張り出してインターネットには繋がったのですけどね。この段階では、ひかりTVのチューナーがルーティングできません。コンソールから以下のコマンドを打ちます。

WANのインタフェースの設定
(LAN2ポートを使用)
pp select 1
pp always-on on
pppoe use lan2
pp auth accept pap chap
pp auth myname (ISPに接続するID) (ISPに接続するパスワード)
ppp lcp mru on 1454
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp mtu 1438
ip pp nat descriptor 1
pp enable 1
ip route default gateway pp 1
ひかりTVの設定 ipv6 route default gateway dhcp lan2
ipv6 prefix 1 dhcp-prefix@lan2::/64
ipv6 lan1 address dhcp-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan1 mld router version=2
ipv6 lan2 address dhcp
ipv6 lan2 dhcp service client
ipv6 lan2 mld host version=2
ngn type lan2 ntt
NATの設定 nat descriptor type 1 masquerade
DHCPの設定 dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.0.3-192.168.0.100/24
DNSの設定 dns server select 1 dhcp lan2 aaaa .
dns server select 2 pp 1 any . restrict pp 1
dns private address spoof on
# save
# restart

してルーター配下に接続できました。^^);

参考URL:

http://jp.yamaha.com/products/network/solution/flets/flets_other_service/television/

YAMAHAルーターRTX810の設置完了に関する詳細

http://www.5cho-me.com/wordpress/172156

RTX810 設定ファイルコマンド

不揮発性メモリ上の設定ファイルの確認

show config list
* 0   2017/01/20 17:21:50    3762 086/086
  0.1 2017/01/20 17:21:17    3452 084/084
  0.2 2017/01/20 17:18:17    3417 085/085

外部メモリ(SDカード)への設定ファイルのバックアップ

copy config 0 sd1:config.txt

外部メモリ(SDカード)から設定ファイルの書き換え

copy config sd1:config.txt 0

任意の設定リストの読み込み

set-default-config 2
restart

設定ファイルの削除

delete config filename

Windows10 ショートカット

[Windows]+[H] 共有(いまいち何のガジェットか分かりません。)

[Windows]+[F] フィードバックHub(サポセンですね。)

[Windows]+[S] コルタナさん(PCに向かってしゃべるの恥ずかしい。)

[Windows]+[W] Windows Ink ワークスペース(タッチデバイス向け?)

[Windows]+[T] アクセシビリティ(ユニバーサルデザイン大事。)

[Windows]+[I] 設定(まだ詳しい隠れセッティングがありそう。)

[Windows]+[P] スクリーン設定

[Windows]+[X] 各種ツールの一覧(すごく便利。)

Windows7の頃から使い倒している、タスクバーのピン止めアプリの起動に[Windows]+[数字キー]は便利ですね。

タイマー制御

intervalID = setInterval(function, milliseconds) メソッドで繰り返される関数の呼び出しを止めるには、clearInterval(id)に戻り値を指定します。例えば、要素の属性値onclick に

onclick=”clearInterval(intervalID)”

JS のコードに関数を指定して呼び出す方法もありますが入れ子になっていると上手く行かないこともあります。

https://stuffy.mydns.jp/~gusachan/javascript/stopwatch.html

NaNの真実

未定義値の変数を計算、出力しようとすると、NaN(Not a Number)がでます。

typeof NaN === 'Number'   //true (NaNはNumberオブジェクト)
NaN === NaN            //false (NaNは自分自身ではない?)
 NaN ===!NaN          //true (NaNはNaNではないが正解?)
var arg;
var arm = function() {
    arg += 6;
  return arg;
}
alert(arm());

未定義値を代入、参照すると

var arg;
var arm = function() {
    arg += 6;
  return arg;
}
alert(arg);

未定義値(グローバル変数の参照)は、

ルーターアタック

WLR-300NX(corega) ルーターがお亡くなりになりました。

SSIDを変更してmacアドレスフィルタリングをしているときにブリッジモードからルーターモードに切り替える項目がなくなりました。そのあとも攻撃は続き、管理者パスワードの設定もできなくなったのでファームウェアを当てようとしましたが、最終的にはルーターの設定画面にアクセスできなくなりました。その間、ずっと回線を接続していたこちらも悪いのですけどね。5,000円もしたルーターも廃棄です。(泣き

ドット記法

2.3 オブジェクトのプロパティは、ドット記法もしくはブラケット記法で取得・設定・更新することができます。

// frank オブジェクトを生成

var frank = new Object();
frank.living = true;
frank.age = 56;
frank.gender = 'male';
frank.location = 'Hollywood';
frank.getGender = function() { return frank.gender; };

// プロパティを取得

var str = frank.living + "\n" + frank.age + "\n" + frank.location + "\n" + frank.getGender()
alert(str);

// プロパティを更新

frank.living = false;
frank.age = 99;
frank.gender = 'female';
frank.location = 'Newyork';
frank.getGender = function() { return 'Gender = ' + frank.gender; };
var str = frank.living + "\n" + frank.age + "\n" + frank.location + "\n" + frank.getGender()
 alert(str);

変数の宣言とエラー

今回はJavaScript 第6版』David Flanagan (著),    村上 列 (翻訳)  から予約語、var の省略、値の代入前の変数の参照、変数の上書きなど初歩的なJavaScript の挙動について抜粋しました。(var の語源はvariableからだそうです。)

2.4.1 予約語
JavaScript には予約語がたくさんあります。以下に挙げるような単語は、プログラム中で識別子として使うことはできません。

break delete function return typeof
case do if switch var
catch else in this void
continue false instanceof throw while
debugger finally new true with
default for null try

さらに、以下の単語は、通常のJavaScriptコードでは識別子として使えますが、strictモードの場合は予約語として扱われ識別子には使えません。

implement let private public yield
interface package protected static

JavaScript には、たくさんのグローバル変数や関数があらかじめ定義されています。以下のような定義済みのグローバル変数やグローバル関数と同じ名前を識別子に使うことは避けた方が無難です。

argument encodeURI Infinity Number RegExp
Array encodeURIComponent isFinite Object String
Boolean Error isNaN parseFloat SyntaxError
Date eval JSON parseInt TypeError
decodeURI EvalError Math RangeError undefined
decodeURIComponent function NaN ReferenceError URIError

3.9 変数の宣言

JavaScript で変数の宣言をするには、キーワード var を使います。

var i;
var sum;

複数の変数をカンマ(,)で区切って宣言することもできます。

var i, sum;

for ループやfor/in ループでvar 文を記述することで、ループの一部としてループ変数を宣言することもできます。

for (var i = 0; i < 10; i++) {
  var sum += i;
}
return sum;

もしvar 文で変数の初期値を設定しなかった場合は、宣言された変数は、何か値が代入されるまで undefined(未定義値)になります。

3.9.1 宣言の繰り返しと省略

var 文で宣言されていない変数から値を読みだした場合は、エラーになります。ECMAScript 5 の strict モードでは、宣言されていない変数に対して値を代入してもエラーになります。しかし、歴史的には、つまり非 strict モードでは、宣言されていない変数に対して値を代入した場合、JavaScript はグローバルオブジェクトのプロパティとして変数を作成します。ただし、完全に同じというわけではありません。~(中略)~ つまり、グローバル変数を宣言しなくても問題ないということです。ただし、このようなプログラミングスタイルは決してよいものとは言えません。変数は var を使って宣言するようにしてください。

3.10 変数のスコープ

プログラムのソースコード中における変数の有効範囲をスコープといいます。グローバル変数のスコープは、プログラム全体です。ローカル変数のスコープは、その変数が宣言された関数の中だけに限定されます。関数の中にグローバル変数と同じ名前のローカル変数があった場合は、ローカル変数が優先されます。つまり、グローバル変数と同じ名前でローカル変数や仮引数を宣言すると、グローバル変数が隠されます。

var scope ="global";          // グローバル変数を宣言する。
function checkscope() {
  var scope = "local";        // 同じ名前でローカル変数を宣言する。
  return scope;          // ローカル変数の値が返される。
}
checkscope()                  // => "local"
scope = "global";        // var 文を省略してグローバル変数を宣言する。
function checkscope2() {
  scope = "local";   // あれ!これはグローバル変数を変更したことになる。
  myscope = "local"; // 代入で新たなグローバル変数が暗黙的に宣言。      
  return { scope, myscope }    // 2つの値を返す。
}
checkscope2()                // => {"local","local"}
scope                        // => "local": グローバル変数が変更された。
myscope                // => "local": グローバルな名前空間に追加された。

4.13 関数の定義方法(宣言、式、もしくはコンストラクタ)

// 関数コンストラクタ:最後のパラメータには関数のロジック(関数本体)が入る

var addConstructor = new Function('x',  'y', 'return x + y');

// 関数宣言(function 文)

function addStatement(x, y) {
  return x + y;
}

// 関数式

var addExpression = function(x, y) {
  return x + y;
};

次の例では、foo プロパティをグローバルオブジェクトに格納し、異なるスコープからfoo プロパティにアクセスします。

var foo = 'bar';  // foo はグローバルオブジェクト直下に格納されたグローバル変数
var myApp = function() {  // 関数はスコープを作ることを思い出して
  var run = function() {
    alert(foo);  // 出力: 'bar'
}();
}
myApp();