Web Analytics

Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

20240704

https://www.tumblr.com/espio999/708790531670556672/%E5%8E%9F%E5%89%871%E6%90%8D%E3%82%92%E3%81%97%E3%81%AA%E3%81%84%E5%8E%9F%E5%89%872%E5%8E%9F%E5%89%871%E3%82%92%E6%B1%BA%E3%81%97%E3%81%A6%E5%BF%98%E3%82%8C%E3%81%AA%E3%81%84
espio999.tumblr.com

アクセス確認

impsbl.hatenablog.jp

再び、日本からの不審アクセスが活発になっていた。特定できたのは、

  • 10分ごとの定期アクセス
  • 1時間ごとの定期アクセス

前者は、シンガポールからの不審アクセス同様、このブログだけをターゲットとして特定しているもの。後者については、アクセスごとに他のサイトもアクセスしている様子があるため、広範な情報収集を目的として、本格的なボットのようだ。

いずれもシンガポールの不審アクセスを実行しているのとは異なるユーザーだろう。ボットの実行環境がPCということに加えて、参照方法が効率的だ。定期的に参照しているのはトップURLのみで、各アーカイブの参照は1日に1度だけ実行している。無駄が少ない。

シンガポールの不審アクセスが、ここまで目立つ理由の一つは、その非効率さだ。各アーカイブだけでなく、aboutページまで、不必要に何度も繰り返し参照している。もしPCと同じように効率的な参照ができるならば、すでに実施していることだろう。
端的に、力技に依存して、改善する気配も皆無という特性を前提に、同じユーザーの仕業とは思えない。

ベンチマーク

前日比順年初来順

日興・海外新興国 1.21% 123.23
TOPIX 0.92% 122.48
日経平均 0.82% 122.26
さわかみ 0.76% 118.27
ひふみ投信 0.75% 119.69
eMAXIS Slimオルカン 0.67% 128.39
ポートフォリオ 0.66% 112.25
MSCIコクサイ 0.58% 128.74
ひふみワールド 0.45% 129.83
ひふみらいと 0.40% 100.01
大和・グローバルREIT 0.12% 110.63

ひふみワールド 0.45% 129.83
MSCIコクサイ 0.58% 128.74
eMAXIS Slimオルカン 0.67% 128.39
日興・海外新興国 1.21% 123.23
TOPIX 0.92% 122.48
日経平均 0.82% 122.26
ひふみ投信 0.75% 119.69
さわかみ 0.76% 118.27
ポートフォリオ 0.66% 112.25
大和・グローバルREIT 0.12% 110.63
ひふみらいと 0.40% 100.01

指数

impsbl.hatenablog.jp

TOPIX
日経225JPY
グロース
REIT

海外

impsbl.hatenablog.jp

中国、インド、ブラジル
香港 0.01 0.29 1.18 0.28
上海 0.92 0.08 -0.49 -0.83
ムンバイ 0.56 -0.04 0.69 0.08
1309 乖離率 -1.05 -1.14 -2.14 -1.23
1325 乖離率 2.61 2.90 3.67 0.89
1678 乖離率 0.60 0.83 1.71 0.82
1309
中国
1325
ブラジル
1678
インド

個別

impsbl.hatenablog.jp

PKSHA

www.nikkei.com

東京証券取引所プライム市場への市場区分変更申請(以下、「変更申請」)に向けた準備を行う旨の決議をいたしました

  • 変更申請日等は未定
  • 変更申請に向けた準備を中止する可能性
  • 変更申請が株式会社東京証券取引所の承認を受けられるかどうかにつきましても、同様に不確定
NTT

F#

impsbl.hatenablog.jp

メモ化

thesharperdev.com

let memoize f =
  let dict = Dictionary<_, _>();

  fun c ->
    let exist, value = dict.TryGetValue c
      match exist with
      | true -> value
      | _ -> 
        let value = f c
        dict.Add(c, value)
        value
  • 関数memoizeは、引数として関数fを受け取る。
  • ジェネリック型のkey、valueを持つディクショナリーを定義する。
  • 引数cを受け取る、無名関数を定義する。
    1. 引数cを使って、ディクショナリーからキーと値を取得する。
    2. キーが存在したら、値を返す。
    3. キーが存在しなかったら、関数fに引数cを与えて実行する。
    4. 引数cをキー、実行結果を値として、ディクショナリーに追加する。
    5. 実行結果を返す。

例えば、フィボナッチ数列を求める再帰関数を引数fに指定すれば、メモ化再帰として実行できる。