88171.net


Blosxomプラグイン無効化プラグイン

プラグインを無効化するプラグイン。

なんのこっちゃという話なので具体例を挙げると、最近gsitemapプラグインを使ってXML形式のサイトマップを吐けるようにした。 全エントリぶん吐き出す必要性は感じないので直近100に絞ってみたものの、それでも体感的にはなかなか遅い。 NYTProfでプロファイルを取ってみると、トータルが520msくらい。 このうち、サイトマップ用のflavourには不要な Markdown::story() を100回呼ぶのに300msもかかっていた。

この300msを削るためにこのプラグインを書いた。 コールバックを抑制するだけなので、対象のプラグインのロード時間までは削れないことに注意。

識者の皆様はお気づきのとおり、Markdown::start() でflavourを見た方がコスト安では?という話ではある。 オリジナルに一行も手を加えたくないというMarkdown原理主義者の足掻きでしかない。


自分向けGentoo Cheat Sheet

本家: https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet

パッケージ管理

パッケージリポジトリを更新

# emerge --sync
※現在の実装では emaint --auto sync と等価

パッケージを検索

$ emerge --search <pattern>

パッケージをインストール

# emerge --ask <ebuild>

@worldをアップデート

# emerge --ask --update --deep --changed-use @world

@worldからの依存関係ツリーに存在しないパッケージを削除

# emerge --ask --depclean

パッケージをアンインストール

# emerge --deselect <ebuild>
# emerge --ask --depclean

インストール済みパッケージの一覧を表示

$ equery list \*

特定のパスもしくはファイル名がどのパッケージに含まれているかを表示

$ equery belongs --early-out <path>

パッケージに含まれるパスの一覧を表示

$ equery files --tree <ebuild>

パッケージのUSEフラグを表示

$ equery uses <ebuild>

パッケージデフォルトの設定ファイルをマージ (diff/mergeツールを設定 しておくのがオススメ)

# dispatch-conf

キャッシュ(不要なdistfiles, binary packages)を削除

# eclean --deep distfiles
# eclean --deep packages

カーネル管理(genkernelを使用)

インストール済みカーネルソースの一覧を表示

$ eselect kernel list

指定したカーネルソースを /usr/src/linux のリンク先に設定 (sys-kernel/gentoo-sourcesのUSEフラグに symlink を設定するとアップデート時に自動で)

# eselect kernel set <n>

カーネルおよびモジュール一式をコンパイルしインストール (コンフィグは起動しているカーネルのものを使用)

# genkernel --kernel-config=/proc/config.gz all

GRUB2の設定を更新 (genkernelに --bootloader=grub2 を指定するとインストール時に自動で)

# grub-mkconfig -o /boot/grub/grub.cfg

最新nバージョンを除いた古いカーネルを削除

# eclean-kernel --ask -n <n>

サービス管理

defaultランレベルにサービスを追加

# rc-update add <service>

サービスの起動・停止・状態表示

# rc-service <service> {start|stop|status}

サービスの一覧を表示

# rc-config list

defaultランレベルからサービスを削除

# rc-update delete <service>

セキュリティ関連

セキュリティアドバイザリ(GLSA)に該当するインストール済みパッケージを表示

$ glsa-check --test affected

サーバ更新に伴ってやめたこと

挙げてみたら結構あった。

Zone Apexをあちこちで使うのをやめた

以前はMUAの設定にまでZone Apexを使っていたが、サーバ切り替えの際に面倒だったので可能な限りホスト名を使うようにした。 ホスト名でのTLS証明書が新たに必要になったが、そこはLet's Encryptのお世話に。

Google Authenticatorをやめた

二要素認証でリモートログインできるよう、Google AuthenticatorのPAMモジュールを入れていた。 いざという時に普段使いでない(秘密鍵を持っていない)端末からでもログインできるように、くらいのつもりだったが実際に役に立ったことはないし、今ではスマホにすら専用の秘密鍵を入れているので本当にメリットがなくなった。

Fail2banをやめた

SSHやWebへのアタックのログが目障りだったので入れていたが、ログの減量を除けば、悪者を釣り上げて悦に入る以上の実効性はなかったのでやめた。

SSHをwell-knownでないポートで運用するのをやめた

アタック避けに7022/tcpで運用していたが、捕捉されるまでの時間稼ぎくらいにしかならないことがわかったのでやめた。

Muninをやめた

直近1年間の稼働状況がグラフ化されているというのは便利だったし、ついでに監視にも使っていたが、正直めったに見なかったし必要性も薄かったのでやめた。 代わりにsysstatとMonitを使っているが、十分だと思う。

Gitwebをやめた

サーバ上のリポジトリの一部をWebで公開していたが、大したものはないのでやめた。 ところどころリンク切れを起こしているはずだけど、それは追って考える。

ClamAVをやめた

実はかなり前のことだけども、メール受信時にClamAVを通すのをやめていた。 物理メモリを固定で数百MB食うわりに、いろいろ試しても昨今のマルウェア相手では満足な検出率が得られず、コスパが悪かった。

パッケージの更新通知をやめた

Debianではapticronでパッケージ更新通知のメールを投げていた。 Gentooでもたとえばglsa-checkを使って同じような仕組みは作れるが、日頃のアップデート作業を習慣づけるために敢えてやめた。 GLSAは別途、フィードを購読している。