vim7 のメニューで補完

css.vim がバグってんだよ。vim7 なら直ってるよ という書き込みがあったので vim7 にするよ! 嘘だよ! ホントは vim7 じゃないとかありえないらしいからだよ><

動機はともかく vim7 を入れた。TECHMemo - vim7のインストール を見てそのままインスコ。そのまま起動。

C-n, C-p での補完がメニューになった。HTML で要素名補完・タグ補完が効く (C-x C-o)。CSS 読んで class, id 補完するやつはエラーでて動かない、けど、特に困らない。

C-n, C-p の動的自動補完がメニューになったので、xyzzy のポップアップメニュー版っぽくなった。気持ちいい。

画像は perl モードで C-n 補完したときのやつ。もともと (vim6) がどうだったかやってないから知らないけど、C-n 押した瞬間に vim が頑張ってスキャンするのが面白い (ストレス溜まるほどは遅くない)

.vimrc に以下の設定を加えて、TAB で補完がでるようにした。xyzzy では C-SPC で動的補完にしてるんだけど、C-SPC だと IME のバインドをかぶるので TAB に。TAB がどうしても入力したいときは C-v TAB で入力できるみたいだ。

imap <TAB> <C-N>
" オマケ indent-whole-buffer
noremap <F8> gg=G``
  1. トップ
  2. linux
  3. さらに vim7 に
  1. トップ
  2. vim
  3. さらに vim7 に

なんか微妙

ブックマーク的なフレンド機能じゃなくなって、承認制みたいになってしまった。ブックマーク的な使い方がしにくくなるなぁ。

  1. トップ
  2. web
  3. Last.fm が変わったけど

今日 NTT からひかり電話用にルータが届いたので構成を考えた。

少し前から NTT のルータは二段目にしようと思っていたのだけれど、調べてみるとどうやらそうするのは無理らしい。というのも SIP プロトコルで通話用のセッションを初期化するとき、VoIP 端末が自分のグローバル IP を知っていないといけないからみたいだ。もし NAT の内側に設置したいならば、ルータが SIP プロトコルを解釈してメッセージ中の IP を書き換えたりもしないといけないとかなんとか。(SIP-NAT)

結局どうすれば NTT のルータを通過せずにネットに接続できるかというと、ONU 直下にハブをつけて、それにルータをぶらさげる形にするらしい。

配線図

30 :不明なデバイスさん :2006/04/18(火) 20:10:46 ID:N78uXhwt
>>28
買わんでもルータにHUBがついとるがな
ケーブルは、も一本いるけどな

31 :不明なデバイスさん :2006/04/18(火) 20:54:44 ID:W7PvBfmV
>>30
それって、ONUからひかりのルータのLANにつないで、
ルータ自身のWANとLANをつなぐであってる?


32 :不明なデバイスさん :2006/04/19(水) 00:12:52 ID:MwCD1t9J
>>30-31
それやったらループバックするからマズいだろうがw
どういう挙動するかわからんけど。

当初の目的はこうしたいんでしょ?
http://voip-info.jp/index.php?%A4%D2%A4%AB%A4%EA%C5%C5%CF%C3Tips

33 :不明なデバイスさん :2006/04/19(水) 12:39:48 ID:2xHg8lhS
>>32
IPv6ブリッジとPPPoEブリッジ無効にすれば問題なし。というか前とか前々スレではよく出てきた話。
インターネットで負荷がかかっている状態で電話大丈夫かとかあるけど、まあそれはDSCP優先しないハブ入れても同じだし。

34 :不明なデバイスさん :2006/04/19(水) 14:00:37 ID:qh6q5Xjp
ひとつの機器だと考えるから、自家接続はまずいと思ってしまうのだろう。
ルーターも内部的にはHUB部分+ルーター部分に別れているわけだ。
ONUの次にかますHUBに、ひかり対応ルーターのHUB部分を利用しようという
話なわけだな。
せっかく付いてるHUBを使わずにおくのは、電気代の無駄ってものだろ。

さてうまくいくでしょうか。VoIP 側が PPPoE している間って、PC 側の PPPoE は切断されちゃう?よなぁ。初期化のときだけだけど、気になる。実際運用してみないとわからないことばっかり。


VoIP 関連の用語列挙

SIP (Session Initiation Protocol)
電話っぽいセッション確立プロトコル
SDP (Session Description Protocol)
SIP の body 部分を使われるプロトコル
RTP (Real-time Transport Protocol)
音声信号を実際に通信するプロトコル

@IT:VoIPに耐えるネットワーク構築(2) の図がわかりやすかった。

  1. トップ
  2. net
  3. VoIP, ひかり電話, NAT

CRON って cron.hourly とかを run-parts で実行するけれど、なんだか実行されている気配のないスクリプトがあって悩んだ。

結局ファイル名が悪かったみたいだ。log.sh という名前にしていたのだけれど、これだとだめらしい。httplog に改名したらちゃんと run-parts --list でリストされるようになった。


man 見てもどうもわからなくてわかるまで時間がかかった。結局最後は試行錯誤っていう。

  1. トップ
  2. server
  3. CRON の run-parts でハマる
  1. トップ
  2. linux
  3. CRON の run-parts でハマる

「気をつけていること」って書いたけど、実際にはほとんど無意識ぐらいで「こうしたほうがいいな」って思いながらやっているのを書き出しただけで、あの規則ありきで書いているわけじゃないのです。

結果的にああなったぐらいのもので、わりとどうでもいいものです。書き出したのは、書き出すことで、本当にそれでいいのかっていうのを明確にしたり、曖昧なところを「曖昧なところ」として認識するためで、守るために書いたわけじゃないです。

例えばあれだと一つのファイルのまとめて書くことを前提にしてるから、ファイルを分けたときどうするかっていうのは全然わかってない。普通に考えたら、ある ID セレクタ以下を一括して分離するだろうけど、実際そうやって書いたことはないからなんともいえない。手探りいんぐ。

  1. トップ
  2. css
  3. 気をつけていること

Emacs の設定に嫌気がさしたので (ネガティブドリブン) 、vim に乗り換えるよ!

ubuntu 6.06 LTS の vim は VIM - Vi IMproved 6.4。css.vim のロードがいつも失敗する。

とりあえず覚えた (覚えてた) コマンド列挙

  • :w
  • :q, q!
  • i
  • v
  • V
  • C-v
  • u
  • C-r
  • y
  • p
  • P
  • dd
  • gg
  • G
  • /{search-string}
  • s/{s}/{r}/gc
  • ==
  • ^
  • $
  • o
  • !!cmd
  • gg=G

現時点での .vimrc

syntax on
colorscheme desert256
highlight ZenkakuSpace ctermbg=6
match ZenkakuSpace /\s\+$\| /
set listchars=tab:>.
set list
" バックアップとか自分でしろ
set nobackup
" 誰かが編集したら読み直して
set autoread
" 袖あまりは良いものだ
set scrolloff=10
" 行番号の表示
set number
" デフォルトインデント設定
set autoindent smartindent
" よさげなタブ
set smarttab
set softtabstop=4 tabstop=4 shiftwidth=4
" BS の挙動
set backspace=indent,eol,start
" よしなにしてくれ
set ignorecase smartcase
" インクメンタル
set incsearch
" 最初にもどれ
set wrapscan
" 対応する括弧の表示
set showmatch
" 入力中のコマンドを表示
set showcmd
" 行頭・行末間移動を可能に
set whichwrap=b,s,h,l,<,>,[,]
" 補完候補を表示する
set wildmenu
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']['.&ft.']'}%=%l,%c%V%8P
set termencoding=utf8
set encoding=japan
set hidden
filetype plugin on
filetype indent on
noremap # :call ToggleCommentSelection()<CR>
" http://peace-pipe.blogspot.com/2006/05/vimrc-vim.html
" current syntax
command! -nargs=0 GetHighlightingGroup echo 'hi<' . synIDattr(synID(line('.'),col('.'),1),'name') . '> trans<' . synIDattr(synID(line('.'),col('.'),0),'name') . '> lo<' . synIDattr(synIDtrans(synID(line('.'),col('.'),1)),'name') . '>'
augroup MyAutocmd
au!
au BufNewFile,BufReadPost  vim   let b:commentSymbol='\"'
au BufNewFile,BufReadPost  *.c,*.h,*.cpp,*.d,*.java,*.js   let b:commentSymbol='//'
au BufWritePost * if getline(1) =~ "^#!" | exe "silent !chmod +x %" | endif
augroup END
" 現在行をコメントトグル
" 選択中はその範囲を
function! ToggleCommentSelection() range
if exists('b:commentSymbol')
let cs = b:commentSymbol
else
let cs = "#"
endif
let cl = a:firstline
while (cl <= a:lastline)
let line = getline(cl)
if strpart(line, match(line, "[^ \t]"), strlen(cs)) == cs
let i = 0
while (i < strlen(cs))
normal! ^x
let i = i + 1
endwhile
else
execute "normal! I" . cs
endif
normal! j
let cl = cl + 1
endwhile
endfunction

と、同時に、.zshrc を vim の第一引数を screen の window 名にするように書き換えた。

  1. トップ
  2. vim
  3. vim に乗り換えるよ!

そういえばうちではならないなって思ったけど overflowの解釈、間違ってませんか? - WebStudio を見てから text-indent でふっとばすときは overflow: hidden; を入れるようにしていたからだった。

変な挙動の CSS に対して「どうしてそうなるのか」も考えないとなぁ。でもさ、今日思ったけど、IE さんは「どうしてそうなるのか」とか考えてやっても、無駄なのよね。

  1. トップ
  2. css
  3. Firefox で text-indent: (ry; がガーってなるやつ
  1. トップ
  2. web
  3. Firefox で text-indent: (ry; がガーってなるやつ

ブラウザ間のアレなんだから、あんまり CSS 書くこと自体を面倒くさいことにしないほうがいいよね、って思うんだ。


ところで自分が CSS を書くときに気をつけていることを書くよ!

  • 必ずルールをインデントする (TAB インデント)
  • セレクタを複数書く場合は最後以外改行する
  • 規則のあとには必ずセミコロンを入れる (最後も)
  • 最後のルールのあとも改行する
  • 宣言ブロック間はホワイトラインを入れる
  • border, border-style, border-color, border-width 以外の border 系プロパティを極力使わない
  • font プロパティを使わない。
  • list-style 以外の list 系プロパティを極力使わない
  • margin, padding 以外の margin, padding 系プロパティを極力使わない
  • background 以外の background 系プロパティを極力使わない
  • 宣言ブロックは基本的に HTML の構造順に書く
  • 構造に関係ないやつ (ID 選択子を含まないもの) は上のほうに書く
  • インライン要素 (span, a), ブロック要素 (p, ol), どっちでも要素 (ins, del), 置き換え要素 (img, input) の順に書く (しかしそんなに厳密に考えない)
  • ID 指定の場合、下位の要素に ID が指定されていても、上位 ID をあまり省略しない (CSS 読むだけでも、HTML 構造が少しわかるように書く)
  • 以下適当ですが、display, position, float は宣言ブロック中で上のほうに書くとか、background と color は近くに書くとか (しかしあまり気にしない)
  • ルールと書いたり規則と書いたり安定しないけど気にしない

「極力使わない」というのは、どうしてもカスケーディングを維持したいときだけ使う。

* {
margin: 0;
padding: 0;
font-size: 100%;
font-weight: normal;
font-style: normal;
color: inherit;
background: transparent;
border: none;
}
a:link {
color: #00f;
text-decoration: underline;
}
a:visited {
color: #660;
text-decoration: underline;
}
a:hover ,
a:active {
color: #00f;
text-decoration: none;
}
p {
margin: 0.5em 1em;
}
ul {
padding: 0 0 0 1em;
}
ol {
padding: 0 0 0 1.5em;
}
del,
ins {
background: #efefef;
border: 1px solid #ccc;
}
input,
textarea {
background: #efefef;
border-style: solid;
border-color: #060;
border-width: 0.2em 0.5em;
}
/* ここから構造順 */
body {
line-height: 1.66;
background: #1f2f16 url("/img/left.png") repeat-y 7% 0;
color: #fff;
margin: 0 0 0 7%;
padding: 0 7% 0 50px;
}
#whole {
background: #fff url("/img/right.png") repeat-y right top;
color: #000;
padding: 20px 55px 0 0;
}
#top a {
display: block;
background: url("/img/logo.png") no-repeat left top;
width: 500px;
height: 100px;
margin: 0 0 0 20px;
text-indent: -10000px;
overflow: hidden;
}
#navigation {
}
#navigation ul li {
display: inline;
padding: 0 0.5em;
border-style: solid;
border-color: #ccc;
border-width: 0 0 0 1px;
}
#navigation #search-form {
position: absolute;
top: 0;
right: 7%;
margin: 1em;
}
#content {
padding: 1em;
}
#content h2 {
font-size: 120%;
padding: 1em;
background: #ccc;
}
#footer {
color: #ccc;
background: #000;
}
  1. トップ
  2. css
  3. CSS で面倒くさいのは