CRON って cron.hourly とかを run-parts で実行するけれど、なんだか実行されている気配のないスクリプトがあって悩んだ。
結局ファイル名が悪かったみたいだ。log.sh という名前にしていたのだけれど、これだとだめらしい。httplog に改名したらちゃんと run-parts --list でリストされるようになった。
man 見てもどうもわからなくてわかるまで時間がかかった。結局最後は試行錯誤っていう。
CRON って cron.hourly とかを run-parts で実行するけれど、なんだか実行されている気配のないスクリプトがあって悩んだ。
結局ファイル名が悪かったみたいだ。log.sh という名前にしていたのだけれど、これだとだめらしい。httplog に改名したらちゃんと run-parts --list でリストされるようになった。
man 見てもどうもわからなくてわかるまで時間がかかった。結局最後は試行錯誤っていう。
「気をつけていること」って書いたけど、実際にはほとんど無意識ぐらいで「こうしたほうがいいな」って思いながらやっているのを書き出しただけで、あの規則ありきで書いているわけじゃないのです。
結果的にああなったぐらいのもので、わりとどうでもいいものです。書き出したのは、書き出すことで、本当にそれでいいのかっていうのを明確にしたり、曖昧なところを「曖昧なところ」として認識するためで、守るために書いたわけじゃないです。
例えばあれだと一つのファイルのまとめて書くことを前提にしてるから、ファイルを分けたときどうするかっていうのは全然わかってない。普通に考えたら、ある ID セレクタ以下を一括して分離するだろうけど、実際そうやって書いたことはないからなんともいえない。手探りいんぐ。
Emacs の設定に嫌気がさしたので (ネガティブドリブン) 、vim に乗り換えるよ!
ubuntu 6.06 LTS の vim は VIM - Vi IMproved 6.4
。css.vim のロードがいつも失敗する。
とりあえず覚えた (覚えてた) コマンド列挙
現時点での .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 名にするように書き換えた。
そういえばうちではならないなって思ったけど overflowの解釈、間違ってませんか? - WebStudio を見てから text-indent でふっとばすときは overflow: hidden; を入れるようにしていたからだった。
変な挙動の CSS に対して「どうしてそうなるのか」も考えないとなぁ。でもさ、今日思ったけど、IE さんは「どうしてそうなるのか」とか考えてやっても、無駄なのよね。
ブラウザ間のアレなんだから、あんまり CSS 書くこと自体を面倒くさいことにしないほうがいいよね、って思うんだ。
ところで自分が CSS を書くときに気をつけていることを書くよ!
「極力使わない」というのは、どうしてもカスケーディングを維持したいときだけ使う。
* {
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;
}
全部のマシンの hosts を編集とかテラダサスwwwぷぷpとか言われたので (脳内変換です)、DNS サーバ立てて一元管理することにした。
サーバは ubuntu 6.06 LTS。普通に BIND を使うことにした。
BIND のインストール。sudo apt-get install bind。終了
ubuntu (というか Debian) は設定ファイルが分かれていて、基本的に named.conf は編集しないみたい? とりあえず自分の場合は named.conf.options と named.conf.local だけ編集した。
named.conf.options
// 最初に
// アクセスコントロールリストの設定
acl lan {
127.0.0.1;
192.168.0.0/16;
};
// options セクション内に
// 内側からのだけクエリに答える
allow-query {
lan;
};
// キャッシュサーバを使う
// そして内側に限定
recursion yes;
allow-recursion {
lan;
};
// スレーブとかない
allow-transfer {
none;
};
// 自分に登録されてないとき丸投げする先
// ルータが DNS Proxy になっているのでルータの IP だけ
forwarders {
192.168.0.1;
}; named.conf.local
// 正引き
zone "lab.lowreal.net" {
type master;
file "/etc/bind/db.lab.lowreal.net";
};
// 逆引き
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.0";
}; 正引き DB (db.lab.lowreal.net)
$TTL 1d @ IN SOA lab.lowreal.net. root.lab.lowreal.net. ( 2006070901 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.lab.lowreal.net. IN MX 10 lab.lowreal.net. @ IN A 192.168.0.250 ns IN A 192.168.0.250 charlotte IN A 192.168.0.250 nina IN A 192.168.0.251 trac IN CNAME charlotte svn IN CNAME charlotte
逆引き DB (db.192.168.0)
$TTL 1d @ SOA lab.lowreal.net root.lab.lowreal.net. ( 2006070901 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.lab.lowreal.net. IN PTR lab.lowreal.net. IN A 255.255.255.0 1 IN PTR gateway.lab.lowreal.net. 250 IN PTR lab.lowreal.net.
これで再起動 (sudo /etc/init.d/bind restart) して一通り DNS ひけるようになった。
しかしながら、LAN 内のホストをフルネーム (nina.lab.lowreal.net) で呼ぶのがだるいので、各 PC に DNS サフィックスを設定する。
Linux の場合は /etc/resolv.conf に以下のように書けばいいらしい。
search lab.lowreal.net nameserver 127.0.0.1
Windows の場合は該当インターフェイスのプロパティから、TCP/IP のプロパティを開いて、詳細設定、DNS タブにある「以下の DNS サフィックスを順に追加する」を選択、lab.lowreal.net を追加してあげればいいっぽい。
C:\>nslookup Default Server: lab.lowreal.net Address: 192.168.0.250 > nina Server: lab.lowreal.net Address: 192.168.0.250 Name: nina.lab.lowreal.net Address: 192.168.0.251
なんかキモイことになったので、ワイルドカードをやめた。今日もまた IRC でひたすらお世話になりっぱなしです。
あんまり時をかける系の話ではなかった (かけてるけど)。パラドックスとかは出てこない。ホントにバタフライエフェクトについてだけ、みたいな。まぁバタフライエフェクトが起こるならパラドックスは起こらないものなんだろう? いやどうだろう。頭回んない。いつも回ってない。
しかしヒロインがあんまり好きじゃなくて入り込みにくい。
ネタバレ? も含めていろいろ考えたこと
後半のノートがなくて、頭がイカれているとされている部分の尺がもっと長くてもよかったかなぁって個人的に思った。すごく急に過ぎ去ってしまった。もっと父親との対比がほしかった。
エンディングシーンがもろ「世界ノ全テ」と一緒でウケた。この映画もどっちかといえば記憶喪失系だもんなぁ。そんなあり気なエンディングだけど、ああいう終わり方は好き。でもやっぱイカれた人間で病院エンディングも欲しかった (欲しかった?)
ノート・日記帳で何かを思い出したけど、何だか忘れてしまった。あ、思い出した。クロスチャンネルだ。「何十冊ものノート」属性
そういえば、キャストがすごい多いなぁって思った。一つの軸にしか登場しないキャストとか。映画ってこんなもんだっけ。ぼくあたまわるいからキャストは4人ぐらいまでしか覚えられない。
一回見ただけだといろいろわからないところがあって何ともいえない。手足がないときの母親のセリフの意味とか、親父のセリフの意味とか。結局一週目の記憶喪失部分はどう考えればいいのか (一週目を基本に埋めていく? だとするとどっちが先なの的パラドックス考えるハメになるけど、それについての言及はなかった気がする)
なんか見たのは劇場版らしい。だめじゃん。また今度どうにかしよう。
実験サーバの http ログをとっていなかったのでとるようにした。
ServerRoot /srv/www な状態で、とりたいホストの VirtualHost 以下に CustomLog {domain-name}/log/access.log combined を追記
logrotated の設定 (/etc/logrotate.d/apache2) を以下のように変更
/srv/www/*/log/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
EXT=`date +%Y%m%d`
for f in $1;
do mv $f.1 $f.$EXT;
done
if [ -f /var/run/apache2.pid ]; then
/etc/init.d/apache2 restart > /dev/null
fi
endscript
}
これであってるのかよくわからない。ローテーションってどうやってテストすればいいんだろ
あとは visitors を入れて CRON させることにした。
日付にするには単に dateext って書けばいいよ。って drry さんに教えてもらった。ので、EXT..done まで消して dateext を加えた。
logrotate を試したいときは logrotate -d /etc/logrotate.d/apache2 とかすればいいらしい。
ルータに syslog を飛ばしてくれる設定があるので有効にする。
ubuntu の syslog (sysklogd) は 1.4.1。リモート受信はデフォルトで無効らしい。/etc/init.d/syslogd の SYSLOGD="-u syslog" を SYSLOGD="-r -u syslog" にして restart。
めでたく syslog が Discard packet 云々だらけになりました。