ズンドコしたい
ストリーム上の 0 と 1 の並びを sed
に取り込んで、00001 かどうかを DFA っぽく検査する。
$ cat /dev/urandom \ | LANG=C tr -dc "01" \ | fold -w1 \ | (sed -nf dfa.sed; echo 2) \ | perl -ple 'BEGIN { @table = qw/ズン ドコ キ・ヨ・シ!/; } s/(.)/$table[$1]/e;' \ | paste -sd$'\\0' - ズンズンドコドコズンドコズンドコドコドコドコズンズンズンズンドコキ・ヨ・シ!
肝心の dfa.sed は下記の通り。 状態をラベルとして表現している。
s1 から始まって、s5 が「ドコ」を判定する状態。「ドコ」であったら、その後 quit に遷移して受理状態となる。
#!/usr/bin/env sed :s1 /0/ bs2 b restart :s2 p; n /0/ bs3 b restart :s3 p; n /0/ bs4 b restart :s4 p; n /0/ bs5 b restart :s5 p; n /1/ bquit bs5 :quit p; q :restart p; n bs1
MySQL のコメント構文に対応する
MySQL は --
と /* */
だけじゃなくて #
スタイルのコメントもサポートしている。
Emacs の sql-mode だと #
スタイルはサポートしていないので、構文テーブルをどうにかする必要がある。
(add-hook 'sql-mode-hook 'mysql-comment-syntax) (defun mysql-comment-syntax () (setq-local syntax-propertize-function 'mysql-comment-propertize-function)) (defun mysql-comment-propertize-function (begin end) (funcall (syntax-propertize-rules ("\\(#\\).*\\(\n\\)" (1 "<") (2 ">"))) ;; from "#" to newline begin end))
追記 たぶんこっちのほうがいいと思う。データベースごとの設定が標準で用意されていた。 .dir-locals.el に書いておけばプロジェクトごとの設定にも対応できそうである。
(sql-set-product 'mysql)
部分集合を作るあれ
こういうのもあり?
シェル芸で部分集合を全通り求める方法(別解求む) – 上田ブログ
bash-3.2$ echo {{a\,,}{b\,,}{c\,,}{d\,,}} | xargs -n1 | sed -e 's/,\}/}/g' {a,b,c,d} {a,b,c} {a,b,d} {a,b} {a,c,d} {a,c} {a,d} {a} {b,c,d} {b,c} {b,d} {b} {c,d} {c} {d} {}