それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

lvm でディスクのサイズをパパッと変更するコマンド

lv で管理しているボリュームのサイズは簡単に増減できるんですね。

ディスクのサイズを増やすとき

sudo lvextend --resizefs --size +10G /dev/mapper/my-root

ディスクのサイズを減らすとき

sudo lvreduce --resizefs --size -10G /dev/mapper/my-root

resizefs

オプションにresizefs をつけるとLVMのディスクのファイルシステムのフォーマットにあわせて、増減してくれる。わーい。

便利

2018-06-18 アレコレ試した感じだと、マウントしたままでも行けるっぽい。LVMに依る管理は完成してるな。

lvm でオンラインリサイズできたのか

ディスクのボリュームを動的に変更する。

ハードディスクやSSDのサイズを動的に変えるには、いちいちリカバリーモードで起動するとか、ReadOnlyで起動するとか、ライブCDで起動するかそういう事が必要だと思ってた。

むしろ思い込んでいた。

LVMでリサイズして遊んでて、あれ、もしかしてマウントしたままリサイズできるんじゃね?とおもって試してた。

/ root をマウントした状態でリサイズを命令しったった

まいかい、mount を外してたけど、あそんでてコマンドミスって、あ、、、やらかしたともったら、そのままリサイズされて完了した。

takuya@:/$ sudo lvextend --resizefs --size +10G /dev/mapper/my-root
  Size of logical volume my/root changed from 40.00 GiB (10240 extents) to 50.00 GiB (12800 extents).
  Logical volume my/root successfully resized.
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/mapper/my-root is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/my-root is now 13107200 (4k) blocks long.

え、うそ。実行完了されちゃった。 VGには100GBほど空き容量がある状態です。10GBは確保できるのですが、実行できるんだ。。。

結果を見てみる。

あ、、、ほんとに増えてる。

takuya@:/$ df -h
ファイルシス           サイズ  使用  残り 使用% マウント位置
/dev/mapper/my-root     50G   17G   31G   35% /

LVS のビフォー・アフターも比較してみる。

ビフォーアフターの状態がこれ。

before

takuya@:~$ sudo lvs
  LV    VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  my -wi-ao---- 40.00g

after

takuya@:/$ sudo lvs
  LV    VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  my -wi-ao---- 50.00g

もうLVMでいいじゃん。

ファイルシステムやmapperにはアレコレあるけど容量の管理は もうLVM で十分な気がしました

参考資料

bashでCtrl-Cなどシグナルをトラップ(検出)して終了時の処理を書く

bashで ctrl-C の検出をするには

bash でCtr-C の検出をする必要がある利用場面がある。たとえば、時間のかかる処理を書いていて途中で止めたいとか、スクリプトを作っていて中間ファイルを確実に消したいとか、Ctr-Cの強制終了で止めたときに「なにか処理」を実施したいことがったります。

trap を使う。

trap を使うことで実現ができる

#!/usr/bin/env bash 

trap 'echo Trapped; echo end' 2

sleep 10

trap にわたすのは、文字列ではなく「コマンド」

先の例であれば、文字列を渡していますが、正確には「コマンド(として実行できる文字)」を渡しています。

そのため、関数を作って次のようなこともできます。

#!/usr/bin/env/sh
function on_signal_interrupt( ){
  echo interrupted. shutdown ;
}

trap on_signal_interrupt 2

sleep 60

ありがちなミス。

trap を使おうとしてありがちなミスが次の例です。

trap で関数が登録する前に、時間のかかる処理を書いても当然実行されません。

#!/usr/bin/env bash 

sleep 10 ## ここで時間のかかる処理。→ Ctr-C

trap 'echo Trapped; echo end' 2 # ←実行されない

ソースファイルにコードを追記するので、ついつい末尾に追加してやらかすことは結構あるので注意。

複数のシグナルをまとめてキャッチする。

trap  "echo trapped " 1 2 3 4 5 

まとめて書けばまとめてトラップしてキャッチできる。

まとめて書いても、どのシグナルか区別できない・・・

シグナルをまとめて受け取ったとしても、関数内でそれを区別できないっぽいです。

#!/usr/bin/env bash 

function on_siginal( ){ 

  echo 
  echo arguments is ...
  echo $@
  echo signal_traoped
}
trap on_siginal 1 2 3 

sleep 10

実行結果

takuya@Desktop$ bash signal_trap.sh
^C
arguments is ...

signal_traoped

まとめて受け取ってCASEで分岐出たら便利なのにね。できなさそう。

trap の使い方の調べ方

trap は、 シェルの組み込みコマンドなので、man ではなく、help で使い方を確認することができます。

takuya@Desktop$ help trap
trap: trap [-lp] [[arg] signal_spec ...]
    シグナルまたは他のイベントをトラップします。

    シェルがシグナルを受け取るか他の条件が発生した時に実行されるハンドラーを
    定義および有効化します。

    ARG はシグナル SIGNAL_SPEC を受け取った時に読み込まれ実行されるコマンド
    です。もし ARG が無い (かつシグナル SIGNAL_SPEC が与えられた場合) または
    `-' の場合、各指定したシグナルはオリジナルの値にリセットされます。
    ARG が NULL 文字列の場合、各シグナル SIGNAL_SPEC はシェルにおよび起動さ
    れたコマンドによって無視されます。

    もし SIGNAL_SPEC が EXIT (0) の場合、ARG がシェルの終了時に実行されます。
    もし SIGNAL_SPEC が DEBUG の場合 ARG は単に毎回コマンドの前に実行されます。
    もし SIGNAL_SPEC が RETURN の場合 ARG はシェル関数または . か source に
    よって実行されたスクリプトが終了した時に実行されます。 SIGNAL_SPEC が ERR
    の場合、-e オプションが有効な場合にシェルが終了するようなコマンド失敗が発
    生するたびに実行されます。

    もし引数が与えられない場合、 trap は各シグナルに割り当てられたコマンドの
    一覧を表示します。

    オプション:
      -l    シグナル名とシグナル番号の対応一覧を表示します
      -p    各 SIGNAL_SPEC に関連づけられた trap コマンドを表示します

    各 SIGNAL_SPEC は <signal.h> にあるシグナル名かシグナル番号です。シグ
    ナル名は大文字小文字を区別しません。また SIG 接頭辞はオプションです。
    シグナルはシェルに対して "kill -signal $$" で送ることができます。

    終了ステータス:
    SIGSPEC が無効か、無効なオプションを与えられない限り成功を返します。

wait: trap と合わせて知っておくと便利なBashの関数

そもそもTrapをどう使えばいいのか、疑問に思うこともあるけど、wait で他のプロセスを待ち合わせてるときとかに便利かもしれないですね。 wait のマニュアルはコチラ。

takuya@Desktop$ help wait
wait: wait [-n] [id ...]
    ジョブの実行完了を待ち、終了ステータスを返します。

    ID で識別される各プロセス (プロセスID または ジョブ指定) を待ち、その終了
    ステータスを返します。ID が与えられない場合、現在アクティブな全ての子プ
    ロセスを待ち 0 を返します。ID がジョブ指定の場合ジョブのパイプラインに
    ある全てのプロセスを待ちます。

    終了ステータス:
    最後の ID の終了ステータスを返します。IDが無効であるか、無効なオプ
    ションが与えられた場合には失敗を返します。

シグナル一覧

シグナルは、man signal で一覧を見ることができる。

    No    Name         Default Action       Description
     1     SIGHUP       terminate process    terminal line hangup
     2     SIGINT       terminate process    interrupt program
     3     SIGQUIT      create core image    quit program
     4     SIGILL       create core image    illegal instruction
     5     SIGTRAP      create core image    trace trap
     6     SIGABRT      create core image    abort program (formerly SIGIOT)
     7     SIGEMT       create core image    emulate instruction executed
     8     SIGFPE       create core image    floating-point exception
     9     SIGKILL      terminate process    kill program
     10    SIGBUS       create core image    bus error
     11    SIGSEGV      create core image    segmentation violation
     12    SIGSYS       create core image    non-existent system call invoked
     13    SIGPIPE      terminate process    write on a pipe with no reader
     14    SIGALRM      terminate process    real-time timer expired
     15    SIGTERM      terminate process    software termination signal
     16    SIGURG       discard signal       urgent condition present on socket
     17    SIGSTOP      stop process         stop (cannot be caught or ignored)
     18    SIGTSTP      stop process         stop signal generated from keyboard
     19    SIGCONT      discard signal       continue after stop
     20    SIGCHLD      discard signal       child status has changed
     21    SIGTTIN      stop process         background read attempted from control terminal
     22    SIGTTOU      stop process         background write attempted to control terminal
     23    SIGIO        discard signal       I/O is possible on a descriptor (see fcntl(2))
     24    SIGXCPU      terminate process    cpu time limit exceeded (see setrlimit(2))
     25    SIGXFSZ      terminate process    file size limit exceeded (see setrlimit(2))
     26    SIGVTALRM    terminate process    virtual time alarm (see setitimer(2))
     27    SIGPROF      terminate process    profiling timer alarm (see setitimer(2))
     28    SIGWINCH     discard signal       Window size change
     29    SIGINFO      discard signal       status request from keyboard
     30    SIGUSR1      terminate process    User defined signal 1
     31    SIGUSR2      terminate process    User defined signal 2

参考資料

partprobeが見つからない。

partprobe を実行しようとしたら

コマンドが見つからない。 partprobe command not found .になった。

partprobe ずっと使ってて、いつ入れたか、どのパッケージと入れたかわかない。

parted

ぐぐったら、 partprobe は parted についてくる

sudo apt install parted 

これでpartprobeが使える。

参考資料

https://www.linuxquestions.org/questions/debian-26/partprobe-for-debian-529726/

文字の実体参照と実コードを変換する

文字の実体参照と実コード(文字)を変換する。

sednkf でもできる ruby なら出来るんだけど

>>> escaped_data = b'\\x50\\x51'
>>> escaped_data.decode("unicode_escape")

python / nodejsだと、どううやるんだっけ。。。

参考資料

https://stackoverflow.com/questions/10944907/python-unescape-xxx

php で JSONのエラーチェックをする,json_last_error

JSON が正しい形式かどうかチェックする

APIで受け取ったときに、リクエストパラメータの代わりに JSONを受け取るので、JSONの型式をチェックしないといけない。

こういうときに json_last_error() を使えばエラー内容がある程度は見れるようになっている。

<?php
    $ret = @json_decode($this->json);
    if (json_last_error() !== JSON_ERROR_NONE){
      return "JSONエラー:".$this->json;
    }
    return json_encode($ret, JSON_PRETTY_PRINT );

まぁみんなフレームワークでやってるんだろうけど、エラーの内容は知りたいよねやっぱり。

参考資料

http://jp2.php.net/manual/en/function.json-decode.php

Mac/iOSのSafariと macのキーチェンの共有その2

macicloudキーチェンが使われない問題について引き続き

前回

MacのicloudキーチェインとSafariのキーチェインは別物だった。 - それマグで!

Safariがキーチェンを使うタイミングで保存される。

Safariがキーチェンに保存されている「パスワード」にアクセス許可を求め、それを許可したタイミングで保存される。

f:id:takuya_1st:20180614184518p:plain:w250

このタイミングで、Safariがキーチェンに保存済みのパスワード使っていいですか?と聞いてくるので、ここで許可するとSafariのパスワード一覧にキーチェンのパスワードが出てくるようになる。さらに、許可した結果がiCloud同期されて、iOSのパスワード一覧に出てくるようになる。Macのキーチェンに該当のiCloudの項目が増える。キーチェンの管理画面で、ローカルからiCloudで手作業移しても駄目なようだ。なぜだ・・・

Safariがアクセス許可を求める前

f:id:takuya_1st:20180614184608p:plain:w250

Safariにアクセス許可を与えた後

f:id:takuya_1st:20180614184839p:plain:w250

Macのキーチェンで項目が変化する。

物によってはローカル→ iCloudへ移動する??

これが割と鬱陶しい。

ローカルのキーチェンはSafariで許可するとiCloudキーチェンへ移動している。アレコレ試したけど、移動してないものもある??よくわからない。。(これは追調査が必要だ。

今回わかった、ポイント

Safariで一度アクセス許可与えることが大事。まじかー

めんどくさい・・・

Macのキーチェンにあるicloudの項目を手作業で操作するのは、あまり関係ないですね。

まだわからないポイント

KeyChains が同期されるタイミングと、同期される条件。

macOSSafari がローカルキーチェンを使った後に、iOSに同期されるものと同期されないものがあるところ。

今回は、Safariのダイアログで一度許可することで「macOSiOS」でパスワードが同期されるものもある。ということがわかった。

キーチェン謎すぎる。

iOS12 で1Passwordがサポートされるなら、もうキーチェンすてて課金したほうが早いんじゃないかと思えてきた。

systemd-networkdが初期設定で有効にならないことがある。

systemd-networkd が enable になってない。

まいった。何度かこういう事態が発生する。

Linuxを再起動するとネットワークがつながらない。

DHCPで割当する、ネットワークが再起動後に有効にならない。VirtualBoxでよく起きる。

そのたびに ip set ...restart systemd-networkd していた。

初期インストールが原因かもしれない・

なぜ有効にならないのか解らない。が、VirtualBoxでネットワークをつけているが、Linuxのインストール時に、ネットワーク構成を自動設定したときもスキップしてたりでも起きてる。 また、ネットワークを追加したときにも起きる。

CentOSで試したら、スキップしたときにこの現象が起きてるっぽいし、Debianだと自動設定しても有効になってない。なんですかね。。。systemd 怖い。

対策は手作業で有効にする。

systemctl enable systemd-networkd

これで有効にすると設定が有効になるので、再起動後にもDHCPでネットワークがつながる。

うーん。。。なぞ

Systemd-networkdのDHCPネットワークの設定

systemd でのDHCPIPアドレスの割当をもらってくる

よくある例なので、ぱぱっと書いておく。

対象

systemd になってるLinuxディストーション。 今回は、 ubuntu / debian で設定をする。

準備するファイル

/etc/systemd/network にファイルを用意する。

/etc/systemd/network/dhcp.network

名前は何でもいい。

ファイルに記載する

[Match]
Name=en*

[Network]
DHCP=yes

DHCPをYESとかくCentっぽい。とにかくネットワークの設定はここ(/etc/systemd/network)にファイルを作って管理する。

固定IPのときは

[Match]
Name=en*

[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1

などとすればOK

再起動する。

sudo systemctl restart systemd-networkd

わたしは、ここで restart networking.service をやってしまい、反映されないって10数分悩んだ。

ポイント

systemd-networkd で ネットワークを管理する。

/etc/networking/interfce の networking に依る管理 は systemd-networkd から起動する service になっている。

もちろん 旧来のディストーション依存のやり方でも構わない。ただそのときは sytemd と設定が違うのでググり方を間違えないこと。

2018-06-13 追記

うちの環境では、再起動してもネットワークがつながらないので、ずっと悩んでた。VirtualBoxのホストオンリーアダプタで頻発するから、ホストオンリーアダプタやブリッジネットワークのプロミスキャス・モードだと思ってたら、全然違った。

systemd に networkd が登録されてなかったので、手動登録した。

sudo systemctl enable  systemd-networkd

この減少はCentなどでも見られた。インストール時にNIC(ethernet)を自動設定にしてないときに、インストール後にネットワークカードを入れたら間違いなく起きるよね。はぁ。。。

enabled にしたあとのnetworkd の依存関係

takuya@debian01:~$ sudo systemctl list-dependencies  systemd-networkd
systemd-networkd.service
● ├─org.freedesktop.network1.busname
● ├─system.slice
● └─network.target

参考資料

Debian 資料 5.3. The modern network configuration without GUI

http://yukithm.blogspot.com/2014/05/systemd-networkd.html

マネックス証券のパスワードは8−10文字

IPOくじにチャレンジするためにマネックスの講座を復活させた。

口座を作ろうとしたら、すでに登録済みだった。休眠してた。

パスワードが10文字まで?

マネックス証券のアカウントを発掘したので、パスワード再発行させていただいた。

パスワードは8−10文字まで

最大文字数に制限があるのは、とても怖い。ハッシュ化せずに保存してるのではないだろうか。文字列長に制限があるというのは、DBのカラムのvarchar の制限を受けている可能性が考えられる。

f:id:takuya_1st:20180611191740p:plain

ログインIDは、顧客コード

顧客コードは公開情報なので、公開情報でログインIDの憶測が可能になるので嫌。

f:id:takuya_1st:20180611192707p:plain

うーん

あんまり近寄らんとこ。

input type=hidden の値が変わったら通知したい。

JSをデバッグしててhiddenがどこから更新されてるのか知りたかった。

ある操作をしたら、input[type=hidden] が書き換わるので、そのJSを特定しようと頑張ろうとした。

めっちゃめんどくさい。hidden には onchangeイベントが発火しないんですよ。

MutationObserverを使うとできるんです。

var observer = new MutationObserver(function (MutationRecords, MutationObserver) {
  debugger;
});

observer.observe(document.querySelector("input[type='hidden]"), {
  childList: false,
});

これで監視はできるんだけど、面倒なので input[type=hidden] を input[type=text]にして、display:none にしたほうが早い。そりゃそうだよね。ってすごく納得した。

参考資料

INPUT要素でtype属性がhiddenの要素のvalue値に変更があったらchangeイベントを発火させる - babu_babu_babooのごみ箱

printf で左寄せ

printfで文字列の左詰めをやる

意外に忘れているので、メモ

printf で文字列を右余白の左寄せをやろうとおもったらこれ

マイナスをつけたら左に寄ります。

%-5s

例 シェルでやるばあい

takuya@Desktop$ printf "%-5s\n" a ab abc
a
ab
abc

ruby でやるばあい

>> %w/a aaa aaaa/.each{|e|  printf "%-5s--\n", e  }
a    --
aaa  --
aaaa --

printf 便利ですねー

MacのicloudキーチェインとSafariのキーチェインは別物だった。

Mac のキーチェインiCloud項目

Macのキーチェイン・アクセスにはiCloudの項目があって、これが同期されていて、別のMacにAppleIDでログインしたら使えるんだけど。

ScrenCaptured 2018-06-08 13.47.53

iOSMac Safari でパスワードがどうも使えない。

同期したはずなのに、パスワードがどうも使えない。パスワードが補完されない。 とても不便でアレコレ試していたけど分からなかった。

Appleサポートにもキーチェインが同期されないと聞いてみたけど、徒労だったんですね。

Mac Safari のパスワード管理は別物だった。

ふとSafariを見ていて気づいたのですが、MacSafariのパスワード管理は、OSのキーチェインとは全く別の管理のものが存在していた。

何言ってるかわからないだろう。僕も最初これがなになんのか分からなかった。

Safari が管理しているパスワード。

Safariの設定で、パスワードのタブを開くとパスワードが出てくる。これがSafariが管理しているパスワード。

f:id:takuya_1st:20180608134628j:plain

iOSSafariに同期されるのはどうやらこいつ。

MacのキーチェインのiCloudの項目にパスワードを突っ込んでもだめだったんですね。

いや、本当に驚いたというか、そりゃパスワードが同期されないわとおもった。 いつからなんだろうか・・・

iOS / macOS は別物

2つのOSは本当に別物というか、iCloudキーチェインですら別物だったとは・・・これは気づかない。

データ同期すらべつの領域だったんですね。iOSとの融合とかどうでもいいから、パスワードとか一番使うものととっとと融合してほしいわ。

原因はわかった、でもどうすれば、Macの大量のパスワードをiOSに持っていけるのだろうか

りそな銀行のセキュリティ喚起のメールが異次元すぎて悲嘆した。

りそな銀行からメールが来た。

りそな銀行からメールが来たので開いた。

パスワードをブラウザに保存しないでください

f:id:takuya_1st:20180607184145p:plain:w250

ブラウザにパスワードを保存すると、危険です。

えっと、覚えやすいパスワードのほうがずっと危険ですよね?

記憶より、外付け記録ですよ。

ウイルスに感染すると保存したパスワードが流出します。

f:id:takuya_1st:20180607184149p:plain:w250

マルウェアに感染してたら、それ、もう保存云々関係ないから!!!

マルウェアによるパスワード漏洩が、保存済みパスワードに対する攻撃だけだと、妙な誤解を与えるのはセキュリティ意識の啓蒙として酷いですよこれ。

読み進める。

読み進めると、更に驚く。 f:id:takuya_1st:20180607184155p:plain:w250

危険なのでキャリアメールを使え。

この会社大丈夫なの?

f:id:takuya_1st:20180607184159p:plain:w250

いまどきキャリアメール推奨ですか???

携帯スマートフォンのキャリアメールを使ってください。

え・・・ちょっと・・・ないわ・・・

f:id:takuya_1st:20180607184203p:plain:w250

WEBメールは危険。

ここは、2000年のインターネットでつか?

りそな銀行的にはGmailiCloudメールもLive.comもだめなんですかwww

f:id:takuya_1st:20180607184206p:plain:w250

何が言いたいんだろう。

ちゃんと注意喚起してるから、うちには責任はないですよ。と言いたんでしょうか。

訳がわからない。

暗号化通信に微塵も言及しない注意喚起メールってあまりにひどいから笑うしか無い。

極めつけは、

このメールは冒頭と末尾がさぁ。

「このメール、非配信登録のお客様にも送付しております。」 「なお、お知らせメールが不要なときは、登録解除してください。」

どうしろと・・・どこが重要な内容なんですかね。

f:id:takuya_1st:20180607184140p:plain:w250

パスワードは自動保存でいいよ。

見ながら入力できる程度のシンプルな文字列にしろっていうのか? 記憶できるパスワードは使い回しの危険性も高い。

パスワード最大12文字に制限してるりそな銀行はさすがですね。

前回の件といい、この会社は、パスワードをハッシュ化してない気がする。

全文です。

メールの全文を掲載しておきます。ひどい。

f:id:takuya_1st:20180607185347p:plain

三井住友VISAの利用明細を郵送に切り替えても追加料金無しだった話。

三井住友VisaカードのWEB明細がクソすぎる。

WEBでの明細というのは、どうしてめんどくせええんだろう。疑問に思います。

明細は、郵送であればパパッと見られるのに、WEBで閲覧しようとしたら、途端にめんどくさくなるのはなんでなんでしょう?

WEBで閲覧する利用明細が面倒なので郵送にすることにした。

登録解除画面で、脅された

郵送にすることにして、WEBから郵送をに切り替えようとしたら、次のように、脅された

f:id:takuya_1st:20180607181721p:plain

割引なくなるよ!!!って脅してくるの。

でもまって、Amazonのカードは年会費無料じゃん?

年会費無料のカードで年会費がかかるって訳がわからない。

問い合わせた。

年会費無料のカードに、年会費がかかるってどういうことなんでしょうか?
年会費は発生していて、割引が適用されているってことなんでしょうか?
であれば、年会費無料の表示は不当表示ですよね。実質無料と書くべきでしょ?

ちなみに、電話料金はこっち持ちですよ。

回答をもらった。

個人情報の確認などで、待たされること10分程度、回答を頂くことができた。

お客様のAmazon カードは、年会費無料のカードであるために、郵送に切り替えても優遇がなくなるわけではありません
郵送に切り替えることで料金は発生しません。

驚いた。

表示されていた文言をもう一度見てみよう

f:id:takuya_1st:20180607182705p:plain

僕は何に同意すればいいのでしょうか

本当にアホらしい。

解除した。

WEB明細の利用を停止し、郵送にすることにし、WEBから所定の手続きで申し込みました。

完了画面で驚愕した!

申込みの完了の画面の表示を見て飛び上がった。

解除後もWEB明細はご利用いただけます。

f:id:takuya_1st:20180607182204p:plain

は?なにこれ?

警告画面は何だったんだ。

実際には、追加料金はかからない(誤認)さらに封書で利用明細書を配達を受けても、WEBは継続して利用できる。

会社の都合が全面に出てきててマジ参った。

三井住友Visaはどうなってんの

WEB明細をほぼデフォルトで強制してくるのは完全に向こうの都合じゃん。

ログインがだるすぎていらないんですよ。WEB明細。

絵合わせ認証がだるい

ブラウザからクッキーが消えると絵合わせ認証になる。すごく不便。

f:id:takuya_1st:20180607181129p:plain:w300

職業柄ブラウザのCookieを消去とかわりと気軽にやっちゃうので、ブラウザの永続Cookieで認証されるのはうざいの一言です。

絵合わせ認証は認証ですらないし、ボット避けなら別の方法があるし、ブルートフォースやリバースブルートフォースを警戒するなら、別の手段もあると思うんですね。

愚痴

リスクベース認証というのであれば、「設定変更」(Write)と「閲覧」(Read)をベースをにリスクを分けるのが筋ってもんでしょ。

  • 絵合わせ認証とかいう謎認証
  • ブラウザのクッキーを消せない問題。
  • スクレーパーがめんどくさくなった。

ログインがめんどくさくなりすぎて本当にアホらしい。スクレーパーもめんどくさくなりすぎ。明細系のアプリでも初期設定がめんどくさい。

「紙見たら済む話」を「わざわざ見に行って」取得するというのがわからん。

パスワードを入れてるなら、メールで暗号化PDFを送ってきて、そのPDFのパスワードを取得するためのログインならまだわかるって話だよ。

今回解除したカード

以上2枚のカードのWEB明細を解除して郵送にすることができました。

クレカの明細を郵送にしてもネットで見れるので皆さんも試してみては?

 関連URL

これが今回の問題のページです。