VimM#3 勉強会にいってきた

By admin | 2008年11月23日

今日は秋葉原に VimM#3 の勉強会に行ってきた。
元上司??の同じ職場で働いてる人とあったり、Flash の方での知り合いの同僚の人に
あったりだとかとても楽しいかった。

肝心の勉強会はというと、脱初心者がテーマなのにも関わらず初心者らし〜人はいなかった気がする。
はやく visual mode を卒業せねばと思う次第です。

内容的には取り組み方、マクロ、レジスタ、plugin、text objectなど多岐にわたってて
めっさんこ良かった。なんか分かった気がした。
text object や Control + } とかが衝撃だった。

全員が言ってたのは、それ help に書いてるよ。
つまりは help に全てがかいてあるから調べ方さえみにつけば
意外にスラスラ上達するのやも。

ということで忘れない間にメモメモ。

発表内容

Vimで効率的なテキスト編集 id:ukstudio

エディターはプログラマにとって、武士でいう刀みたいなもんだ。かっこよす。

非効率な作業をみつけ、それを解決する方法を考える(キーマッピング, vim script, macro)、
そして最後にそれを習慣にするとのこと。

最後の習慣にするってのが凄い大事。一気に色々覚えようとしても無理。
日々の鍛錬とはまさにこのこと。
新しいことを覚えて習慣化して次のを覚える。

あとは tips で
検索(*), ファイルの移動(gf), 置換, キーワード補完(control + n, p) の使い方があった。

vimrc を他の人のを読み、誰かに聞き、vim-users.jp で聞けば相当、力がつくとのこと。

マクロ id:taku_o

通称:マクロ厨ことななしの vim 使いさんの発表

最初はマクロの初歩的な使い方からはじまった。
と思いきや、気づけばレジスタの話になっていて
速攻意味不明。。。。。
と思いきや、説明がすごい分かりやすくてとても助かった。

マクロを作るときはレジスタが a-zA-Z0-9 と作れるが
基本が小文字を使うらしい。大文字だと小文字のレジスタが登録されていると追記されるらしい。
0は頻繁にかきかわり、1-9 はレジスタの番号がよくずれるためらしい。

:display <- レジスタの情報を表示して確認できる
Control + r [レジスタ] <- これでレジスタの値を貼付ける
  • マクロいいとこ
    • カーソル移動能力を使って編集箇所を簡単に細かくしていできる
    • 頭、使わない。簡単
    • 作って、即使える
    • 何回でも実行できる
  • 駄目なとこ
    • マクロを登録するコストがかかる
    • 登録済みのマクロのミスを修正しづらい
    • 条件分岐はしない方がいい
    • 処理速度が遅い
  • むいてるとこ
    • 少し大きめの編集処理
    • 6-10万件
    • 使い捨ての処理
    • スクリプトを組もうとすうと面倒なもの

他にもテンプレートの修正や、簡単なテストデータの作成にはむいている。

vimgrep, copen, cn これほんと便利。
これが今までしらなかったのが損というくらいのしろもの。
あと、expression レジスタもあった。これは便利!!

んで、改心の出来のマクロが組めたら vimrc に let @[レジスタ] = “マクロ” として書けばいい。
マクロの注意点は、インクリメントやデクリメントを使用すると桁数がずれたりすると
j, k, l, m などの移動系がやられるので基本はつかわないようにする。
検索で移動するのが吉。

俺の.vimrcを見ろ!PHP使いの為の設定とプラグイン id:halt

最初エディタなんてなんでもいいと思ってた。
○○○○life さんの vim さばきを見てから vim をさわりだしたとのこと。
本気でとりくみだして1年くらいだとか。

オススメのプラグイン
プラグイン紹介

AutoComplPop
– 自動的に補完してくる
FuzzyFinder
– バッファに開く
– 空気を読んだファイルの選択ができる
FlyQuickFixMake
– 保存をトリガーにコンパイルエラーの行を分かりやすいように表示

PHP のリファレンスを vim help の形式に変換して vim 上でみてた。
あれはほんと便利。全ての言語があったほうがいいと思った。
簡単にコピペもできるし、調べるまでのコストも低いし、効率化間違いなし。
仮にかぶったとしても :tNext, :tPrev で次のに飛べる。

あとは PHP の文法チェックを vimrc の中でしてた。

operator, the true power of Vim id:kana

vim ユーザのランクづけをしてた。
最初、visual mode を使うようになり、習熟とともに visual mode をつかわなくなり
text object を使いこなせるようになり、その後、満足できなくなり
text object を新しく作り、新しい operator を作る!!とのことらしい。

ざっっくりというとこんな感じ。凄い濃い内容だった。
しかし、text object が凄い便利だった。
ちょっと感動。

ほんとうに色々なことができて
これくらいできるのが知れば、やるもんですよ。
上を知る機会があるってのは、やっぱいいもんだ。

VimM#3 幹事の id:ukstudio、発表者の方々ほんとうにお疲れ様でした!!!
ありがとうございます。

関連資料

VimM#3で答えそびれた質問に対する回答
VimM#3を開催してきました
VimM#3懇親会参加希望者様へ
VimM#3に行ってきました

OP25B 対策で Postfix を SMTP クライアントとして SASL 認証する(Biglobe)

By admin | 2008年11月16日

概要

そもそも OP25B(Outbound Port25 Blocking) ってのはなんなのか??をざっくり説明すると
25番ポートから出て行くメールは必ず ISP の SMTP サーバを通過しないと駄目だという決まり。
これは ISP によって対応してたりしてなかったりする。
詳細はここを見て下さい。
各 ISP 対応一覧で自分が使ってる ISP の状況を確認しとけば大丈夫。
不運にも該当した方は自宅メールサーバーから外へむけて(会社, gmail, hotmail等)にむけてメールを送信することができません。
ただし同一 ISP 間の場合はメール送信ができました。

以下に設定のやり方を書いてきます。
家の ISP が Biglobe のため Biglobe 以外はわかりません。あしからず。

設定

まず、Postfix の設定はすんでいることが前提です。
することは大きくわけて3つあります。
1. Biglobe 中継用の SMTP サーバの取得
2.postfix の設定
3.SASL 認証用の passwd ファイル作成
を順番にしていきます。

Biglobe 中継用の SMTP サーバの取得

ここにいき利用申込をします。
これはすぐに発行してもらえるため時間はくいません。
ここで発行してもらった SMTP サーバとポートは重要なのでメモなり、印刷することをオススメします。

postfix の設定

発行してもらった SMTP サーバを Postfx の relayhost に設定します。
あと、SASL(Simple Authentication and Security Layer) 認証の設定です。

説明のため、

SMTP サーバー((1)で入手したやつ)を hoge.biglobe.ne.jp
メールアドレス(Biglobe から発行されたやつ)を fuga@xxx.biglobe.ne.jp
パスワード(Biglobe から発行されたやつ)を  foo

とします。

#メール送信時に Biglobe の SMTP サーバーにむけて送信
relayhost = [hoge.biglobe.ne.jp]:25
 
#SASL 認証の設定
smtp_sasl_type = cyrus
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =

SASL 認証用の passwd ファイル作成

#/etc/postfix/sasl_passwd
[hoge.biglobe.ne.jp]:25 fuga@xxx.biglobe.ne.jp:foo

上記のように認証用のファイルを作成し、それを Postfix に指定させればよい。
パーミッションは root で 600 にしておく。

postmap /etc/postfix/sasl_passwd

これで /etc/postfix/sasl_passwd.db ってのができればおk。
あとは再起動をすればメール送信ができるようになってます。

送信時のError Code

530 Need AUTH before MAIL (in reply to MAIL FROM command)
メール送信時に中継サーバに対してSASL認証をしてい。/etc/postfix/main.cf の設定に問題がありそう。

500 authentication failed
中継サーバの認証に失敗してる。/etc/postfix/sasl_passwd あたりが問題ありそう。

参考文献

SASL(シンプル認証とセキュリティ層)(Simple Authentication and Security Layer (SASL))
Postfix+SMTP-AUTHでメールをプロバイダに中継
OP25B(Outbound Port 25 Blocking)対策

svn propset について調べてみた(svn:external, svn:ignore, svn:executable)

By admin |

svn のリポジトリに外部リポジトリを追加する

Subversionのsvn:externalsというプロパティ を参考にして、大元のリポジトリに違うリポジトリを追加(シンボリックリンクみたいなイメージ)してみた。

svn:externals 自体は簡単ですぐにできた。
これできれば Project 単位でリポジトリ作成しておいて、
自分用のリポジトリにもこれで同期できるし、これ便利。

というわけで、さっそく試してみた。

svn propset svn:external 'Hoge http://svn.example.com/hoge' .
svn propset svn:external   '[checkout 後のフォルダ名] [リポジトリ URL]' [checkout する場所]

上記の場合だと、カレントディレクトリに http://svn.example.com/hoge を Hoge という名前で checkout する。(正確には、この段階では checkout されない。登録のみ)
次に svn up とすれば、 Hoge がcheckout してくる。

登録されているかどうかの確認は以下のコマンドで確認できる。

svn proplist -v [path]

削除したい場合は

svn propdel svn:externals [path]

で、できる。

対象ファイルを svn の管理対象外にする

svn propedit svn:ignore [path]
 
#環境変数で EDITOR を指定していない場合
EDITOR=vi svn propedit svn:ignore [path]

これで EDITOR が開いて改行区切りでファイルをして指定してやれば
書いた分だけ管理対象外にできる。
一個ずつコマンドを打つ必要がなく editor で書けるので楽。

他にもファイルで読み込むやり方もある。

svn propset svn:ignore -F [ignore file list] [path]

対象ファイルに実行権限を与える

svn propset svn:executable ON [file]

実行権限の削除

svn propdel svn:executable [file]

確認

svn proplist -v [file]
 
'file name' の属性:
  svn:executable : *

おまけ

文字コードにも指定できるみたい。

svn propset svn:eol-style [native', 'LF', 'CR', 'CRLF'] [file]

WordPress にトラックバック URL を表示するやり方

By admin |

ここ見てトラックバックの URL が表示されていないことにきづいた。
それでちょっと対応した。
参考にしたサイト。

<?php if ('open' == $post->ping_status) : ?>
   <h3 id="trackback-url"><?php _e('Trackback URL', 'hoge') ?></h3>
   <input onfocus="this.select()" readonly="readonly" value="<?php trackback_url(); ?>"
       class="tb_url" id="tb_url" name="tb_url" accesskey="x"/>
<?php endif; ?>
input#tb_url {}

上記の PHP のコードを表示したいところに追加して
あとは CSS でデザインを少し調整すればおk。

FlashLlite1.1 で Firebug のコンソールに Dump する方法

By admin | 2008年11月15日

Firebug は必須

いざしようとした時に忘れてたんで以前のエントリ(自分の昔のエントリ)を引用しました。
需要があるかどうかは定かではないけど。

簡単にいうと swf から javascript で firebug の API を叩いているだけ。
でも、これで確認できると凄い便利。

//文字出力
getURL("javascript:console.log('hoge')");
//変数を出力
getURL("javascript:console.log('test :" add /:hoge add "'));

動的に生成される swf の値を見ようとしたら
TextField に表示なんて気怠いすぎて嫌だしね。

WordPress Themes