PostgreSQLだけというわけじゃなくて、いまのいままで(自分が)知らなかったのがびっくりというネタ。
それは、SQL文での CASE式。昔々、Accessで IIF(三項演算子)は使ったことがあったけど、SQLに IIFがないというのも、これを書こうと思って、ググって知ったくらい。

SELECT name, CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未記入' END as sex
FROM test_tbl

ほかの使い方はこちら「SQL の CASE 式って知ってますか?」参照。

SELECT count(*),
  CASE code WHEN 'M' THEN '男性' WHEN 'F' THEN '女性' ELSE 'オカマ?' END
FROM table1 GROUP BY code;

SELECT
 SUM( CASE WHEN code = 'M' THEN 1 ELSE 0 END ),  -- 男性の人数
 SUM( CASE WHEN code = 'F' THEN 1 ELSE 0 END )   -- 女性の人数
FROM table1;

CONSTRAINT check_salary  -- 平社員は給与が20万円以下という制約の例
 ( CASE WHEN code = '平社員' THEN 
   CASE WHEN salary = 100000 THEN 販売価格 * 0.9 ELSE 販売価格 END;
twitter_logo_header

Twitterを使った巧妙なダイレクトセールスじゃないかな?と思われる販売手法があったのでメモ。
もちろん、なにかを買ったわけではないけど、「これは使えるかもね、むふふ」という感じなので。

  1. WordPressの公式Twitterをフォローした
  2. LONDONの TipsOnWordpressからフォローされる
  3. 見に行ってみると女性がやってるらしい
  4. LONDON+female+WordPressTips ということで即フォロー返し
  5. 「フォローしてくれて、ありがと」というメッセージとともに、Tutorial Video販売のURLが送られてくる。 ←いまココ
  6. がんがんDMが来るようなら、アンフォロー。そうでなければ放置

アイディアとして秀逸だなと思うところは、

  • WordPress公式Twitterのフォロワーをモニタしてるとこ ← ターゲッティングが明確
  • Twitter-ID「TipsOnWordpress」がいかにも技術系っぽくて好感が持てるとこ ← 警戒感を抱かせない
  • LONDONという地名がなんとなくいい ← 本当かどうかはわからない
  • やってるのが笑顔の女性というところも技術系との落差を感じてGood。別な意味でもGood ← 本当かどうかはわからない

自分が売りたいもの(物販、情報、集客、認知等)があって、それに興味を持ちそうな人が集まるTwitterのフォロワーに対して、上手にダイレクト・メッセージを送るという手法は、SPAMと紙一重だけど、やり様によってはアリかも。

wordpress_logo

あとであとでと思っているといつまでたってもやらないので、思い立ったときにやってみたシリーズ。
「メディアを追加」ボタンで画像を投稿エディタへ挿入してから、毎回毎回手作業で次のようなことをしてました。(自分使用&仕様)

  • <div class=”img-shadow”></div>を追加
  • <a>タグを削除
  • <img src=””>の https://dev.satake7.net を削除。titleも削除。altは空に。classも削除

それをフィルタ一発でやったろーぜというわけです。参考にさせていただいたのは「WordPress のエディタに埋め込むメディア用タグを自動編集する」。
きっとこっちを見た方がわかりいいと思うので、自分でやったとこだけメモ。

function add_image_send_to_editor($html, $id, $alt='', $title='', $align='', $url='', $size='') {
 $wk_html    = "";
 if (preg_match("/^<a>]*?&gt;.*?$/i", $html)) {
   $wk_html .= '<div class="img-shadow">'.preg_replace("/^<a>]*?&gt;(.*?)$/i", "$1", $html).'</div>';
   $wk_html  = preg_replace('/(title=".*?"|class="align.*"|http:.*satake7.net)/i', "", $wk_html);
 }

<a>タグだったら、<div class=”img-shadow”></div>でくくって、いろんなものを削除ということです。

obama

「わかっちゃいるけど、止められない」じゃなくて、「わかっていても、できない」ことが多いので、いまさらながら、Life is beautifulの「私のとっておきのプログラミングスタイル」に感化されて、自分なりの指針をまとめておく。

  1. スタードダッシュ重要
    最初の二週間で八割がたの目途をつける。
  2. 仕事を「タスク」に細分化
    「タスク」は、半日から三日ぐらいでできるもの。最初にすべきものほど明確に定義し、後でやるものはある程度曖昧にしておく。
  3. 一日の始めに「今日やるマイクロタスク」のリストを作る
    「マイクロタスク」は、うまく行けば15分ぐらいで、なかなかうまく行かなくても二時間ぐらいで完成できるもの。
    そんなマイクロタスクを数個から十数個並べたリストを書いて、例えば「今日は7つを絶対終える。余裕があったら次の2つもこなす」と自分で宣言する。
  4. マイクロタスクは「割り込み禁止状態」で
    マイクロタスクは「決して他の仕事を間に挟んではできない仕事」と覚悟して、全力疾走でこなすこと。
arigato

ということで、自分にプレッシャーを与えるつもりで、Google Docsにタスクリストを公開してみた。もちろん、お客様の名前やプロジェクトの詳細はイニシャルになっている。

 
INSERTで「nonstandard use of \\ in a string literal」というエラーが出たとき。
シングルコートを「E’」にすれば OK。「E’C:\\hogehoge.txt’」
 
PostgreSQLで INSERT直後の主キーの値をとりたいとき。

SELECT currval(pg_catalog.pg_get_serial_sequence('test_table', 'pkey'))

SELECT lastval()

下の方は同じセッション内でとるとき。次のやつは nextvalでとる。

SELECT nextval(pg_catalog.pg_get_serial_sequence('test_table', 'pkey'))

EC-CUBEでは関数が用意されているので、それを使うのが吉。(でないと、MySQLになったとき動かない)
 
ついで。PostgreSQLのユーザ設定。GRANTはテーブル単位しかかけられないって知ってました?
オートインクな主キーのあるテーブルは、シリアルキーのテーブルの方も grantしとかないとエラーになるので要注意。
 
も一つついでに。Ruby + DBI + Postgresでなにかやろうとしたときは、「Ruby DBI モジュールを使う」は必見。

 
[postfix-jp: 783] mail forwarding loop
こういうメッセージが Postfixから返ってきたときに疑うべきところ。
 

aliasや.forwardなどが正常なのにPostfixが”mail forwarding loop”を検知することがあります。

具体的には、Delivered-To:ヘッダフィールドが詐称されている場合です。
local(8)デーモンは、配送先のアドレスがすでにDelivered-To:にあるメッセージを”mail forwarding loop”としてbounceします。

だそうです。
 
ついでに、「sendmail の使い方」がわかりやすいです。
NTP で時刻合わせ」はこちらをどうぞ。