サンプルで表示できるIPアドレス

ブログとか資料とかでサンプルで表示できるIPアドレスをメモ

プライベートIPアドレスには
192.0.2.0/24

ドキュメントやコードには
198.51.100.0/24
203.0.113.0/24

のようです
24はサブネットマスクなので
192.0.2.0/255.255.255.0
つまり
192.0.2.1 – 192.0.2.255
まで使えるってことです

詳しくは
RFC 5735 – Special Use IPv4 Addresses
を参照

esa.ioで投稿をバックアップする

esa.ioでの投稿バックアップをしてみました

Team > admin を表示
https://sample.esa.io/team/admin
※ sampleのところは、チーム名になります

esaio-download-achives-before

Request Archives をクリックすれば、メールでバックアップリンクが届きます
ZIPで固められた投稿がダウンロードでき、それぞれマークダウン形式のファイルになってるようです

他にもAmazon S3にもアップロードできるっぽいです

phpで配列からカンマ区切りの文字列をつくる

phpで配列をカンマ区切りの文字列にするには

$arr = [1,2,3];
var_dump(implode(',', $arr));
// string(5) "1,2,3"

implodeを使うと簡単ですが、空の値があると

$arr = [1,2,'',null,5];
var_dump(implode(',',$arr));
// string(7) "1,2,,,5"

とちょっといけてない
からの要素を除いてからやるには

var_dump(array_filter($arr, 'strlen'));
/*
array(3) {
  [0] =>
  int(1)
  [1] =>
  int(2)
  [4] =>
  int(5)
}
 */
var_dump(implode(',', array_filter($arr, 'strlen')));
// string(5) "1,2,5"

array_filterを使ってやるとよさそうです

Rubyでscanで使ったりする\p{Word}ってなにか

Rubyで正規表現を使ってscanを使ってるコードで

"I my me mine 1 2 3 4".scan(/w+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

と文字列を配列に分割できますが

"I my me mine 1 2 3 4".scan(/p{Word}+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

でもできます
\p{Word}ってなんだと思って調べました

ドキュメントによるとUnicode プロパティによる文字クラス指定らしいです
正規表現

これ
Onigmo/UnicodeProps.txt at master · k-takata/Onigmo
に書いてあるものは使えるそうです

str = "I my me mine 1 2 3 4"
p str.scan(/p{Word}+/)
# ["I", "my", "me", "mine", "1", "2", "3", "4"]
p str.scan(/p{Digit}+/)
# ["1", "2", "3", "4"]
p str.scan(/p{Upper}+/)
# ["I"]

と他にも使えそうなのがあります