本職じゃないけどウェブページ作る

いつのまにか HTML も 5 になって、いまや 5.2 らしい。3.X の時代は自分と同じ ID は世界に2人しかいなかったが、いまや何人いるかわからない。

本職じゃないので深入りしない程度に HTML 5 に対応してみる。

まずはヘッダー。

いつのまにか header とか main とか footer とかが新設されている。スクロールするとヘッダーのロゴが変化する(小さくなる)というビジュアル効果にトライしてみる。

基本は CSS で maxheight を設定すること。2つの css の記述をつくればよい。

#header.small img{
      max-height:50px;
      display:block;
}

#header img{
       max-height:40px;
       display:block;
}

こんな感じであとは header.small と header をタイミングよく入れ替えればよい。それは JavaScript で行う。JQuery も必要。jquery.min.js を読み込んでおくこと。

(function($) {
    $(function() {
        var $header = $('#header');
        $(window).scroll(function() {
            if ($(window).scrollTop() > 100) {
                $header.addClass('small');
            } else {
                $header.removeClass('small');
            }
        });
    });
})(jQuery);

これだけだとアニメーションしない。

#header img,
#header.small img {
    transition: all 0.3s ease;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
}

こんな感じでいろんなブラウザに対応しておく(らしいぞ)。これでびーよんと伸びたり縮んだりする Logo ができる。font に対応したいなら、

#header.small .font_logo {
    font-size: 24px;
}

みたいな感じ?

FreeBSD 11.1

$ pkg install netqmail
$ pkg install ucspi-tcp
$ pkg install checkpassword

qmail をインストール。ついでに内向きの local_unbound も有効にする。bind911 とは共存しない。ので外と内で2台 VM を立てることにした。いままで view で区別してきたんだけどね。

local_unbound の設定は一苦労だ。プロバイダから貰う DNS のアドレスは中継してくれないようで、google の 8.8.8.8 とか 8.8.4.4 を使うとうまくいくが、いくらなんでもみんなこれだとこまるであろう。なのでプロバイダのウェブを探して中継してくれる IP アドレスを探し出した。

ucspi-tcp はメンテナーがいないそうだ。この環境からは脱出した方がいいのかもしれない。

そして Hyper-V

なんかしらんがサーバが全滅したみたいなので Hyper-V の上に再構築。Windows Server 2018 R2 っていうやつかな?

何故かデフォルトで Hyper-V はオンになっていないので有効化する。
そして、ubutntu 18.04 をインストール。Hyper-V の新しい VM というやつ(BIOS が使えなくて UEFI で 64bit のみのバージョン)をつかってみる。どっかのサイトを見ると、secure boot をオフにしないといけないとかいてあった。とおもったら、うそだった。Windows の template がだめなだけで、Microsoft UEFI Certificate Authority にすればよかった。(Windows Server の場合。Windows 10 では違う可能性もある)

さっそく ubuntu の install で secure boot で引っかかる。オフにするとちゃんと grub が立ち上がる。そしてインストール。DHCP が立ち上がる。

ubuntu 18.04 はいつのまにか /etc/network/interfaces じゃなくなった。/etc/netplan の下の 50-cloud-init.yaml になった。なんだよ。悩んでしまったじゃないか。

これはほっていおいて postfix と dovecon の imappop3 をインストール。設定して再起動。

service dovecon stop(あるいは start)

postfix はなぜか /etc/init.d で stop/start 。(たぶん違うけどわからなかった)。Maildir は mkdir でつくって、chmod -R 700 にすればいいみたい。sendmail でメール送信して、new に入ることを確認。そして、windowsthunderbirdimap が動くところまで確認した。dovecon は fetchmail の設定をしなかったけど大丈夫なのだろうか?

FreeBSD 11.1 久々にインストール

まず dig も nslookup もない。bind もない sudo もない。内部用の DNS は unbound(だっけ?
)に変わったのか?

とりあえず、sudo インストール

http://www.gadgets-today.net/?p=4314

pkg が効かない。resolv.conf 書いてなかった。IP アドレス追加。resolv.conf に nameserver のキーワード書いてなかった。IP アドレスの追加だけじゃダメだった。

pkg install sudo

インストールできたようだ。ついでに vim-console もインストール。tiny とどう違うのかはなぞ。

dig は知らない間に drill になっていた。ずーと、nslookup つかってたけどね。

dns/bind99 をインストール。その過程で python2.7 が入る。最近は bind じゃないのかも。とおもったら、案の定 deprecated で dns/bind911 をすすめられた。ので bind911 をインストール。911 というところが、わざわざね。という感じ。どうやら dns/bind99 はインストールされずに bind911 をお勧めするメッセージだけが出た模様。(pkg info でみても bind99 がなかったから)

インストールすると、今度はそしたら、attention だって。

/usr/local/sbin/rndc-confgen は既にインストールされていたので(いつ?)、attention の指示通りに rndc-confge を実行する。

rndc-confgen -a

正しいのかどうかは不明だが、/usr/local/etc/namedb/rndc.key ができたらしい。MD5 だよ。ちがう。hmac-md5 だった。
どうやら jail でセキュアーな仮ホストを使ってそこで bind を動かして rndc でコントロールする仕組みらしい。だから rndc が必須。そしてランダムキーを rndc-confgen で作る模様。いままでつかってなかった。

master の書き方は今まで通りのようなのでコピペすればよろしい。いままで内向きの DNS もここに書いていて、反応が妙にのろかったが、これで unbound で別々に管理できる(はず)。

PYNQ を久しぶりに

PYNQ を久しぶりに使ったら login 出来なくなってしまった。
https://groups.google.com/forum/#!topic/pynq_project/l3bKT9VSAmc
によると、ブラウザー(私の場合は firefox)によっては時刻があまりに違い過ぎると表示しなくなるみたい。なので、サーバ側、つまりPYNQ の時刻をちゃんと今に合わせればよい。
も~。
これで数時間無駄にした。

ついでに cygwin と noACL

もう一つ書くと、noacl とするということは MS-DOS のように細かい ACL 制御をしないという選択になることに注意。Windows の複雑な(覚えたくない)ACL の世界を制御しようと思ったら、なんでもかんでも noacl にしてはいけない。特にサーバー関連では。
本来なら cygwin から Windows の世界にコピーしたら、ACL ありだと、自分以外はみれなくなっている。
例えばこんな感じなっているわけだ。

image1280x400_rgba.raw NULL SID:(DENY)(Rc,S,X,DC)
                       <マシン名>\<ユーザ名>:(R,W,D,WDAC,WO)
                       BUILTIN\Administrators:(DENY)(S,X)
                       NT AUTHORITY\SYSTEM:(DENY)(S,X)
                       <マシン名>\なし:(R)
                       BUILTIN\Administrators:(RX,W)
                       NT AUTHORITY\SYSTEM:(RX,W)
                       Everyone:(R)

NULL SID と自分と"なし"(これは cygwin の group にある"なし"だった)が、くっつくわけだ。
見方が今一つ分からないが、挙動を見ると、NULL SID(Windows の標準で設定されているグループ員なしのグループ)で実行などを DENY(拒否?) しているように見える。(でも cmd から実行できてしまった、、、)
順序が有効だと思ったのだが、、、これは Rc,S,X,DC だけが有効という意味なのか?
その後自分自身は R W D など(他は何だかわからない)が許されている。
この状態で、アプリケーションからファイルを読もうとすると、読めなかったりするわけだ。
だから、サーバ関連ではちゃんと ACL つきでコピーして、ひとつひとつ丁寧に設定して必要がある。手抜きしちゃだめよ。

Windows ACL と cygwin のコピー

釈然としないが、cygwin の世界は cygwin で閉じなければだめという話。 cygwin では Windows の世界を”のぞき見”するために /cygdriver なるものがある。便利だからと言ってこれに頼ってはいけないことがわかってきた。たとえば、d: ドライブに(MS-DOS!!) なにかディスクを追加してそこを Work などにしている場合。
自分の場合は、Windows の特定のツールがディレクトリの文字列制限に引っかかるのとデータを別にするために c: ではなく d: を使っている。そして、ちょこちょこ cygwin からコピーしていた。これだめ。
cygwin の世界から Windows の世界にコピーをしようとすると、WindowsACL を作成しようとする。そして、Windows から見ると妙な ACL になってしまい、特定の Windows アプリケーションからは見えなくなってしまうことがある。アプリケーションがそのような事にも対応していればいいのかもしれないが、うまく対応していないと、Windows からはみえているのにアプリケーションからは見えない(読めない)みたいなことが起こる。
どっかの blog にかいてあったように、最初は /cygdrive すべてを noacl にすればいいのかとおもってやってみていた。そうすると、挙動がおかしい。今度は cygwin から見れないファイルが出来てしまう。
cygwin の世界に Windows のフォルダを取り入れるのには mount を使う。一時的なら mount コマンド、恒常的なら /etc/fstab に書いておく。その時 noacl をつけておくと、 ACL は追加しない。/cygdrive 全体を noacl にするといろんなところの影響が大きすぎるのでお勧めしない。/etc/fstab はこんな感じ。

d:/Works /home/Works ntfs binary,noacl,user 0 0

こんな感じ。mount -m で表示したのをそのままコピペしてもよい。

mount -o noacl,user 'd:/Works' /home/Works

mount -m
D:/Works /home/Works ntfs binary,noacl,user 0 0
none /cygdrive cygdrive binary,posix=0,user 0 0

このように豆に mount することで、git clone 時の ACL の問題などが回避できる。