2013-10-28 Mon
■ bash で大文字を小文字に変換 [linux]
postfix で受信したメールを、scmail に渡す shell command を作成した。
その中で、To-addr により設定を一部変更しているのだが、その文字列比較をベタで「小文字」のアドレス比較としたため、大文字の To-addr が error となってしまった。
こんな感じ。
if [ ${TO} = "foo@example.net" ] ; then
export X_HOME=/var/xxx/foo
else
echo "ERROR: ${TO}" >> /tmp/mail.err
これだと、大文字の "FOO@EXAMPLE.NET" 宛てのメールがエラーとなってしまう。
で、ぐぐったところ、http://qiita.com/kawaz/items/211266021515b3f033a3 ここのような大小文字変換があることが判明
早速次のように変更し、現在順調に動作している。
if [ ${TO,,} = "foo@example.net" ] ; then
export X_HOME=/var/xxx/foo
else
echo "ERROR: ${TO}" >> /tmp/mail.err
しかし、アドレスが大文字のメールが来るとは、思ってもいなかった。
2013-10-22 Tue
■ scmail 設定 [mail]
メールのスパムフィルタとして scbayes(in scmail) を使っているが、メールサーバの移設に併せて、scmail のフィルタも使ってみることにした。
イロイロと参考にしたが、scmail-deliver がどうもうまく機能しない(振り分けられない)。
で、試行錯誤した結果、次の設定で動作した。
(add-filter-rule!
'(from
("foo@example.com" ".from.foo") )
'(to
("ml-bar@example.net" ".ml.bar") )
'(subject
("baz-group" ".grp.baz") ))
どこかに、ドット対("hare" . ".from.hare") で設定されていたが、それだと NG だった。
リリースから 10年近く経つが、scbayes といい、scmail といい、筋が良いソフトだよなぁ。
2013-10-17 Thu
■ mysql CASE の ELSE は必須!! [mysql]
mysql SQL で、CASE を使った UPDATE を実行。
UPDATE table1
SET
ccc =
CASE
WHEN aaa = '111'
THEN '888'
WHEN aaa = '222'
THEN '999'
END
;
と、ccc = 888/999 は、思った通りに設定されたが、それ以外のレコードの ccc には null が設定されてしまった!!
http://dev.mysql.com/doc/refman/5.1/ja/control-flow-functions.html によると
一致する結果値がない場合は、ELSE のあとの結果が戻され、ELSE パートがない場合は、NULL が戻されます。
だそうな...
なので、ELSE を追加した次が正しい記述。
UPDATE table1
SET
ccc =
CASE
WHEN aaa = '111'
THEN '888'
WHEN aaa = '222'
THEN '999'
ELSE ccc
END
;
ELSE は必須ですね。
2013-10-10 Thu
■ FreeBSD 10 から clang がデフォルト [freebsd]
アルファリリースが clang で実装されたとか。
http://www.infoq.com/news/2013/09/freebsd10-clang
clang デフォルトの話、2年くらい前からあったが、いよいよ現実的になってきた。
楽しみ。
ソフト開発で、GPL(特に GPL3) にビクビクしながら、 Linux+gcc(+lib) を使っている人は、全員 FreeBSD+clang に移行すべきだよね。
開示強制の不安無く、安心してソフト作れます。
2013-10-02 Wed
■ (postfix) sendmail オプション [mail]
http://www.postfix-jp.info/trans-2.2/jhtml/mailq.1.html
こんな感じ
sendmail -r myadr@example.net -t < contents.txt
-r: Return-Path の指定
-t: contents 内の To: CC: にしたがって送信
で、contents.txt はこんなかな
To: youradr@example.com
Cc: someadr@example.org
From: myadr@example.net
Subject: Hey man!
<-- header と body は 1行(以上)空ける
This is a body.
I can write anything in here.
la la la...
■ emacs / web-mode.el [emacs]
自社のウェブサイトを全面書き換え中。
以前は XOOPS を使って作成したが、今回は bootstrap を利用してベタで手書き。
で、emacs で html, php がスラスラ書ける mode(elisp) を探して web-mode.el を発見。
かなり強力そう。ここに詳しい。 http://web-mode.org/
+ 設定( at .emacs)
;;;
;;; WEB-MODE
;;;(require 'web-mode)
;;; emacs 23以下の互換
(when (< emacs-major-version 24)
(defalias 'prog-mode 'fundamental-mode))
;;; 適用する拡張子
(add-to-list 'auto-mode-alist '("\\.phtml$" . web-mode))
;(add-to-list 'auto-mode-alist '("\\.tpl\\.php$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.php$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.jsp$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb$" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?$" . web-mode))
;;; インデント数
(defun web-mode-hook ()
"Hooks for Web mode."
(setq web-mode-html-offset 2)
(setq web-mode-css-offset 2)
(setq web-mode-script-offset 2)
(setq web-mode-php-offset 2)
(setq web-mode-java-offset 2)
(setq web-mode-asp-offset 2)
;; contents も indent 可能にする
(setq web-mode-indent-style 2)
)
(add-hook 'web-mode-hook 'web-mode-hook)
+ bind 参考: http://fukuyama.co/web-mode
- "C-c C-f" (web-mode-toggle-folding)
HTMLタグを折り畳む機能です。
カーソルの位置のタグ内が省略されアンダーラインでマークされます。
戻すときも"C-c C-f"です。
- "C-c C-n" (web-mode-match-tag)
タグの開始タグと終了タグにカーソルを持っていってくれます。
- "C-c C-s" (web-mode-snippet-insert)
snippet を選択できます。
- "C-c C-r" (web-mode-rename-element)
タグの開始タグと終了タグの名前を変えてくれます。
- "C-c C-b" (web-mode-delete-element)
現在位置のタグを丸ごと消せます。
- "C-c C-j" (web-mode-duplicate-element)
現在位置のタグを複製します。
最終更新時間: 2024-08-28 09:42