パイレーツ アサルト 攻略メモ
3つ星を取った時の方法など。
3つ星
- 3つ星の条件はお宝を1つも減らさないこと。
- 敵船を連続タッチしての取り返しは許容される。
武器配置
- 出現場所付近に投石器を4機前後配置する。
- 適切な配置場所がなくなった場合はアップグレードを行う。
- 投石器のアップグレードコストは50/50なので1機ずつ最大化したほうが良い(?)
- 出現場所が概ね3箇所あるが、出現頻度が低い場所がある。
- 出現頻度が低い場所からの敵船は、沈めずに取り返すことを前提に行動する。
- 取り返す前に沈めてしまわないために、お宝近くに武器は置かない。
- 序盤は、1箇所の出現場所を固めることを優先する。
その他
- 大嵐は効果が出るまで5秒ほどかかるので、敵船がその間にお宝に触れる位置にいる場合は使わないよう気を付ける。
- 幽霊船は大嵐中でもクリック可能。
- 爆破樽は複数の敵船に重なるよう配置すると、複数の敵船を一度で破壊可能。
Wineで一部のトレイアイコンが空欄になる不具合のやっつけパッチ
以前、Wineで一部のプログラムのタスクトレイアイコンが空欄になる不具合が発生した際に、一時しのぎに作ったパッチ。1.3.37までは適用確認済。以降はプログラム側で対処したので試してない。
patch-fix-invisible-trayicon
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 6e4225c..2421ea8 100644 --- dlls/winex11.drv/event.c +++ dlls/winex11.drv/event.c @@ -879,7 +879,7 @@ static void X11DRV_ReparentNotify( HWND hwnd, XEvent *xev ) } else { - if (!(parent = create_foreign_window( event->display, event->parent ))) return; + parent = GetDesktopWindow(); style = (style & ~WS_POPUP) | WS_CHILD; }
起因
なお、不具合の起因は以下のコミット。
上のパッチはこのコミットの一部を差し戻すので、リグレしても良い場合のみ適用のこと。
commit 5d570706c6aca9acbff855c3ae497b35bdde4648
Date: Mon Nov 8 15:28:09 2010 +0100
winex11: Create Win32 windows corresponding to all the ancestors of embedded windows.
This is needed to keep track of the embedded window position by
handling ConfigureNotify received by ancestors.
/tmp on mfs
2012/06/10 /etc/rc.d/backup_tmpのバグを修正。
/tmpをmfsにする設定とバックアップ用スクリプト。
/etc/fstab
/tmpだったスライスを/nvtmpに、mfsを/tmpに設定した。
/dev/ada0s1g /nvtmp ufs rw,noatime 2 2 md0 /tmp mfs rw,noatime,async,-s1g,-M,-p1777,-v1 3 0
/etc/rc.conf
バックアップ用スクリプトの動作設定。
backup_tmp_dirにバックアップの保存先、backup_tmp_targetsにバックアップ対象を設定する。
backup_tmp_enable="YES" backup_tmp_dir=/nvtmp/.backup_tmp backup_tmp_targets="work-1001 work-1002"
/etc/crontab
バックアップ用スクリプトはshutdown時にしかバックアップを生成しないので、不測の事態に備えて別途1日1回バックアップを作成しておく。
25 5 * * * /etc/rc.d/backup_tmp stop >> /nvtmp/.backup_tmp/cron.log
/etc/rc.d/backup_tmp
バックアップ用スクリプト。
#!/bin/sh # # PROVIDE: backup_tmp # REQUIRE: DAEMON # BEFORE: LOGIN # KEYWORD: shutdown . /etc/rc.subr name="backup_tmp" rcvar="backup_tmp_enable" start_cmd="backup_tmp_do start" stop_cmd="backup_tmp_do stop" backup_tmp_dir_default=/var/tmp/backup_tmp load_rc_config $name backup_tmp_restore() { local name=$1 if [ -e $backup_tmp_dir/$name.tar ]; then echo -n " $name" tar -xf $backup_tmp_dir/$name.tar -C /tmp fi } backup_tmp_backup() { local name=$1 if [ -e /tmp/$name ]; then if [ ! -d $backup_tmp_dir ]; then mkdir -pm 0770 $backup_tmp_dir fi echo -n " $name" tar -cf $backup_tmp_dir/$name.tar -C /tmp $name fi } backup_tmp_do() { local func=: local doing=Doing case $1 in start) func=backup_tmp_restore doing=Restoring ;; stop) func=backup_tmp_backup doing='Backing up' ;; esac if [ ".$backup_tmp_dir" = . ]; then backup_tmp_dir=$backup_tmp_dir_default fi echo -n "$doing /tmp:" for target in $backup_tmp_targets; do $func $target done echo '.' } run_rc_command "$1"
VistaとXPのデュアルブート
目的
+-----+-----+-----+
HDD |Vista| XP |Data |
+-----+-----+-----+
Boot
Sys.
手順
+-----+-----+-----+
|blank|NTFS |blank|
+-----+-----+-----+
- BIOSでIDEモードに設定する。
- XPをインストールする。
- XPにIntel Chipset Inf Update Programをインストールする。
- XPでデバイスマネージャからF6 Floppy UtilityのAHCIドライバに更新する。
- BIOSでAHCIモードに設定する。
- LiveCD版UbuntuでVistaのパーティションを作成し、アクティブに設定する。
+-----+-----+-----+
|NTFS | |blank|
+-----+-----+-----+
Active
- Vistaをインストールする。
- VistaにIntel Chipset Inf Update Programをインストールする。
- Vistaの管理者権限コマンドプロンプトで、以下のコマンドを実行する。
bcdedit /set {ntldr} device partition=C:
bcdedit /displayorder {ntldr} /addlast
その他
XPのシステムの復元によって、Vistaの復元ポイントが削除されてしまうので、両OSのシステムの復元は無効にしておく。
VirtualBox差分ディスクの依存関係
VirtualBox差分ディスクの依存関係を書き換える方法。
目的
誤って親差分ディスクを削除してしまったが、残っている子差分ディスクの中身をできるだけ救出したい。
手順
- .vboxのMediaRegistryについて、削除してしまった親差分ディスクのHardDiskエントリを削除。
- .vboxの他の場所について、削除してしまった親差分ディスクの箇所を子差分ディスク名に書き換え。
- 子差分ディスクについて、Parent UUIDを親差分ディスクからその上位差分ディスクに書き換え。
.vboxファイル
{parent}が削除してしまった差分ディスクのUUID。
--- TMP.vbox.orig 2012-02-19 23:12:38.000000000 +0900 +++ TMP.vbox 2012-02-20 19:43:53.000000000 +0900 @@ -24,8 +24,7 @@ </HardDisk> <HardDisk uuid="{base}" location="base.vdi" format="VDI" type="Normal"> <HardDisk uuid="{grandparent}" location="Snapshots/{grandparent}.vdi" format="VDI"> - <HardDisk uuid="{parent}" location="Snapshots/{parent}.vdi" format="VDI"> - <HardDisk uuid="{child}" location="Snapshots/{child}.vdi" format="VDI"/> + <HardDisk uuid="{child}" location="Snapshots/{child}.vdi" format="VDI"> <HardDisk uuid="{grandchild}" location="Snapshots/{grandchild}.vdi" format="VDI"> <HardDisk uuid="{current}" location="Snapshots/{current}.vdi" format="VDI"/> </HardDisk> @@ -667,7 +664,7 @@ <Image uuid="{...}"/> </AttachedDevice> <AttachedDevice type="HardDisk" port="0" device="1"> - <Image uuid="{parent}"/> + <Image uuid="{child}"/> </AttachedDevice> <AttachedDevice passthrough="false" type="DVD" port="1" device="0"/> </StorageController>
.vdiファイル
0x000001a8から16バイトがParent UUIDなので、それを書き換える。
UUIDが{00112233-4455-6677-8899-aabbccddeeff}なら、以下の形式で格納される。
33 22 11 00 55 44 77 66 88 99 aa bb cc dd ee ff
使用したソフトウェア
- VirtualBox 4.1.4
- WinMerge 2.12.4-jp19
- Dump4w 64bit 1.31
UFS Snapshot
日次と週次のバックアップにUFS Snapshotを使ってみた際の設定など。
半年ほど使っていたが、週に1回程度失敗する問題が解消できなかったので、tarによるバックアップに戻した。
雑感
- 処理中はマウントポイントがロックされるので、そのマウントポイントにアクセスすると処理完了まで待たされる。
- 処理時間は100GBで約4分、300GBで約12分だった。 (WD Caviar Green WD5000AADS)
- noatimeを指定していても対象マウントポイントはatimeになる。
- スケジュール途中で失敗した場合、そのマウントポイント以降は処理されない。
- 例えば、以下の設定の時、/homeで失敗すると/jailは処理されない。
必要なport
sysutils/freebsd-snapshot
設定
/etc/periodic.conf
snapshot_enable="YES" snapshot_schedule="/,/usr,/home,/jail:3:6:0"
成功時のmessages (抜粋)
root: snapshot: daily.0 snapshot on filesystem / made (duration: 0 min) root: snapshot: daily.0 snapshot on filesystem /usr made (duration: 0 min) root: snapshot: daily.0 snapshot on filesystem /home made (duration: 0 min) ...
失敗時のmessages (抜粋)
kernel: fsync: giving up on dirty kernel: 0x...: tag devfs, type VCHR kernel: usecount 1, writecount 0, refcount ... mountedhere 0x... kernel: flags (VV_COPYONWRITE) kernel: v_object 0x... ref 0 pages ... kernel: lock type devfs: EXCL by thread 0x... (pid ...) kernel: dev ... root: snapshot: making snapshot on /jail failed
非rootユーザでのPorts
以前大学の共用機でPortsを使うためにでっち上げた非rootユーザでのPortsインストールスクリプト。
今は使ってないので、動くか不明。
myports.csh
MYPORTS_DIRがPorts設定の保存先で、MYPORTS_PREFIXがインストール先。
set MYPORTS_DIR = $HOME/myports set MYPORTS_PREFIX = $HOME/local setenv LD_LIBRARY_PATH $MYPORTS_PREFIX/lib setenv PKG_CONFIG_PATH $MYPORTS_PREFIX/lib/pkgconfig:$MYPORTS_PREFIX/libdata/pkgconfig setenv GST_PLUGIN_PATH $MYPORTS_PREFIX/lib/gstreamer-0.10 setenv PYTHONPATH $MYPORTS_PREFIX/lib/python2.7/site-packages setenv LIBRARY_PATH $MYPORTS_PREFIX/lib setenv CPATH $MYPORTS_PREFIX/include setenv MANPATH `manpath`:$MYPORTS_PREFIX/man set options set options = ( "$options" PREFIX=$MYPORTS_PREFIX ) #set options = ( "$options" PORTSDIR=$MYPORTS_DIR/ports ) set options = ( "$options" PORTSDIR=/usr/ports ) set options = ( "$options" DISTDIR=$MYPORTS_DIR/ports/distfiles ) set options = ( "$options" WRKDIRPREFIX=$MYPORTS_DIR/ports ) set options = ( "$options" PKG_DBDIR=$MYPORTS_DIR/db/pkg ) set options = ( "$options" PORT_DBDIR=$MYPORTS_DIR/db/ports ) set options = ( "$options" \'LDCONFIG=/sbin/ldconfig -f $MYPORTS_DIR/run/ld-elf.so.hints\' ) set options = ( "$options" BINOWN=$USER BINGRP=$GROUP ) set options = ( "$options" SHAREOWN=$USER SHAREGRP=$GROUP ) set options = ( "$options" MANOWN=$USER MANGRP=$GROUP ) set options = ( "$options" BINMODE=0755 ) set options = ( "$options" SHAREMODE=0644 ) set options = ( "$options" MANMODE=0644 ) set options = ( "$options" INSTALL_AS_USER=yes ) set options = ( "$options" PYTHON_SITELIBDIR=$MYPORTS_PREFIX/lib/python2.7/site-packages ) set options = ( "$options" RUBY=$MYPORTS_PREFIX/bin/ruby ) #set options = ( "$options" TCL_INCLUDEDIR=$MYPORTS_PREFIX\''/include/tcl${TCL_VER}'\' ) #set options = ( "$options" TCL_LIBDIR=$MYPORTS_PREFIX\''/lib/tcl${TCL_VER}${_TCL_THREADS_SUFFIX}'\' ) #set options = ( "$options" TCLSH=$MYPORTS_PREFIX\''/bin/tclsh${TCL_VER}${_TCL_THREADS_SUFFIX}'\' ) #set options = ( "$options" TK_INCLUDEDIR=$MYPORTS_PREFIX\''/include/tk${TK_VER}'\' ) #set options = ( "$options" TK_LIBDIR=$MYPORTS_PREFIX\''/lib/tk${TK_VER}${_TCL_THREADS_SUFFIX}'\' ) #set options = ( "$options" WISH=$MYPORTS_PREFIX\''/bin/wish${TK_VER}${_TCL_THREADS_SUFFIX}'\' ) alias pmk make "$options" unset options #alias portsnap portsnap \ # -f $MYPORTS_DIR/etc/portsnap.conf \ # -d $MYPORTS_DIR/db/portsnap \ # -p $MYPORTS_DIR/current unset MYPORTS_DIR MYPORTS_PREFIX
準備
インストール先とPorts設定の保存先を作成する。
set MYPORTS_DIR = $HOME/myports set MYPORTS_PREFIX = $HOME/local mkdir $MYPORTS_DIR mkdir $MYPORTS_PREFIX
ldconfigのヒントファイルを作成する。
ldconfig -r | grep search | sed 's/^.*: // ; s/:/\\ /g' > $MYPORTS_DIR/etc/ld-elf.so.conf echo $MYPORTS_PREFIX/lib >> $MYPORTS_DIR/etc/ld-elf.so.conf ldconfig -elf -f $MYPORTS_DIR/run/ld-elf.so.hints -i -R $MYPORTS_DIR/etc/ld-elf.so.conf
以下のコマンドで共有ライブラリが正しく認識されているか確認する。
ldconfig -r -f $MYPORTS_DIR/run/ld-elf.so.hints
使用方法
ccacheをインストールする例:
source myports.csh cd /usr/ports/devel/ccache/ pmk install clean
インストールできないportも結構あるので注意。