.ps1ファイルを使えるようにする
Powershellを管理者権限で開き以下を流す
Set-ExecutionPolicy RemoteSigned
Explorerの右クリックメニューを使いやすくする
Windows側のアプリケーション導入
MSYS2
WSL2
以下のようなコードを書いたときにmockFnにイベント引数が渡らないが、これをどうにかして取る方法。結論から言うとまともに取れないが、試行錯誤した時のログとして残しておく
const mockFn = jest.fn();
render(<input onChange={mockFn} />);
fireEvent.change(inputElement, { target: { value: 'aaa' } });
確認環境
| Env | Ver | 
|---|---|
| @swc/core | 1.3.66 | 
| @swc/jest | 0.2.26 | 
| @testing-library/jest-dom | 5.16.5 | 
| @testing-library/react | 14.0.0 | 
| jest | 29.5.0 | 
| react | 18.2.0 | 
サンプルコード
これは以下のように書くとfireEventの第二引数で指定したtarget.valueの部分だけは一応取れる。
理由としてはfireEventがelement.dispatchEventを読んでいると思われるためだ。余り深くは追っていないが、react-testing-libraryの実装上は多分そうなっていると思われる。
import { fireEvent, render } from '@testing-library/react';
it('test', () => {
  const mockFn = jest.fn((ev) => {
    console.log(ev);
  });
  const { container } = render(<input id="hoge" onChange={mockFn} value={'a'} />);
  const element = container.querySelector('input');
  if (element === null) throw new Error();
  element.dispatchEvent = jest.fn();
  fireEvent.change(element, {
    target: {
      value: 'bbb'
    }
  });
  expect(element.dispatchEvent.mock.instances[0].value).toBe('bbb');
});
確認環境
| Env | Ver | 
|---|---|
| Perl | 5.34.0 | 
コード例
キャプチャ変数をifのスコープに封じ込める必要がある
my $text = <<EOF;
  ```unya
  hoge
    piyo
      fuga
  hpf
  ```
EOF
my @lines = split(/\n/, $text);
foreach my $line (@lines){
  if ($line =~ /^(?<indent> *)(?<bquote>```)(?<lang>[a-z]*)$/) {
    print "SYMBOL: '$+{indent}', '$+{bquote}', '$+{lang}'\n";
  } else {
    print "$line\n";
  }
}
上手くいかないコードの例
その1
$+変数はマッチするまで中身が消えないので、このプログラムは予期した動きにならない
my $text = <<EOF;
  ```unya
  hoge
    piyo
      fuga
  hpf
  ```
EOF
my @lines = split(/\n/, $text);
foreach my $line (@lines){
  $line =~ /^(?<indent> *)(?<bquote>```)(?<lang>[a-z]*)$/;
  print "$+{indent}, $+{bquote}, $+{lang}\n";
}
その2
my $text = <<EOF;
  ```unya
  hoge
    piyo
      fuga
  hpf
  ```
EOF
my @lines = split(/\n/, $text);
foreach my $line (@lines){
  $line =~ /^(?<indent> *)(?<bquote>```)(?<lang>[a-z]*)$/;
  if (defined $+) {
    print "$line: ";
    print "$+{indent}, $+{bquote}, $+{lang}\n";
    # この変数はundef出来ない
    undef $+;
  } else {
    print "$line\n";
  }
}
ここ最近なりすましメールが目立つのでなりすましメール防御対策を取りましょうという話。
なりすましメールが増えている一例
ここ数日の間にイラストレーターのIxy先生やMastodonインスタンス管理人のにょき氏といった一定の知名度を持つ人物を中心になりすましメールの被害にあっているようだ。
ここまで目立つのは余り見聞きしなかったので恐らくここ昨今のGMailとかの騒動を見たところで、なりすましメールを作れることに気づいた人物が愉快犯的に行為をしているのだろう。
取りうる防御策
個人レベルでできる対策としてはDNSレコードやメールサーバーの設定にSPF, DKIM, DMARCを設定することだ。これらの内容についてはGoogleによるDMARC を使用してなりすましと迷惑メールを防止するが詳しい。
さくらのレンタルサーバーを利用している場合は以下が参考になる。
さくらのレンタルサーバーを利用して外部DNSを利用している場合は、私が以前書いたValue-DomainのドメインをさくらのレンタルサーバーのメールでSPF, DKIM, DMARC対応させるが参考になるだろう。
SPD, DKIM, DMARCの三点を設定することで相手のメールサーバーがこれらに対応している場合になりすましメールを迷惑メールとして分類したり、メールの受信を拒否できるとされているため、設定することでなりすましメールを防御できる可能性が高まる。
メール送信に使っていないドメインに関しても以下のようなDMARCを設定しておくことで、悪意のある第三者によるなりすましを防げるだろう。
txt _dmarc v=DMARC1; p=reject; aspf=r; adkim=r
またメールサーバーを運用されている各位におかれては、SPD, DKIM, DMARCの三点を識別し、適切に受信メールをフィルタリングできる仕組みを導入して頂けると犯罪予告や迷惑メールによる被害を減らせる可能性があるので、是非とも導入を検討いただきたい。