まずは他者への攻撃は楽しいと認めよう【戯言】

本記事は以下のような方を対象としています。

  1. 差別は悪だと思っている。
  2. 差別を行う人は悪人だと思っている。

普通の人が他者を攻撃してる。

  SNSの炎上、少数への差別、いわゆる自粛警察。今の社会には他者への攻撃が溢れている。 では、今の社会には悪人が多いのだろうか? そんな事はないはずだ。少なくとも悪人が著しく増えているとは思えない。(実際に他殺の件数は減少傾向にある)
  つまり、ごく普通の人が他者を攻撃しているのだ。では、なぜ普通の感性をもつ人が、他者を攻撃してしまうのか? 誤解を恐れず答えるなら、そもそも他者への攻撃は楽しいからだ。
  「常識的な人は差別をしない」=「自分は差別なんてしない」という誤解を解くことが、差別をなくす第一歩ではないだろうか。

攻撃することは楽しい。

  他人を平気で攻撃するような人間は、サイコパスといった異常者だと考えている人は多いだろう。少なくとも、正義感に欠ける不道徳な人間であると無意識に思っているはずだ。
  このような認識は改めたほうが良い。たしかに思いやりのある人は、他人を攻撃する事は少ないのだろう。しかし大多数の人間は、条件さえ整えばいとも簡単に他人を攻撃する。
  失敗した人や不祥事を起こした人への批判はよくある事だ。正義は悪を批判する。つまり、環境さえ許せば、他者を攻撃したくなるものなのだ。
  何かを批判するとき、高揚した気分になった事はないだろうか? 多くの人は身に覚えがあるはずだ。自身に正義がある限り、攻撃することは楽しいのだ。

攻撃は自己肯定感を満たす。

  なぜ他人を攻撃することは楽しいのか? 様々な理由があると思うが、自己肯定感を得られることが大きいように思える。
  他者を否定することで、自分は正しいと思うことが出来る。何かを批判し正すことで、自分には影響力があると思うことが出来る。人は自分が正しく有能であると思い込みたいものなのだ。

差別は身近なモノであると身構えよう。

  多くの人は自分には良識があると思いたいし、「差別なんてするはずがない」と無意識に思い込んでいる。 このような慢心が脇を甘くし、攻撃の誘惑に付け入る隙を与える。常識や正義といった、社会や良心への言い訳がある限り、攻撃とは楽しいモノなのだ。
  常にこのような誘惑があることを意識し自戒すべきだろう。今は通用する言い訳が未来永劫に通用するとは限らないのだから。

Chrome開発者ツールのフィルターの指定方法【Chrome】

Chromeデベロッパーツールでは、ブラウザでどのような通信が行われたかモニタリングすることができる。 NetworkのFilterで指定することで、以下のように表示する内容を指定できる。

記載 概要
-[条件] 条件に一致しないものを表示
/[正規表現]/ 正規表現に一致するものを表示
domain:[ドメイン名] ドメインを指定できる。ワイルドカード(*)も利用可
status-code:[コード] HTTPステータスコードが指定されたコードと一致するものを表示
cookie-domain:[domain名] 指定された値と一致するdomain属性を持つset-cookieヘッダーを持つものを表示
cookie-name:[cookie名] 指定された値と一致する名前のset-cookieヘッダーを持つものを表示
has-response-header:[ヘッダー] 指定されたHTTP応答ヘッダーを含むものを表示
is:running 読み込み中のものを表示
larger-than:[サイズ] 指定されたサイズより大きいものを表示(バイト単位)
method:[HTTPメソッド] 指定されたHTTPメソッド(POST等)で取得されたものを表示
priority: Priorityが一致するものを表示
scheme:[http / https] httpかhttpsを表示

参考:
https://developers.google.com/web/tools/chrome-devtools/network/reference https://asnokaze.hatenablog.com/entry/20151205/1449245683

phpの罠、連想配列のキーで厳密な比較をしてはいけない【php】

phpでは初心者のためにいくつか罠が実装されている。
以下のサンプルコードを見てほしい。実行すると何が表示されるだろうか?

<?php

// 二進数文字列を英単語に
$binaryToStr = [
  "000" => "zero",
  "001" => "one",
  "010" => "two",
  "011" => "three",
  "100" => "four",
  "101" => "five",
  "110" => "six",
  "111" => "seven",
];

// 素数には" (prime number)"をつける
$primeNumberBinaryList = ["010","011","101","111"];
foreach ($binaryToStr as $binary => $str) {
  if ( in_array($binary, $primeNumberBinaryList, true) ) {
    $binaryToStr[$binary] = $str . " (prime number)";
  }
}

// 表示する
foreach ($binaryToStr as $binary => $str) {
  print("${binary} => ${str}\n");
}

以下のように表示される事が期待動作だが、実際にはそうはならない。

000 => zero
001 => one
010 => two (prime number)
011 => three (prime number)
100 => four
101 => five (prime number)
110 => six
111 => seven (prime number)

実行してみると以下のように表示される。
なぜか、fiveとsevenが素数と判定されない。

000 => zero
001 => one
010 => two (prime number)
011 => three (prime number)
100 => four
101 => five
110 => six
111 => seven

var_dump($binaryToStr);してみると、すぐに原因が分かる。

array(8) {
  ["000"]=>
  string(4) "zero"
  ["001"]=>
  string(3) "one"
  ["010"]=>
  string(18) "two (prime number)"
  ["011"]=>
  string(20) "three (prime number)"
  [100]=>
  string(4) "four"
  [101]=>
  string(4) "five"
  [110]=>
  string(3) "six"
  [111]=>
  string(5) "seven"
}

  000~011はキーが文字列型になっているが、101~111は数値型になっている。
そのため、サンプルのように文字列型と厳密な比較を行うと偽と判定され、素数と判定されなくなる。
  なぜ、101~111のキーが数値型になるかというと、「10進数解釈できる文字列のキーは数値型に変換される」という 誰が得するのか理解に苦しむ 親切な言語仕様になっているからだ。
この仕様を回避する方法はない。(ご存じの方はコメント下さい)諦めて曖昧な比較を使って回避しよう。

正規表現でファイル名を変更する【Linuxコマンド】

正規表現をもとにファイルのリネームを行いたい場合、以下のコマンドで実施できる。
例).txt を .log に変更する。

ls -1 | sed -nE "s/^(.+)\.txt$/'\0' '\1.log'/p" | xargs -n2 mv -b

サブディレクトリ内も対象に含める場合はlsfindにかえれば良い。

find -type f | sed -nE "s/^(.+)\.txt$/'\0' '\1.log'/p" | xargs -n2 mv -b

...Windowsを使っているなら、PowerRenameを使ったほうが手っ取り早いとは思う。

レディーファーストとは文化である。【戯言】

本記事は以下のような方を対象としています。

  1. 「レディーファースト」という言葉に良い印象を持っていない。
  2. 自分の事を理屈っぽい人間だと思っている。

善悪ではなく、文化である

  「レディーファースト」という言葉やそれを巡る議論について、ずっとモヤモヤしたものを感じていた。 SNS上では肯定する意見も否定する意見もあるが、そのどちらも自分の中ではしっくりこない。   だがある時、「レディーファースト文化である」 という考え方に至り、この言葉への自然な向き合い方が得られたように思う。レディーファーストとは(慣れていない私にとっての)異文化であり、彼らにとっての馴染みの文化なのだ。

  (私を含む)理屈っぽい人間が、レディーファーストをややこしく考えてしまう原因は、「フェミニズム」・「男女平等」という、一見関わりが深いと思える概念を想起してしまう事にあると思う。つまり正しさを軸に捉えようとするから混乱するのだ。
  レディーファーストを始めから善悪で判断しようとしてはいけない。まずは、レディーファーストとは行動様式であり、過度に合理性や正義を求めることはナンセンスだと認識すべきだ。
  例えば、我々は宗教家が祈りを行うとき、そこに合理性など求めない。同様に欧米の紳士がレディーファーストな振る舞いを行うことに、合理的な理由など必要ない。ただ単にそういう文化であり、そのような行動様式であるだけだ。もちろん、その根底には他者を思いやる"善"の気持ちがある事は否定できない。だが、他者を思いやる行動がレディーファーストの様式をとる必要性はない。

TPOを弁えて、レディーファーストを

  レディーファーストを、特定文化圏固有の行動様式と捉えるのであれば、それが合理的ではないからという理由で、否定すべきではない。また、納得していない者に押し付けるべき行動指針でもない。   他の文化や行動様式と同じく、時や場所を弁えてレディーファーストに振る舞うか否かを使い分けることが妥当だ。神社で参拝の作法を行うように、ダンスパーティーではレディーファーストを行えば良いのだ。   レディーファーストな雰囲気を味わう場面で、その様式美を楽しめないものは、心にゆとりのない頑固者であり、(レディーファーストが浸透していない)今の日本社会でレディーファーストを強要するのは、レディーファースト"かぶれ"の独善者である。

蛇足

  男女を区別する話になると過敏になる人が多いように思う。個人的には、ほどほどに区別すれば良いと考えている。生物学的/物理的な性差が存在することは事実であり、それを否定することは不自然だ。ただし、その差をどのように捉えて運用するかは社会倫理に従えば良いと思う。現代は原始時代ではないのだから、生殖活動を除く多くの社会活動において、性差なんてものは物理的には大した問題にはならない。皆が気持ちよく過ごせる程度の区別を行えば良いのだ。異性と同じお風呂に入るのが嫌であれば分ければ良いし、スポーツで男性が有利すぎて面白くなければ男女に分ければ良いのだ。

find・grep の組み合わせでファイル名を表示する【Linuxコマンド】

  特定の文字列が含まれるファイルを検索する際に、findコマンドの-execオプションでgrepを使うことがある。
  以下のようなコマンドで検索する場合、検索にヒットしたファイル名が表示されず困ることがある。

find -type f -exec grep 'hoge' {} \;

対処法

grepの検索対象に/dev/nullも含めることでファイル名を表示することができる。

find -type f -exec grep 'hoge' {} /dev/null \;

解説

grepは複数のファイルを検索対象に指定すると、検索結果にファイル名を表示する。データを返さない/dev/nullを検索対象に含めることで、検索結果を変えないまま検索結果にファイル名を表示できる。