2011-12-06 (火)

Mew で新規作成や返信時に case を自動的に切り替える方法 [Mew]

※ この記事は = MewでiCloudのメールを読み書き - ぺっくブログミラー
@peccul
への mention です。

@peccul さんの記事のとおり、Mew で case を設定すると複数アカウント
を切り替えることが出来ます。さらに、自動的に切り替えることも出来ます。

pooh@example.com から来たメールへの返信で、case に example を使いた
い時は、このように設定します(mew-case-guess-when-replied-alist の書
式は mew-refile-guess-alist と同じです)。

;; 返信時(a,A)にケースを自動的に設定する。
(setq mew-case-guess-when-replied-alist
      '(("\\(To\\|Cc\\):"
         ("pooh@example\\.com" "example"))))



新規作成や転送の時は mew-case-guess-alist に設定します。でも普通は
To: や Cc: は空なので、推測に必要な情報がありません。

そこで登場するのが mew-ask-to と mew-ask-cc です。以下のように設定
すれば、返信の時と同じように case が自動的に切り替わります。

;; 草稿を作る時(w,f,F)、最初に To: と Cc: を聞かれる。
(setq mew-ask-to t mew-ask-cc t)

;; 草稿を作る時(w,f,F)や、再編集時(E)にケースを自動的に設定する。
(setq mew-case-guess-alist
      '(("\\(To\\|Cc\\):"
         ("pooh@example\\.com" "example"))))



mew-case-guess-alist と mew-case-guess-when-replied-alist について
は、Info の Customize > config にさらりと書いてあります。

2011-06-18 (土)

「Gmail の連絡先」を Mew のアドレス帳にコピーする [Mew][iPhone]

Gmailのアドレス帳をbbdbにインポートを見て触発されたので、Mew でも出
来るようにしてみました。

masutaka/google-contacts-mew

Make your Mew addrbook using your gmail addrbook



~/Mail/Addrbook が「Gmail の連絡先」で完全に上書きされるので、十分
注意して使ってくださいね。

「Gmail の連絡先」と「iPhone の連絡先」も同期できました。
Google SyncがiPhoneに対応 – カレンダーやアドレス帳の同期が可能に | iPhone 研究室(iPadもね)

P.S.
au 携帯のアドレス帳が悩ましい。。。

この記事に言及しているこのブログ内の記事

2010-08-04 (水)

Mew の g=>C-s のフォルダ名検索に migemo を使う [Mew]

iPhone4 を買ったので、メール環境を mbox から Gmail の IMAP に移行し
ました。

いつでもどこでもメールを見られるのは便利ですねえ。これでネットから
隔離された実家に帰っても大丈夫そうです。

頻度が減ったとはいえ、Mew からも Gmail を読むことがあります。ただ、
Gmail ではデフォルトのメールフォルダ名が日本語です。

%[Gmail]/
%[Gmail]/すべてのメール
%[Gmail]/ゴミ箱
%[Gmail]/スター付き
%[Gmail]/下書き
%[Gmail]/迷惑メール
%[Gmail]/送信済みメール

`g' => `C-s' での移動が面倒です。正直やってられません。
`g' => [TAB] なんてもってのほかです。

以下の設定をして、`g' => `C-s' から migemo を使えるようにしました。

(defadvice mew-input-folder-search-forward-1
  (around
   mew-input-folder-search-forward-1-with-migemo
   activate)
  "migemo を使ってフォルダ名を検索する。"
  (let ((migemo-do-isearch t))
    ad-do-it))


2010-07-04 (日)

Mew の Draft-mode で次や前の草稿にジャンプする [Mew]

Summary-mode での C-c C-o (今開いている任意の草稿にジャンプする) は
便利なのでよく使いますが、Draft-mode でも同じことをやりたかったので、
適当な関数を作りました。

(defun mew-draft-jump-to-next-buffer (&optional previous)
  "Jump to next draft buffer if exists."
  (interactive "P")
  (let* ((draft-dir (file-name-as-directory mew-draft-folder))
         (regex (mew-folder-regex draft-dir))
         (bufs (sort (mew-buffer-list regex) 'string<))
         next-list next-buf)
    (if previous (setq bufs (reverse bufs)))
    (setq next-list (cdr (member (buffer-name) bufs)))
    (setq next-buf (if next-list (nth 0 next-list)
                     (nth 0 bufs)))
    (if (and (get-buffer next-buf)
             (not (equal next-buf (buffer-name))))
        (switch-to-buffer next-buf)
      (message "No such other draft buffer!"))))

(defun mew-draft-jump-to-previous-buffer ()
  "Jump to previous draft buffer if exists."
  (interactive)
  (mew-draft-jump-to-next-buffer t))



実は今回一番悩んだのがキーバインドでした。C-c F1 で調べたところ、ほ
とんど空いていませんでした。仕方がないので、vi っぽく j と k を使う
ことにしました。

(define-key mew-draft-header-map (kbd "C-c C-j") 'mew-draft-jump-to-next-buffer)
(define-key mew-draft-header-map (kbd "C-c C-k") 'mew-draft-jump-to-previous-buffer)
(define-key mew-draft-mode-map   (kbd "C-c C-j") 'mew-draft-jump-to-next-buffer)
(define-key mew-draft-mode-map   (kbd "C-c C-k") 'mew-draft-jump-to-previous-buffer)


2009-03-14 (土)

電子メールでの一行の制限 [E-mail][Mew]

SMTP プロトコルが定義された RFC 5321 によると、"4.5.3.1.6. Text
Line" に一行は(英文字で) 1000 文字までと制限されている。

原文

The maximum total length of a text line including the <CRLF> is 1000
octets (not counting the leading dot duplicated for transparency).
This number may be increased by the use of SMTP Service Extensions.


日本語訳

<CRLF> を含むテキスト行の最大長は 1000 オクテットです(透過性のために
付けられた複製した先頭のドットはカウントしません)。この数値は SMTP
サービス拡張の使用によって増加するかもしれません。


(URL: http://www.hde.co.jp/rfc/rfc5321.php)

実際はユーザが意識する必要はなくて、MUA(メーラ) が適切に処理してく
れる。例えば Mew は長い行があるとエンコード方法を訊いてくる。

Lines are too long. Input encoding (base64):


ではメーラが適切に処理しなければどうなるのか? MTA(転送プログラム)
が適切に処理してくれる。例えば sendmail の標準的な設定では、990 文
字目に !<cr><lf> が挿入される。

もっとも、メーラは RFC 5321 を意識しているわけではなく、RFC 2822(電
子メールの仕様) に則って実装されている。"2.1.1. Line Length
Limits" によると、1 行は(英文字で) 78 文字以下であるべきで、998 文
字以下でなければならないと定められている。

原文

There are two limits that this standard places on the number of
characters in a line. Each line of characters MUST be no more than
998 characters, and SHOULD be no more than 78 characters, excluding
the CRLF.


日本語訳

この標準では1行中の文字数に2つの制限がある。それぞれの行の文字はCRLF
を除いて、決して998文字以下でなければならず(MUST)、78文字以下であるべ
きである(SHOULD)。


(URL: http://www.puni.net/~mimori/rfc/rfc2822.txt)


RFC 3676 による Text/Plain の拡張

一方、RFC 3676 で Text/Plain が拡張され、送信元のメーラが対応してい
ればユーザは長い行を気軽に書いてもよくなった。そのようなメールのヘッ
ダ部分には "Text/Plain" のパラメータとして "format=flowed" が設定さ
れ、長い行の途中には適度に「半角スペース+改行」が挿入される。これに
より連続した行が折り返されたものか、本当に改行されたものかが分かる。
そのため、受信者側のメーラは適度に改行して表示できるようになった。

Content-Type: Text/Plain; charset=us-ascii; format=flowed


上記は英語本文の場合だが日本語本文の場合、以下のような値となる。

Content-Type: Text/Plain; charset=iso-2022-jp; format=flowed; delsp=yes


"delsp=yes" とは何か?英語本文は単語の途中で折り返されることはない
ため、折り返された行を連結したい時は行末のスペースをそのまま単語の
区切りに使えばよい。しかし、日本語本文でそれをやると単語の途中で半
角スペースが現れ、みすぼらしい文章になる。よって、連結する時は行末
の半角スペースを削除してねというお願いが "delsp=yes" というわけ。

Mew のデフォルトでは "format=flowed" は OFF だが、以下の 2 種類の方
法で ON にすることが出来る。

;;送信メールは常に "format=flowed" を ON にする。
(setq mew-use-format-flowed t)



;;現在作成しているメールの "format=flowed" を ON にする。
draft-mode で C-c C-f



Mew は "format=flowed" でないメールは、何も加工せずに表示する。
Summary-mode で `_' することによって、折り返された行、長い行、通常
の行の順に行の表示を変えることが出来る。

それに対して、"format=flowed" なメールは一度 `_' された状態で表示される。

※ Mew での長い行の扱いについては、Info の longline の項に記載されている。

2009-03-01 (日)

Mew で "utf-8 is used. OK?" に相当する文字に色付け [Mew]

(setq mew-ask-charset '("us-ascii" "iso-2022-jp"))

などと設定して、これ以外の文字を含むメールを送信しようとすると、
"utf-8 is used. OK?" と聞かれるが、本文のどこに該当の文字が含まれて
いるのか経験と勘(笑)で調べるしかなかった。そこで、"n" でキャンセル
した後、該当の文字の背景を紫色にするようにしてみた。

;; 「UNICODE 文字」の face を定義
(defvar mew-unicode-char-face-list
  '((((class color) (type tty)) (:bold t))
    (((class color) (background light)) (:background "purple"))
    (((class color) (background dark))  (:background "purple"))
    (t (:bold t))))
(defface mew-unicode-char-face mew-unicode-char-face-list
  "UNICODE 文字"
  :group 'mew-highlight)
(defvar mew-unicode-char-face 'mew-unicode-char-face)
(face-spec-set 'mew-unicode-char-face mew-unicode-char-face-list)

(defadvice mew-encode-undo
  (after
   mew-encode-undo-after-advice
   activate)
  "「UNICODE 文字」を強調表示"
  (if mew-ask-charset
      (let* ((beg (progn (mew-header-goto-body) (point)))
             (end (or (mew-attach-begin) (point-max)))
             (unicode-char-regexp (mew-cur-unicode-char-regexp beg end)))
        (if (stringp unicode-char-regexp)
            (save-excursion
              (mew-elet
               (goto-char beg)
               (while (and (<= (point) end) (re-search-forward unicode-char-regexp end t))
                 (put-text-property
                  (match-beginning 0) (match-end 0) 'face 'mew-unicode-char-face))))))))

(defun mew-cur-unicode-char-regexp (beg end)
  (let (pos unicode-char unicode-char-list)
    (save-excursion
      (goto-char beg)
      (while (< (setq pos (point)) end)
        (if (and (mew-unicode-char-p pos)
                 (setq unicode-char (char-to-string (char-after pos)))
                 (not (member unicode-char unicode-char-list)))
            (setq unicode-char-list (cons unicode-char unicode-char-list)))
        (forward-char 1)))
    (if (consp unicode-char-list)
        (concat "[" (mapconcat 'identity unicode-char-list "") "]+"))))

(defun mew-unicode-char-p (pos)
  (let* ((char (char-after pos))
         (eight-bit-p (and (not enable-multibyte-characters) (>= char 128)))
         (charset (if eight-bit-p 'eight-bit
                    (char-charset char))))
    (and (not (eq charset 'ascii))
         (not (eq charset 'japanese-jisx0208)))))



さらに draft-mode で C-c C-l した時も色付けさせる設定。

(defadvice mew-highlight-body-region
  (after
   mew-highlight-body-region-after-advice
   activate)
  "「UNICODE 文字」を強調表示"
  (if (and mew-ask-charset
           (eq major-mode 'mew-draft-mode))
      (let* ((BEG (ad-get-arg 0))
             (END (ad-get-arg 1))
             (unicode-char-regexp (mew-cur-unicode-char-regexp BEG END)))
        (if (stringp unicode-char-regexp)
            (save-excursion
              (mew-elet
               (goto-char BEG)
               (while (and (<= (point) END) (re-search-forward unicode-char-regexp END t))
                 (put-text-property
                  (match-beginning 0) (match-end 0) 'face 'mew-unicode-char-face))))))))



追記(2009-03-02):
mew-cur-unicode-char-regexp() と mew-unicode-char-p() を変更しました。
前者は検索回数の削減、後者は Unicode 判断の変更です。

2009-02-14 (土)

Mew でメーリングリストに返信する時に宛先を構築し直す。 [Mew]

某掲示板で話題になっていたので、昔作った関数を見直してみた。

○機能
- 返信先のアドレスに、自分が加入している ML が含まれていると、
  そのアドレス以外のアドレスを全て宛先から除外する。
- 削除されたアドレスは、メール本文の先頭に以下のように挿入される。

!!! Deleted Value !!!
To: who@example.com
Cc:
Dcc: masutaka@example.com

- 自分が加入している ML は mew-subscribed-mailing-list に設定すること。

○ソース

(defvar mew-subscribed-mailing-list
  '("mew-dist@mew.org"
    "mew-win32@mew.org")
  "加入している ML をリストで記述。正規表現指定不可。
nil ならどの ML にも加入していないものとする。")

(defun mew-draft-restructure-header ()
  "返信先のアドレスに、自分が加入している ML が含まれていると、
そのアドレス以外のアドレスを全て宛先から除外する。
自分が加入している ML は mew-subscribed-mailing-list に設定すること。
削除されたアドレスは、メール本文の先頭に挿入される。"
  (save-excursion
    (let ((deleted-alist))
      (setq deleted-alist (mew-draft-restructure-header-internal))
      (when deleted-alist
        (let (str deleted-list address)
          (setq str "### Deleted Value ###\n")
          (dolist (field (list mew-to: mew-cc: mew-dcc: mew-bcc:))
            (setq deleted-list (assoc field deleted-alist))
            (when deleted-list
              (setq str
                    (concat str field " "
                            (mapconcat 'format (cdr deleted-list) ", ")
                            "\n"))))
          (setq str (concat str "\n"))
          (mew-header-goto-body)
          (insert str))))))

(defun mew-draft-restructure-header-internal ()
  "To:, Cc:, Bcc:, Dcc: から不要なアドレスを削除し、
削除したフィールドの名前と値をリストで返す。
To: が空になった場合は、Cc: のアドレスを To: に置き換える。"
  (let (subscribed-ml-exist deleted-alist)
    (catch 'loop
      (dolist (field (list mew-to: mew-cc:))
        (dolist (address (mew-header-parse-address-list (list field)))
          ;; 加入している ML があった場合は即座にループから抜ける。
          (if (mew-member-case-equal
               address mew-subscribed-mailing-list)
              (throw 'loop (setq subscribed-ml-exist t))))))
    (when subscribed-ml-exist
      ;; To と Cc から mew-subscribed-mailing-list 以外のアドレスを削除し、
      ;; Bcc と Dcc は自分のアドレスを削除する。
      (setq deleted-alist `(,@(mew-draft-restructure-to-cc)
                            ,@(mew-draft-restructure-bcc-dcc)))
      ;; To が空になっていたら、Cc を To にしてしまおう。
      (unless (mew-header-parse-address-list (list mew-to:))
        (let ((cc (mew-header-parse-address-list (list mew-cc:))))
          (mew-header-delete-lines (list mew-to: mew-cc:))
          (mew-header-insert mew-to: (mapconcat 'format cc ", ")) )))
    deleted-alist))

(defun mew-draft-restructure-to-cc ()
  "To: と Cc: から不要なアドレスを削除し、
削除したフィールドの名前と値をリストで返す。"
  (let (deleted-alist)
    (dolist (field (list mew-to: mew-cc:) deleted-alist)
      (let (enable-address-list delete-address-list)
        (dolist (addr (mew-header-parse-address-list (list field)))
          (if (mew-member-case-equal addr mew-subscribed-mailing-list)
              (setq enable-address-list `(,@enable-address-list ,addr))
            (setq delete-address-list `(,@delete-address-list ,addr))))
        (setq deleted-alist (cons (cons field delete-address-list) deleted-alist))
        (if enable-address-list
            (mew-header-replace-value
             field
             (mapconcat 'format enable-address-list ", "))
          (mew-header-delete-lines (list field)))))))

(defun mew-draft-restructure-bcc-dcc ()
  "Bcc: および Dcc: フィールドを削除し、
削除したフィールドの名前と値をリストで返す。"
  (let (deleted-alist)
    (dolist (field (list mew-dcc: mew-bcc:) deleted-alist)
      (let ((deleted-address-list))
        (setq deleted-address-list
              (mew-header-parse-address-list (list field)))
        (when deleted-address-list
          (setq deleted-alist (cons (cons field deleted-address-list) deleted-alist))
          (mew-header-delete-lines (list field)))))))

(add-hook 'mew-draft-mode-newdraft-hook 'mew-draft-restructure-header)


2008-02-28 (木)

Mew + Namazu (mew-nmz.el) [Mew]

「To: に masutaka.net@gmail.com を含む」または「ほげほげ」が含まれたメールを検索。

to=masutaka.net@gmail.com or ほげほげ


「To: に masutaka.net@gmail.com を含む」かつ「ほげほげ」が含まれたメールを検索。

to=masutaka.net@gmail.com and ほげほげ


cc=masutaka.net@gmail.com を使う場合は ~/Namazu/mknmz-inc.pl の $SEARCH_FIELD を修正
して、インデックスを作り直す必要がある。他にもパラメータを追加したほうが良いかもしれない。
mew-dist 28132 参照のこと。

インデックス作り直しに関連した話題をもう一つ。
Namazu-2.0.17 以降であれば `--decode-base64' が使える。メリットは以下の
とおり。こちらも mew-dist 28132 参照のこと。

・日本語のメールなんだけど、UTF-8 + Base64(Q も可) なものも検索できる。
・添付された MS-Word などの中身も検索できる。

2007-10-19 (金)

formailを使った重複メールの削除 [procmail][Mew]

[2007-07-31-1] で話題にした重複メールの件。

To: masutaka.net@gmail.com
Cc: 加入しているメーリングリスト

という宛先でメールが来ると、同じメールが 2 通来てしまう。
procmail 付属の formail をうまくを使えば、スマートに削除できることが分かった。
以下は ~/.procmailrc の該当の設定。

PATH=$PATH:/usr/local/bin
MAILDIR=$HOME/Mail.local
DELETEDIR=$HOME/.trash/Mail/delete
:0
* ? formail -D 8192 msgid.cache
* ? touch $DELETEDIR/.mew-mtime
$DELETEDIR/.


formail が Message-ID を msgid.cache というファイルに 8192byte 蓄え、
重複メールかの判断をしている。そう判断されたメールは $DELETEDIR に振り
分けられる。msgid.cache は $MAILDIR に作られる。どちらのディレクトリとも
メールサーバから見える場所を指定すること。$HOME が無難。
ディレクトリはあらかじめ掘っておき、適切なパーミッション(2700等)をかけておくこと。

.mew-mtime を touch しているのは、Mew から $DELETEDIR を見たときに
スキャンが走るようにするため。

2007-10-15 (月)

Emacs のメーラからの LDAP 検索 [Emacs][LDAP][Mew]

- Mew(mew-ldap.el) (★)

-- [2003-05-13] に「使ってみたい」と言ってずいぶん経ったが、
    自宅で立ち上げたテストサーバから使えるようになった。
    mew-ldap.el は以下の Web サイトに置いてある。
    (URL: http://www.meadowy.org/~gotoh/mew.html)

    ~/.mew.el の設定内容は以下のとおり。

(require 'mew-ldap)
(setq mew-ldap-server "ldap")
(setq mew-ldap-search-base "dc=masutaka,dc=com")
(setq mew-ldap-use t)
(define-key mew-draft-header-map (kbd "C-i") 'mew-ldap-header-comp)
(define-key mew-header-mode-map  (kbd "C-i") 'mew-ldap-header-comp)



-- 意外にサクサクと動いてビックリ。説明には mew-ldap-use は default の
   nil で良いと書いてあったが、ソースを見た限りでは non-nil じゃないと
   検索してくれないようだ。
   追記(2007-10-27):
   上の情報は間違い。nil でも検索してくれる。ただし、なぜか検索して
   くれない時もある。その場合 C-u TAB すれば、強制的に検索してくれる。

-- ただ、実際に使えるレベルには達してないと思う。理由は以下のとおり。
   修正してパッチ送ろうかな...。

--- ~/Mail/Addrbook と名前が被ると LDAP 側の検索結果が補完候補にならないことがある。
--- メールアドレスが複数あっても、最初にヒットしたアドレスしか補完されない。
--- 検索(Tab)や展開(M-Tab)には、日本語の名前が使えないみたい。
--- 認証には対応していないみたい。
--- Summary-mode への名前の展開にも対応していない。

2005-02-01 (火)

Mew on Meadow で X-Face を表示する。 [Mew]

uncompface => Cygwin から入手
icontopbm => http://netpbm.sourceforge.net/ から入手
pbmtoxbm => 同上

2004-02-02 (月)

Mew あれこれ [Mew]

デフォルトの動作 mew-refile-ctrl-multi => t の時に
Summary-mode で `c' すると、複数のフォルダに refile されるが、
ハードリンクが存在するシステムなら、ハードリンクが使われるので、
ファイルの容量が増えないのでした。
Mew-4.0.51 あたりから mew-summary-form-mark-review => t だけで
(To: だけでなく) CC: に自分が入っている時も `*' マークを付けて
くれるようになったようだ。

2003-05-13 (火)

エルダップ Lightweight Directory Access Protocol [LDAP][Mew]

ディレクトリサーバにアクセスして、登録ユーザのメールアドレスを引っ張っ
てくることができるらしい。このサービスを使えるようになったら、mew-ldap.elを使ってみたい。
(URL: http://www.imasy.or.jp/~gotoh/mew.html)

2003-03-06 (木)

shar で圧縮する [UNIX][Mew]

% shar -z [dir or file] > [output.shar]
      ~~gzip圧縮する
sharが添付されているメールに `@'マークを付け M-s(mew-summary-unshar)すると、
指定したディレクトリに解凍される。

2002-10-01 (火)

Mew で日本語 Subject の検索をする [Mew]

(setq mew-prog-vgrep "mg")
(setq mew-prog-vgrep-opts '("-j" "jis" "-l" "-e" "-x" "&mime"))


というのを ~/.mew.el に書いて

C-u / C-m Subject:.*ほげほげ C-m

などとするとできます。

追記(2009-05-24):
Mew 4.2.53 から、mew-prog-vgrep と mew-prog-vgrep-opts は削除されま
した。代わりに以下の設定をしてください。検索方法の詳細は、Info の
search と condition の項をご覧下さい。

(setq mew-prog-grep "mg")
(setq mew-prog-grep-opts '("-j" "jis" "-l" "-e" "-x" "&mime"))



ただ、上記の方法だと `?' や `/' の時に常に mg を使うことになってし
まいます。それが嫌な人は上の設定はしないで、以下の設定をしてください。

(setq mew-input-pick-command-hist '("mg -l -jjis -x&mime -e "))


`?' や `/' の後、何も入力せずに Enter すると

Cmd opts pattern: grep -l -e

などと、grep コマンドの入力を促されますが、この時 M-p すると mg を
選択出来ます。

2002-07-11 (木)

Mew で emacs-w3m を使わないで HTML Mail を見る [Mew]

いわゆる HTMLメールをみやすい(?)テキストで見るには、summary-modeで ':'を押す。

2002-02-18 (月)

Mew の添付ファイルの種類 [E-mail][Mew]

C-c C-aでファイルを添付した後、T で、ファイルの種類を決められる。
Message/Rfc822が、いわゆる転送メール。

2002-01-08 (火)

Mew のインストール [Mew]

Mewをインストールした場合は、/usr/local/share/emacs/site-lisp以下の
シンボリックリンクを必ず更新しなければいけない。
これは、/usr/local/bin/mew.* との整合性がおかしくなるから???
ということは、
/usr/local/share/emacs/site-lisp:
drwxr-xr-x 3 masuda masutaka 2560 Dec 10 12:01 .mew-2.1/
drwxrwxr-x 3 masuda masutaka 2560 Dec 12 10:47 .mew-2.1.52/
drwxrwxr-x 3 masuda masutaka 2560 Dec 13 18:55 .mew-3.0.50/
lrwxrwxrwx 1 masuda masutaka 11 Dec 14 10:10 mew -> .mew-3.0.50/
しても意味ないってこと?
そのバージョンに問題があったらリンク先を変えればいいと思ったんだけど。。。
(/usr/local/bin/mew.*を)インストールし直さないといけないのね。

最終更新時間: 2017-12-06 23:28

検索


最近の話題
- 2017-11-28
  『Real World HTTP』を読んだ
- 2017-11-18
  iPhone X 64GB SIM フリー版を買って一週間経った
- 2017-11-16
  golang.tokyo #10 x WomenWhoGoTokyo に行ってきた #golangtokyo
- 2017-11-12
  『PromiseとAsync-Awaitまとめ(Emacsで)』という LT をした
- 2017-11-10
  RSpec 3.5 から shared_context の使い方が少し変わっていた
  S3 の public バケットで特定パス以下を IP アドレス制限する
- 2017-11-01
  『オブジェクト指向設計実践ガイド』読書会での感想メモ
- 2017-10-30
  『スターティングGo言語』を読んだ
最近追記された記事
- 2017-01-10-1 (4日前)
- 2017-04-08-1 (24日前)
- 2017-06-02-1 (158日前)
- 2017-04-29-1 (220日前)
- 2017-04-13-1 (234日前)
- 2017-04-13-1 (236日前)
- 2017-03-02-1 (278日前)
- 2017-02-25-1 (283日前)
- 2017-02-21-1 (287日前)
- 2015-06-07-1 (293日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (20)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (91)
- Boxen (2)
- Bugsnag (1)
- capistrano (4)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (10)
- clang (26)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (3)
- E-mail (8)
- elasticsearch (4)
- Emacs (222)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (20)
- GCP (1)
- Gem (5)
- Git (9)
- GitHub (19)
- golang (9)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (3)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (16)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Kubernetes (2)
- Langrich (7)
- LDAP (6)
- Life (19)
- Linux (6)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (2)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (12)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- RSpec (2)
- Ruby (50)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (16)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+