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"]

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

vim-gitgutterを使っていて大量の変更を保存するとエラー

vimでgitの差分を左端にわかりやすく出してくれるvim-gitgutterで

git-gutter

大量の行数を変更して保存しようとするとエラーが

vim-gitgutter: exceeded maximum number of signs (configured by g:gitgutter_max_signs). 

次の

let g:gitgutter_max_signs = 500

としたら保存できるようになりました

airblade/vim-gitgutter
を見ないとですね