「詳説 正規表現」で「先読み」、「後読み」と呼んでいる正規表現は英語でそれぞれ lookahead assertion, lookbehind assertion、まとめて lookaround assertion と呼ぶ。
$ echo 'Regex example:1234567890.' | perl -p -i -e 's/(?<=\d)(?=(\d{3})+(?!\d))/,/g'
Regex example:1,234,567,890.
「詳説 正規表現」で「先読み」、「後読み」と呼んでいる正規表現は英語でそれぞれ lookahead assertion, lookbehind assertion、まとめて lookaround assertion と呼ぶ。
$ echo 'Regex example:1234567890.' | perl -p -i -e 's/(?<=\d)(?=(\d{3})+(?!\d))/,/g'
Regex example:1,234,567,890.
ドメインに参加していた Windows 7 のPCにローカルアカウントで入りなおすとき、いつも "コンピューター名\ユーザー名" の形式で入力していた。コンピューター名をその都度調べて正確に入力しないといけないから面倒くさいと感じていたが、実は「.\ユーザー名」という形式にも対応しているのだった。
Windows で作業をしていて初めて知った("clip"コマンド)。Linux/Unix の世界にも同様のコマンドがあった("xclip")。知ってよかった。
C:\Users\foo>date /T | clip
Fedora 21 Workstation の ISO と liveusb-creator をダウンロードしてWindows 8.1 を使ってブータブルUSBを作ってみたものの、次のメッセージが出て起動しなかった。(BIOS環境の場合のみ。UEFIの場合は問題なかった)
vesamenu.c32: not a COM32R image boot:
この症状は、USBの中にあるSYSLINUXの設定ファイル、具体的には /syslinux/syslinux.cfg をほんの少しだけ変更してあげれば治った。
default vesamenu.c32 timeout 100 ...
default linux0 timeout 100 ...
こちらに書いてあるように、プロンプトでTabキーを押してイメージの候補を表示する、という方法もある。が、キーボード押したくない場合には syslinux.cfg を編集すればよい。
netshというコマンドを使えばいい。
たとえば TCP/80 を開けたいなら、コマンドプロンプトを管理者として開いて
netsh advfirewall firewall add rule name="HTTP" dir=in action=allow protocol=TCP localport=80を実行すればOK。
ここで、nameオプションは「ルールの名前」と呼べばよいだろうか。文脈に応じて分かりやすい文字列を指定すればよい。
Windows Server 2012と2008で動作確認した。
$ cd ~/work $ wget ftp://ftp.ring.gr.jp/pub/elisp/skk/maintrunk/ddskk-15.1.tar.gz $ wget ftp://ftp.ring.gr.jp/pub/elisp/skk/maintrunk/ddskk-15.1.tar.gz.md5 $ md5 ddskk-15.1.tar.gz MD5 (ddskk-15.1.tar.gz) = c33f335994b93ea91783bf5b42663f07 $ cat ddskk-15.1.tar.gz.md5 MD5 (ddskk-15.1.tar.gz) = c33f335994b93ea91783bf5b42663f07 $ tar xzf ddskk-15.1.tar.gz
;; (setq SKK_DATADIR "/Applications/Emacs.app/Contents/Resources/etc/skk") ;; (setq SKK_INFODIR "/Applications/Emacs.app/Contents/Resources/info") ;; (setq SKK_LISPDIR "/Applications/Emacs.app/Contents/Resources/site-lisp/skk") ;; (setq SKK_SET_JISYO t)
(setq SKK_DATADIR "/Applications/Emacs.app/Contents/Resources/etc/skk") (setq SKK_INFODIR "/Applications/Emacs.app/Contents/Resources/info") (setq SKK_LISPDIR "/Applications/Emacs.app/Contents/Resources/site-lisp/skk") (setq SKK_SET_JISYO t)
$ cd ddskk-15.1 $ make what-where emacs -batch -q -no-site-file -l SKK-MK -f SKK-MK-what-where Loading subst-ksc... Loading subst-gb2312... Loading subst-big5... Loading subst-jis... Loading /Users/th/work/ddskk-15.1/SKK-CFG... SKK modules: skk-viper, skk-emacs, ccc, cdb, context-skk, queue-m, skk-abbrev, skk-act, skk-annotation, skk-auto, skk-autoloads, skk-azik, skk-cdb, skk-comp, skk-cursor, skk-cus, skk-dcomp, skk-develop, skk-gadget, skk-hint, skk-inline, skk-isearch, skk-jisx0201, skk-jisyo-edit-mode, skk-kakasi, skk-kcode, skk-leim, skk-look, skk-macs, skk-num, skk-server-completion, skk-server, skk-show-mode, skk-sticky, skk-tankan, skk-tut, skk-vars, skk-version, skk, skk-study -> /Applications/Emacs.app/Contents/Resources/site-lisp/skk SKK infos: skk.info -> /Applications/Emacs.app/Contents/Resources/info SKK tutorials: SKK.tut, SKK.tut.E, NICOLA-SKK.tut, skk.xpm -> /Applications/Emacs.app/Contents/Resources/etc/skk
$ sudo make install Emacs=/Applications/Emacs.app/Contents/MacOS/Emacs
以上。
今日まで存在を知らなかった。。。バックグラウンドプロセスが終了するまで待ち合わせするコマンド。
惰性で順次実行してたシェルスクリプトを手軽に並行実行できるようになって効率上がるかも。
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin10.0)
Copyright (C) 2007 Free Software Foundation, Inc.
$ help wait
wait: wait [n]
Wait for the specified process and report its termination status. If
N is not given, all currently active child processes are waited for,
and the return code is zero. N may be a process ID or a job
specification; if a job spec is given, all processes in the job's
pipeline are waited for.
$ cat test.sh #!/bin/bash date (sleep 1; echo 'sleep 1') & (sleep 2; echo 'sleep 2') & (sleep 3; echo 'sleep 3') & date $ ./test.sh 2013年 12月 8日 日曜日 23時03分12秒 JST 2013年 12月 8日 日曜日 23時03分12秒 JST sleep 1 sleep 2 sleep 3
$ cat test.sh #!/bin/bash date (sleep 1; echo 'sleep 1') & (sleep 2; echo 'sleep 2') & (sleep 3; echo 'sleep 3') & wait date $ ./test.sh 2013年 12月 8日 日曜日 23時06分58秒 JST sleep 1 sleep 2 sleep 3 2013年 12月 8日 日曜日 23時07分01秒 JST