そういえばうちではならないなって思ったけど 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 で面倒くさいのは

全部のマシンの 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 でひたすらお世話になりっぱなしです。

  1. トップ
  2. net
  3. LAN に DNS サーバ立てる

あんまり時をかける系の話ではなかった (かけてるけど)。パラドックスとかは出てこない。ホントにバタフライエフェクトについてだけ、みたいな。まぁバタフライエフェクトが起こるならパラドックスは起こらないものなんだろう? いやどうだろう。頭回んない。いつも回ってない。

しかしヒロインがあんまり好きじゃなくて入り込みにくい。


ネタバレ? も含めていろいろ考えたこと

後半のノートがなくて、頭がイカれているとされている部分の尺がもっと長くてもよかったかなぁって個人的に思った。すごく急に過ぎ去ってしまった。もっと父親との対比がほしかった。

エンディングシーンがもろ「世界ノ全テ」と一緒でウケた。この映画もどっちかといえば記憶喪失系だもんなぁ。そんなあり気なエンディングだけど、ああいう終わり方は好き。でもやっぱイカれた人間で病院エンディングも欲しかった (欲しかった?)

ノート・日記帳で何かを思い出したけど、何だか忘れてしまった。あ、思い出した。クロスチャンネルだ。「何十冊ものノート」属性

そういえば、キャストがすごい多いなぁって思った。一つの軸にしか登場しないキャストとか。映画ってこんなもんだっけ。ぼくあたまわるいからキャストは4人ぐらいまでしか覚えられない。


一回見ただけだといろいろわからないところがあって何ともいえない。手足がないときの母親のセリフの意味とか、親父のセリフの意味とか。結局一週目の記憶喪失部分はどう考えればいいのか (一週目を基本に埋めていく? だとするとどっちが先なの的パラドックス考えるハメになるけど、それについての言及はなかった気がする)

なんか見たのは劇場版らしい。だめじゃん。また今度どうにかしよう。

  1. トップ
  2. movie
  3. バタフライ・エフェクト

実験サーバの 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 とかすればいいらしい。

  1. トップ
  2. net
  3. Apache2 ログ

ルータに syslog を飛ばしてくれる設定があるので有効にする。

ubuntu の syslog (sysklogd) は 1.4.1。リモート受信はデフォルトで無効らしい。/etc/init.d/syslogdSYSLOGD="-u syslog"SYSLOGD="-r -u syslog" にして restart。

めでたく syslog が Discard packet 云々だらけになりました。

  1. トップ
  2. net
  3. ルータの syslog を転送する

本来いろいろ何かを覚えたりするのって楽しいことなんだよなぁ。理解できなかった部分を少しずつ溶かしていく行為って、氷に圧力かけてその部分を早く溶かしたりするのと同じぐらい楽しい。例えが微妙すぎる。


学校って、ほんとに駄目な場所だと、ほんとに思う。「教えられること」って殆ど楽しくない。「教えられてしまったこと」は後で楽しいものになりにくい。普通、学校って、その「学校」っていう場所は選べても、教えてくれる人は選べない。間接的には選べるからいいっていえばいいんだろうけど、そのために使う労を、そのまま違う方向に使えたらいいのにと思う。まぁでも、本当に凄い人は、その程度の労をなんとも思わないのだから、もういいや。


コンピュータ関連のことって、殆どは独学可能なことだと思う。みんなそれぞれが、作ったこと、やっていることを公開してる。オープンソースプロジェクトは沢山あるし、ソース読むだけで、コーディング方法が学べる。パクったってライセンスを守っていれば誰も文句を言わないし、むしろよい動きと見てくれる。

プログラムの書き方の方言って言語ごとにかなり沢山あったりするけど、やっぱりデファクトスタンダード的な書き方はあるし、そういうのが往々にして「美しい」コードになる。でもそれって「流行」が混ざっていたりして、一定しない。例えば Perl の「どのモジュールを使うのがいいか」っていう感じ。これからはコレダっていう何かがどんどんでてくる感じ (DBIx::Class, Class::DBI とか)。

そういう流れの早さについていくのも、今ではその気になればそんなに難しいことじゃない。SBS なんかのホットエントリーをいくつか読んで、流行っているアプリケーションのソースを読んだらいい。今だったら Plagger とか、Catalyst 関連の動きを追っていると流れが見えてくる。(殆どソース読んでないけど)

で、そういう流れの早さが顕著だから、教科書みたいなものが作りにくい。絶対的に信用に値する分かりやすい教科書がなかなかないから、教員の言ってることがいまいち信用できない。結局自分で調べなおさないと、間違いを掴む可能性が割りと高い。教科書に載っているコードが今のトレンドにあっているか全然わからない。

それに、例えばウェブ技術はすごい早さで展開しているのに、教員はいろいろ忙しいからそういうことに気付けない。ついでにだいたい学校教員って「安定」しているから、そういう不安定な先端を走ることに興味が薄いみたいな感じがする。ステレオタイプかな。

考えれば考えるほど、学校に行っている時間が無駄に思える。しかし別の視点から考えると、学校に行くこともまぁ必要なのかもなぁとも思うし、なんともいえない。


「そういう」ばっかりだなぁ。日本語書けるようになりたい。

  1. トップ
  2. life
  3. 無題ドキュメント1
  1. トップ
  2. thinking
  3. 無題ドキュメント1

192.168.0.1/24 なネットワークを分けるには?

192.168.0.240/30 とかいうサブネットを作って、親ルータのルーティングテーブルに追加してあげればいいのかな。子ルータの IP が親ネットワークで 192.168.0.2 だったら、IP/サブネット: 192.168.0.240/30, ゲートウェイ: 192.168.0.2 メトリクス: 1

この場合子ルータの DHCP サーバーは動かせないけど、子ルータの下にぶら下がるホストの自動設定は親ルータの DHCP サーバがうまくふってくれるんだろうか? 無理だよなぁ。わからん。


あれ違うなぁ、なんか間違ってる。DHCP サーバーは起動できるのか? むしろ「サブネット分ける」の意味がわかってないなぁ。


サブネットマスクを延長して、既存ネットワークを分割することが「サブネット分ける」でいいのかなぁ。つまり1ビット延長して /25 なサブネットマスクにしたら、半分にセグメントが分かれて、みたいなことでいいんだろうか。

神のささやきをもらったよ!!

  • 親ルータ: 192.168.0.1/24
  • 子ルータ WAN: 192.168.0.2/24, LAN: 192.168.1.1/24
  • 親ルータの静的ルーティングを 192.168.1.1/24 -> 192.168.0.2 に
  • 子ルータの静的ルーティングを 192.168.0.1/24 -> 192.168.0.1 に (子から親直下のホストが見えるように)デフォルトゲートウェイ設定すればおk
  • DHCP 鯖は子ルータで立てる (見える位置ならどこでもいい?)

NAT をちゃんと理解してないなぁ。NAT はグローバル IP をプライベートに変換するだけで、NAPT がポートを空けるやつらしい。

ローカルルータ動作の場合は NAT を切らないといけない。子ルータの NAT が有効な場合、子ルータは親ネットワークに対して一個のホストとして認識されるので、親ネットワークから、子ルータ以下のホストにはアクセスできない。ついでに親ルータに静的ルーティングを追加する必要はなくなる。見方を変えるとそのまま普通の WAN-LAN の関係。ってことを教えてもらった。

  1. トップ
  2. net
  3. サブネット分ける