最近の変更サイトマップ

EmacsのCompletionsバッファを新規ウィンドウではなく既存ウィンドウに表示させる

通常、EmacsでTAB補完の時とかに表示されるCompletionsバッファは、フレーム1)下部を分割した一時的なウィンドウ2)として表示される。言葉じゃわかりにくいので、スクショを張っとくと↓こんな感じね。 こっちは嫌(Completionsウィンドウが独立に開く)

自分のEmacsの使い方は垂直分割した2つのウィンドウ表示が基本で、Completionsバッファは非アクティブな方のウィンドウに出て欲しい。その方が補完候補の一覧性が圧倒的だし、ウィンドウがパカパカしないのがいい。スクショを張(ry こっちがいい(Completionsバッファが非アクティブなウィンドウに表示される)

ここの回答に載ってるelispを参考に、ウィンドウが1つの時はウィンドウ幅に応じて分割方向を変えるようにしてみた。

(defun display-on-side (buffer &optional not-this-window frame)
  (let* ((window (or (minibuffer-selected-window)
                     (selected-window)))
         (display-buffer-function nil)
         (pop-up-windows nil))
    (with-selected-window (or window (error "display-on-side"))
      (when (one-window-p t)
        (if (> (window-pixel-width) (window-pixel-height))
            (split-window-horizontally)
          (split-window-vertically))
        )
      (display-buffer buffer not-this-window frame))))
(setq display-buffer-function 'display-on-side)

水平2分割した状態で使うと、非アクティブなウィンドウの方がCompletions表示時に勝手にリサイズされる問題があったりする…。自分は水平分割使わないので放置してます、すいません。えらいひと直して教えてください。

参考サイト

1) Emacs用語としてのフレーム
2) Emacs用語としてのウィンドウ

トロピコ5のトロフィー「ワーストホテル」「冷徹な刺客」の取得方法

トロピコ5のDLC「スパイ大作戦」に含まれるトロフィー、「ワーストホテル」と「冷徹な刺客」の取得に苦労したのでメモ。

ワーストホテル

取得条件:地下牢と刑務所に20人を収監した

  1. サンドボックスで新規プレイ。資金無制限、現代、初期人口50人で。
  2. 警察署を3つ即座に建設し、外国人作業者を全員雇用。
  3. 刑務所を2つ即座に建設し、外国人作業者を全員雇用。
  4. 住人リストで片っ端から住人を逮捕する。
  5. しばらくするとトロフィーゲット

条件の20人は延べ人数ではなく、収監中の人数である。

「逮捕」を指示すると、警察官が対象者を探し刑務所/地下牢獄に連行して初めて収監扱いになる。したがって、街の規模が大きくなると捜索に時間がかかり、その間に囚人が出所してしまうため、いつまで経っても収監人数が増えない。

冷徹な刺客

取得条件:無人機で問題のある住民を20人殺害した

  1. 無人機基地を作って普通にプレイする
  2. 気長に待つ

問題のある住人を量産しようとハチャメチャな政治をしても、人口が増えない→問題のある住人が増えない→無人機基地の作業員すらまかなえない、という状況に陥り全然SATUGAIしてくれない。なので普通にプレイした方がよさげ。サンドボックスで政治的難易度を最高、無人機基地の予算と作業員を最大にしておけば気持ち早いかも?(根拠無し)。

自分の場合、人口増えないループからの脱出込みで、ゲーム内26年経過で取得できた。

Windowsインストール時にdiskpartで手動でパーティションを作る方法

いつごろからは知らんが少なくともWindows 10では、大規模更新時に回復パーティションの容量が不足していると、新たな回復パーティションを作るという大変お行儀の悪いことをしてくれやがる。だもんで、最近は手動でパーティションを切るようにしてるのだが、毎度やり方を忘れるのでメモ。

diskpartの起動

Windowsインストーラのパーティション設定画面でShift+F10を押すとコマンドプロンプトが開く。そこでdiskpartに入る。

パーティションの設定

GPT/UEFIで必要なパーティションと容量は下表の通り。

MS推奨

種類 ファイルシステム 容量 備考
ESP FAT32 従来100MiB、4kセクタの場合260MiB
MSR - 16MiB
Windows NTFS 最低20GiB Windowsのインストール先
回復 NTFS 最低300MiB、推奨1GiB

オレオレ構成

種類 ファイルシステム 容量 備考
ESP FAT32 512MiB 根拠:ESPの容量は512MiB以上が推奨らしい
MSR - 128MiB Windows 7ではこの容量だったので踏襲。後から足りなくなるよりはマシかと。
回復 NTFS 3072MiB 推奨容量×2+念のため1GiB
Windows NTFS 20GiB〜 パーティションを拡大・縮小する可能性があるので最後に配置

diskpartで設定

ディスクや容量は適宜読み替えてくだしあ。

GPTで初期化

select disk 0
clean
convert gpt

MSRが勝手に作成される(ことがある)ので一旦削除

select partition 1
delete partition override

ESP

create partition efi size=512
format quick fs=fat32 label="System"
assign letter="S"

MSR

create partition msr size=128

回復

create partition primary size=3072
format quick fs=ntfs label="Recovery tools"
assign letter="R"
set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"
gpt attributes=0x8000000000000001

Windows

create partition primary
format quick fs=ntfs label="Windows"
assign letter="W"

list volume, list partitionで↓こんな感じになってればおk

パーティション情報のリロード

コマンドプロンプトをexitか右上のバッテンを押して終了後、パーティション設定ウィンドウの「最新の情報に更新」を押し、設定したパーティション情報を認識させる。

あとは通常通りWindowsをインストールする。

参考サイト

FreeBSD 10に入れたTomcat 7のタイムゾーン設定方法

何かの拍子に、Tomcat 7.0で動かしているサービスのタイムゾーンがUTCとして認識されるようになってしまった。マシンのRTCは昔からUTCで、OSのロケール≒タイムゾーンも以前からJSTで特に変更はしてないのだが…。

変わっちゃったもんは仕方ないんで、Tomcatのタイムゾーンを変更する方法を調べたところ、setenv.shでCATALINA_OPTS環境変数を弄ればいいらしい。setenv.shってどこにあんのよっていうと、/usr/local/apache-tomacat-7.0/bin/である。もっとも自分の環境(FreeBSD 10.3-RELEASE-p26/Tomcat 7.0.59)ではsetenv.shは無かったんだけど、startup.shを見るにsetenv.shがあれば読み込むように見えたので、新規で作ったら上手く行った。

setenv.shの中味は以下の通り。

export CATALINA_OPTS='-Duser.timezone=Asia/Tokyo'

あとはApacheとTomcatを再起動してやればおk。

FreeBSD 11で「warning: total configured swap (X pages) exceeds maximum recommended amount (Y pages).」と言われた時の対処法

「対処法」と言いつつ、FreeBSD 11.1-RELEASE-p4で試した限り、なぜか上手く行かないので対処法になってない。折角調べたので参考情報として残しておく…(´・ω…:.;::..

物理メモリ1.5GBのFreeBSD 11.1-RELEASE環境で、16GBのスワップを追加したら以下のメッセージが表示された。

warning: total configured swap (4194304 pages) exceeds maximum recommended amount (2994784 pages)
warning: increase kern.maxswzone or reduce amount of swap.

カーネルが扱えるサイズを超えるスワップを追加すると出るそうで。本事例だと、最大スワップサイズは2994784ページで、1ページ=4KiBなので約11.4GiBとなる。

この値はどこで決まるかと言えば、warningの2つ目で示されているkern.maxswzoneカーネルパラメータである。スワップ管理用メモリの最大バイト数を指定するパラメータで、11.1Rではスワップ約200MiBにつき1MiBが必要とのこと。特に指定しなければ、物理メモリの8倍のスワップを扱うのに十分な容量が確保される。

実際に確保された量は恐らくvm.swzoneパラメータの値。本事例では53904384バイトとなっており、計算するとwarning中の最大スワップサイズと概ね一致する。

というわけで、/boot/loader.confに次の一行を追加してみた。

kern.maxswzone="75464704"

値はまー適当。11.4GiBで53904384バイト必要なんだから、16GBなら1.4倍して一応4KiB単位に揃えた感じ。

これで再起動すればOK!

……のハズだったんだけど、なぜか値が反映されないの(´・ω・`)。kern.maxswzoneには反映されるんだけど、肝心のvm.swzoneが変わってない。警告も相変わらず出る。kern.maxswzoneは名前の通り最大値を制限するものであって、スワップの最大サイズは物理メモリの8倍という制限は超えられないって事なのかしら…?これ以上はソース見ないとわからんな。

参考サイト

start.txt · 最終更新: 2016-05-07 17:46 by decomo
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0