start

iTunesでファイルのリンクが切れた曲をリストアップする方法

マシン移行などでiTunesライブラリを移動した際、ファイルが行方不明となり曲とのリンクが切れることがある。曲名の先頭にビックリマークが付く忌まわしきアレ。

アルバム単位でごっそりリンク切れしてくれれば分かりやすいが、数万曲あるうちの数曲とかだと実に厄介だ。リンク切れ曲を一挙にリストアップする方法を探してたら、海外フォーラムで実に巧妙な方法が紹介されていた。備忘録と困っている人のために画像付きでリストアップ方法を解説する。

iTunesメニューのファイル→新規→プレイリストをクリックし、新規プレイリストを作る。名前なんでもいいんだけど、分かりやすく「ファイルがある曲」とでもしておく。

iTunesの左ペイン→ライブラリ→曲をクリックし、Ctrl+A (Command+A)で全曲を選択する。そして任意の曲の上で右クリック→プレイリストに追加で、先ほどの「ファイルがある曲」を選ぶ。

プレイリストへ曲を追加する際、iTunesはファイルの有無を確認しているそうだ。今回は全曲なので、追加が終わるまで結構待たされる。その間、プログレスバーとかは出ずiTunesが固まった状態になるが、お茶でも飲みつつ辛抱強く待つ。処理が終わればiTunesが再び操作できるようになる。

リンク切れファイルがあれば、この段階でライブラリの曲数とプレイリストの曲数に差が出る。

続いて「ファイルがない曲」を探し出すスマートプレイリストを作る。

iTunesメニューのファイル→新規→スマートプレイリストをクリックし、以下の条件で「ファイルがない曲」リストを作る。

  • 次のルールに一致 → ✅チェック
    • 対象メディア:ミュージック
  • 「プレイリストが」「ファイルがある曲」「ではない」
  • 上限 → チェックしない
  • チェックマークのある項目だけ選択する → ☐チェックしない
  • ライブアップデート → ✅チェック

「ファイルがない曲」スマートプレイリストに、リンク切れ曲が列挙されていることを確認する。

上図ではビックリマークの有無が混在しているが、実際は全てリンク切れの曲である。通常のプレイリストと違い、スマートプレイリストでは曲を再生する時にファイルの有無チェックが行われるそうな。

あとは地道にリンク切れファイルを選択しなおすだけ(´・ω・`)

FreeBSDでmake.confのWITHOUT_MODULEが使えなくなっていた

FreeBSD 11.2-RELEASE-p7でwww/apache24をビルドしようとしたら、下記のエラーが出て処理が止まってしまった。

===>>> Port directory: /usr/ports/www/apache24

        ===>>> This port is marked IGNORE
        ===>>> : Error from apache.mk. WITH(OUT)_MODULES has been removed, use www_apache24_(UN)SET


        ===>>> If you are sure you can build it, remove the
               IGNORE line in the Makefile and try again.

Apacheだけではなく、他のportsでも出るものがあるようだ。

原因はというと、/etc/make.conf内のWITHOUT_MODULE, WITH_MODULEの記述。どうやら、これらオプションは/etc/src.confの方に書くようになったらしい。make.confからsrc.confに移動したら無事makeが通るようになった。

このオプションはカーネル構築に効くもののようなので、いっそ消してしまってもさほど問題ないかもしれない。

ABLENET VPS V1のHDDプラン/SSDプランのベンチマーク

ABLENETのVPS V1プランでストレージをHDDからSSDに契約変更した。HDDプランとSSDプランでは収容先が異なるようで、変更時はデータ全削除&IPアドレスが変わる点は注意が必要。それぞれのプランでUnix Benchを取ってみた。

なお、HDDプランは今から1年ほど前(2017年12月頃)に契約したサーバである。

■HDD

Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.2-RELEASE-p4 #0: Thu Sep 27 08:16:24 UTC 2018
    root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0)
VT(vga): text 80x25
CPU: Intel(R) Xeon(R) CPU E5-2640 v2 @ 2.00GHz (2100.01-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x623  Family=0x6  Model=0x2  Stepping=3
  Features=0x1783fbfd<FPU,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x80802001<SSE3,CX16,POPCNT,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
Hypervisor: Origin = "KVMKVMKVM"
real memory  = 1610612736 (1536 MB)
avail memory = 1513332736 (1443 MB)
Event timer "LAPIC" quality 100
ACPI APIC Table: <BOCHS  BXPCAPIC>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
ioapic0: Changing APIC ID to 2
ioapic0 <Version 1.1> irqs 0-23 on motherboard
SMP: AP CPU #1 Launched!
random: entropy device external interface
kbd1 at kbdmux0
netmap: loaded module
module_register_init: MOD_LOAD (vesa, 0xffffffff80ff4580, 0) error 19
nexus0
vtvga0: <VT VGA driver> on motherboard
cryptosoft0: <software crypto> on motherboard
acpi0: <BOCHS BXPCRSDT> on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
atrtc0: <AT realtime clock> port 0x70-0x71,0x72-0x77 irq 8 on acpi0
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 100000000 Hz quality 950
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
pci_link4: Unable to route IRQs: AE_NOT_FOUND
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX3 WDMA2 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xc180-0xc18f at device 1.1 on pci0
ata0: <ATA channel> at channel 0 on atapci0
ata1: <ATA channel> at channel 1 on atapci0
uhci0: <Intel 82371SB (PIIX3) USB controller> port 0xc140-0xc15f irq 11 at device 1.2 on pci0
usbus0: controller did not stop
usbus0 on uhci0
usbus0: 12Mbps Full Speed USB v1.0
pci0: <bridge> at device 1.3 (no driver attached)
vgapci0: <VGA-compatible display> mem 0xfc000000-0xfdffffff,0xfebf2000-0xfebf2fff at device 2.0 on pci0
vgapci0: Boot video device
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.1.0> port 0xc100-0xc13f mem 0xfeba0000-0xfebbffff irq 11 at device 3.0 on pci0
em0: Ethernet address: 52:54:00:51:90:03
em0: netmap queues/slots: TX 1/256, RX 1/256
sym0: <895a> port 0xc000-0xc0ff mem 0xfebf3000-0xfebf33ff,0xfebf0000-0xfebf1fff irq 11 at device 4.0 on pci0
sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
virtio_pci0: <VirtIO PCI Balloon adapter> port 0xc160-0xc17f irq 10 at device 5.0 on pci0
vtballoon0: <VirtIO Balloon Adapter> on virtio_pci0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
fdc0: <floppy drive controller> port 0x3f2-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
orm0: <ISA Option ROM> at iomem 0xec800-0xeffff on isa0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
attimer0: <AT timer> at port 0x40 on isa0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
fdc0: No FDOUT register!
ppc0: cannot reserve I/O port range
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 10.000 msec
ugen0.1: <Intel UHCI root HUB> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
uhub0: 2 ports with 2 removable, self powered
sym0: unknown interrupt(s) ignored, ISTAT=0x1 DSTAT=0x80 SIST=0x0
ugen0.2: <QEMU 1.1.0 QEMU USB Tablet> at usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <QEMU QEMU DVD-ROM 1.1.> Removable CD-ROM SCSI device
cd0: Serial Number QM00003
cd0: 16.700MB/s transfers (WDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
da0 at sym0 bus 0 scbus2 target 0 lun 0
da0: <QEMU QEMU HARDDISK 1.1.> Fixed Direct Access SPC-3 SCSI device
da0: 3.300MB/s transfers
da0: Command Queueing enabled
da0: 95367MB (195312500 512 byte sectors)
Trying to mount root from zfs:zroot/sys/ROOT/default []...
warning: total configured swap (4194304 pages) exceeds maximum recommended amount (1494312 pages).
warning: increase kern.maxswzone or reduce amount of swap.
random: unblocking device.
em0: link state changed to UP
uhid0 on uhub0
uhid0: <QEMU 1.1.0 QEMU USB Tablet, class 0/0, rev 1.00/0.00, addr 2> on usbus0

■SSD

Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.2-RELEASE-p5 #0: Tue Nov 27 09:33:52 UTC 2018
    root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0)
VT(vga): text 80x25
CPU: Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz (3400.06-MHz K8-class CPU)
  Origin="GenuineIntel"  Id=0x6fb  Family=0x6  Model=0xf  Stepping=11
  Features=0x1f83fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2,SS,HTT>
  Features2=0x80002201<SSE3,SSSE3,CX16,HV>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
Hypervisor: Origin = "KVMKVMKVM"
real memory  = 1610612736 (1536 MB)
avail memory = 1513537536 (1443 MB)
Event timer "LAPIC" quality 100
ACPI APIC Table: <BOCHS  BXPCAPIC>
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
ioapic0 <Version 1.1> irqs 0-23 on motherboard
SMP: AP CPU #1 Launched!
random: entropy device external interface
kbd1 at kbdmux0
netmap: loaded module
module_register_init: MOD_LOAD (vesa, 0xffffffff80ff4580, 0) error 19
nexus0
vtvga0: <VT VGA driver> on motherboard
cryptosoft0: <software crypto> on motherboard
acpi0: <BOCHS BXPCRSDT> on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
cpu1: <ACPI CPU> on acpi0
atrtc0: <AT realtime clock> port 0x70-0x71,0x72-0x77 irq 8 on acpi0
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 100000000 Hz quality 950
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xb008-0xb00b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX3 WDMA2 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xc180-0xc18f at device 1.1 on pci0
ata0: <ATA channel> at channel 0 on atapci0
ata1: <ATA channel> at channel 1 on atapci0
uhci0: <Intel 82371SB (PIIX3) USB controller> port 0xc140-0xc15f irq 11 at device 1.2 on pci0
usbus0: controller did not stop
usbus0 on uhci0
usbus0: 12Mbps Full Speed USB v1.0
pci0: <bridge> at device 1.3 (no driver attached)
vgapci0: <VGA-compatible display> mem 0xfc000000-0xfdffffff,0xfebf2000-0xfebf2fff at device 2.0 on pci0
vgapci0: Boot video device
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.1.0> port 0xc100-0xc13f mem 0xfeba0000-0xfebbffff irq 11 at device 3.0 on pci0
em0: Ethernet address: 52:54:00:51:90:03
em0: link state changed to UP
em0: netmap queues/slots: TX 1/256, RX 1/256
sym0: <895a> port 0xc000-0xc0ff mem 0xfebf3000-0xfebf33ff,0xfebf0000-0xfebf1fff irq 11 at device 4.0 on pci0
sym0: No NVRAM, ID 7, Fast-40, LVD, parity checking
virtio_pci0: <VirtIO PCI Balloon adapter> port 0xc160-0xc17f irq 10 at device 5.0 on pci0
vtballoon0: <VirtIO Balloon Adapter> on virtio_pci0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
fdc0: <floppy drive controller> port 0x3f2-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: does not respond
device_attach: fdc0 attach returned 6
orm0: <ISA Option ROM> at iomem 0xee800-0xeffff on isa0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
attimer0: <AT timer> at port 0x40 on isa0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
fdc0: No FDOUT register!
ppc0: cannot reserve I/O port range
ZFS WARNING: Recommended minimum kmem_size is 512MB; expect unstable behavior.
             Consider tuning vm.kmem_size and vm.kmem_size_max
             in /boot/loader.conf.
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 10.000 msec
ugen0.1: <Intel UHCI root HUB> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
uhub0: 2 ports with 2 removable, self powered
sym0: unknown interrupt(s) ignored, ISTAT=0x1 DSTAT=0x80 SIST=0x0
ugen0.2: <QEMU QEMU USB Tablet> at usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <QEMU QEMU DVD-ROM 2.2.> Removable CD-ROM SCSI device
cd0: Serial Number QM00003
cd0: 16.700MB/s transfers (WDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
da0 at sym0 bus 0 scbus2 target 0 lun 0
da0: <QEMU QEMU HARDDISK 2.2.> Fixed Direct Access SPC-3 SCSI device
da0: 3.300MB/s transfers
da0: Command Queueing enabled
da0: 38146MB (78125000 512 byte sectors)
Trying to mount root from zfs:zroot/sys/ROOT/default []...
warning: total configured swap (2097152 pages) exceeds maximum recommended amount (1494312 pages).
warning: increase kern.maxswzone or reduce amount of swap.
random: unblocking device.
uhid0 on uhub0
uhid0: <QEMU QEMU USB Tablet, class 0/0, rev 1.00/0.00, addr 2> on usbus0

■HDD

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

------------------------------------------------------------------------------
   Use directories for:
      * File I/O tests (named fs***) = /usr/home/hogehoge/byte-unixbench-master/UnixBench/tmp
      * Results                      = /usr/home/hogehoge/byte-unixbench-master/UnixBench/results
------------------------------------------------------------------------------


1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3

2 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

2 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

2 x Execl Throughput  1 2 3

2 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

2 x File Copy 256 bufsize 500 maxblocks  1 2 3

2 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

2 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

2 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

2 x Process Creation  1 2 3

2 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

2 x Shell Scripts (1 concurrent)  1 2 3

2 x Shell Scripts (8 concurrent)  1 2 3

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: asahi.ra.pub.oh2.jp: FreeBSD
   OS: FreeBSD -- 11.2-RELEASE-p4 -- FreeBSD 11.2-RELEASE-p4 #0: Thu Sep 27 08:16:24 UTC 2018     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
   Machine: amd64 (GENERIC)
   Language: en_US.utf8 (charmap=, collate=)
   CPU: no details available
   12:33PM  up 10 mins, 1 user, load averages: 0.18, 0.20, 0.12; runlevel

------------------------------------------------------------------------
Benchmark Run: Tue Dec 11 2018 12:33:50 - 13:02:24
2 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       14584509.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     3009.7 MWIPS (10.0 s, 7 samples)
Execl Throughput                                568.1 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         13916.5 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks            3267.5 KBps  (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks         52622.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                               24037.1 lps   (10.1 s, 7 samples)
Pipe-based Context Switching                   4895.0 lps   (10.0 s, 7 samples)
Process Creation                               1348.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   1634.7 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    352.6 lpm   (60.0 s, 2 samples)
System Call Overhead                         134038.7 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   14584509.1   1249.7
Double-Precision Whetstone                       55.0       3009.7    547.2
Execl Throughput                                 43.0        568.1    132.1
File Copy 1024 bufsize 2000 maxblocks          3960.0      13916.5     35.1
File Copy 256 bufsize 500 maxblocks            1655.0       3267.5     19.7
File Copy 4096 bufsize 8000 maxblocks          5800.0      52622.8     90.7
Pipe Throughput                               12440.0      24037.1     19.3
Pipe-based Context Switching                   4000.0       4895.0     12.2
Process Creation                                126.0       1348.3    107.0
Shell Scripts (1 concurrent)                     42.4       1634.7    385.5
Shell Scripts (8 concurrent)                      6.0        352.6    587.7
System Call Overhead                          15000.0     134038.7     89.4
                                                                   ========
System Benchmarks Index Score                                         109.3

------------------------------------------------------------------------
Benchmark Run: Tue Dec 11 2018 13:02:24 - 13:30:54
2 CPUs in system; running 2 parallel copies of tests

Dhrystone 2 using register variables       26073288.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     5758.3 MWIPS (9.8 s, 7 samples)
Execl Throughput                               1071.6 lps   (29.5 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks          8221.9 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks            1952.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks         29844.9 KBps  (30.0 s, 2 samples)
Pipe Throughput                               32199.7 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  14874.7 lps   (10.0 s, 7 samples)
Process Creation                               3887.9 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2619.8 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    370.4 lpm   (60.1 s, 2 samples)
System Call Overhead                         235107.9 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   26073288.2   2234.2
Double-Precision Whetstone                       55.0       5758.3   1047.0
Execl Throughput                                 43.0       1071.6    249.2
File Copy 1024 bufsize 2000 maxblocks          3960.0       8221.9     20.8
File Copy 256 bufsize 500 maxblocks            1655.0       1952.0     11.8
File Copy 4096 bufsize 8000 maxblocks          5800.0      29844.9     51.5
Pipe Throughput                               12440.0      32199.7     25.9
Pipe-based Context Switching                   4000.0      14874.7     37.2
Process Creation                                126.0       3887.9    308.6
Shell Scripts (1 concurrent)                     42.4       2619.8    617.9
Shell Scripts (8 concurrent)                      6.0        370.4    617.3
System Call Overhead                          15000.0     235107.9    156.7
                                                                   ========
System Benchmarks Index Score                                         150.1

■SSD

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

------------------------------------------------------------------------------
   Use directories for:
      * File I/O tests (named fs***) = /usr/home/hogehoge/byte-unixbench-master/UnixBench/tmp
      * Results                      = /usr/home/hogehoge/byte-unixbench-master/UnixBench/results
------------------------------------------------------------------------------


1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3

2 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

2 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

2 x Execl Throughput  1 2 3

2 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

2 x File Copy 256 bufsize 500 maxblocks  1 2 3

2 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

2 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

2 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

2 x Process Creation  1 2 3

2 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

2 x Shell Scripts (1 concurrent)  1 2 3

2 x Shell Scripts (8 concurrent)  1 2 3

========================================================================
   BYTE UNIX Benchmarks (Version 5.1.3)

   System: asahi.ra.pub.oh2.jp: FreeBSD
   OS: FreeBSD -- 11.2-RELEASE-p5 -- FreeBSD 11.2-RELEASE-p5 #0: Tue Nov 27 09:33:52 UTC 2018     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC
   Machine: amd64 (GENERIC)
   Language: en_US.utf8 (charmap=, collate=)
   CPU: no details available
   3:29PM  up  2:44, 1 user, load averages: 0.26, 0.19, 0.17; runlevel

------------------------------------------------------------------------
Benchmark Run: Wed Dec 12 2018 15:29:18 - 15:59:45
2 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       38289076.9 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     8007.5 MWIPS (8.9 s, 7 samples)
Execl Throughput                               1926.3 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         67638.4 KBps  (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           17279.3 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        247053.5 KBps  (30.1 s, 2 samples)
Pipe Throughput                               95834.8 lps   (10.1 s, 7 samples)
Pipe-based Context Switching                  36319.9 lps   (10.1 s, 7 samples)
Process Creation                               6116.5 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5853.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   1268.3 lpm   (60.0 s, 2 samples)
System Call Overhead                         457579.9 lps   (10.1 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   38289076.9   3281.0
Double-Precision Whetstone                       55.0       8007.5   1455.9
Execl Throughput                                 43.0       1926.3    448.0
File Copy 1024 bufsize 2000 maxblocks          3960.0      67638.4    170.8
File Copy 256 bufsize 500 maxblocks            1655.0      17279.3    104.4
File Copy 4096 bufsize 8000 maxblocks          5800.0     247053.5    426.0
Pipe Throughput                               12440.0      95834.8     77.0
Pipe-based Context Switching                   4000.0      36319.9     90.8
Process Creation                                126.0       6116.5    485.4
Shell Scripts (1 concurrent)                     42.4       5853.5   1380.5
Shell Scripts (8 concurrent)                      6.0       1268.3   2113.8
System Call Overhead                          15000.0     457579.9    305.1
                                                                   ========
System Benchmarks Index Score                                         437.5

------------------------------------------------------------------------
Benchmark Run: Wed Dec 12 2018 15:59:45 - 16:27:47
2 CPUs in system; running 2 parallel copies of tests

Dhrystone 2 using register variables       78112155.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                    16124.2 MWIPS (8.9 s, 7 samples)
Execl Throughput                               3610.4 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         71466.9 KBps  (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           17735.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        270519.3 KBps  (30.0 s, 2 samples)
Pipe Throughput                              181715.0 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  71715.0 lps   (10.0 s, 7 samples)
Process Creation                              14122.1 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   9875.0 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                   1341.4 lpm   (60.0 s, 2 samples)
System Call Overhead                         876871.6 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   78112155.4   6693.4
Double-Precision Whetstone                       55.0      16124.2   2931.7
Execl Throughput                                 43.0       3610.4    839.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      71466.9    180.5
File Copy 256 bufsize 500 maxblocks            1655.0      17735.9    107.2
File Copy 4096 bufsize 8000 maxblocks          5800.0     270519.3    466.4
Pipe Throughput                               12440.0     181715.0    146.1
Pipe-based Context Switching                   4000.0      71715.0    179.3
Process Creation                                126.0      14122.1   1120.8
Shell Scripts (1 concurrent)                     42.4       9875.0   2329.0
Shell Scripts (8 concurrent)                      6.0       1341.4   2235.7
System Call Overhead                          15000.0     876871.6    584.6
                                                                   ========
System Benchmarks Index Score                                         697.6

今回割り当てられたサーバは旧サーバより1世代新しく、また、まだあまり人がいないのか実に4倍以上の性能アップとなった。portsのビルド速度なんかは目に見えて速い(これはSSDの影響が大きいだろうけど)。半年後あたりに再度ベンチしてみたい。

ドリキャス発売20周年なのでスクールネットエクスペリメンタルについて書いてみる

今日はセガの最後にして愛すべき家庭用ゲーム機、Dreamcastの発売20周年記念日だそうだ。ちょうどいい機会なので、いつか書こう思いつつ手付かずだった「スクールネット・エクスペリメンタル」について書いてみようと思う。

まず初めに。
このソフトを持ってる人、店売りで値段付かなかったからって処分しちゃ駄目だよ!
極めて貴重なソフトなので後生大事にするか、しかるべき人に譲渡してください。

スクールネット・エクスペリメンタルとは、2000年に実施された「ドリームキャストとインターネットで家庭と学校を繋ぐ」という趣旨の実証実験および、同実験用のドリキャスソフトのことである。実験には全国10校の小・中学校が参加したらしい。ソフトは各校ごとの専用品となっており、すなわち10バージョンが存在する。ドリキャス界隈では、まさに知る人ぞ知る幻のソフトとして、その名を見ることができる。

インターネット上には数えるほどしか情報がなく、レアすぎて価値がつかない代物でもある。この記事によってソフトの価値が暴騰するのは本意ではないが、このままでは失われた歴史になりかねない。よって、幸運にも実験に参加出来た者として、いちゲーマーとして、そしていちゲーム開発者として、当時のことを記したい。

うちの中学校でスクールネット・エクスペリメンタルが実施されたのは、確か2000年のことである。記憶が大分曖昧で2001年だったような気もするが、現存するネット記事を信じるなら2000年のようだ。DC版サクラ大戦(2000年5月25日発売)を先んじて予約購入し、ドリキャスが来る日を待ち望んでいたのは鮮明に覚えている。実のところ、自分は既に進学しており、まだ中学生だった妹の世代が対象だった。

同年春ごろ、同窓生の間で「同校の全生徒にドリキャスが配られるらしい」という噂がにわかに流れだした。その後の経過は覚えてないが、噂がほぼ確実となって、ゲーマーとしてはまさに棚からぼた餅状態。当時は「なんでうちの中学校が!?」と思ったのだが、今にしてみればIT教育推進モデル校のような指定を受けていたのだろう。自分の在校時にも、視聴覚室が突如リニューアルされi386な黒TownsからPentium II 266MHzな最新鋭FMV+ネットへの常時接続(恐らくISDN)&LAN環境が導入され、時の内閣総理大臣橋本龍太郎氏とビデオチャットするなんてイベントが催されたっけ。(余談だけど、同学年に総理と同性同名のヤツがいて橋龍と橋竜の奇跡の対談だー!とかバカなことを言ってた。)

ドリキャスが配布されたのは確か夏前で、もしかすると夏休みに入るタイミング。保護者説明会から戻ってきた親の手には

  • ドリームキャスト本体
  • ドリームキャストキーボード
  • スクールネット・エクスペリメンタル
  • isao.netアカウント情報

が入った大きな紙袋が…!スクールネットへの接続もそこそこに、待ちに待ったサクラ大戦専用機化したのは言うまでもない。夏休み中は笑っていいともを見てからのサクラ大戦三昧の日々だった。

肝心のスクールネット・エクスペリメンタルの方はと言うと、ソフトの中身は恐らくドリームパスポートのカスタム版で、何度かお知らせメールが来たり、BBSへの掲載があった程度だったと思う。お世辞にも活用されていたとは言えない。当時のネット事情を考えれば、それもやむ無しというか成るべくして成ったというか…。

当時の一般家庭のIT環境といえば、PCがアーリーアダプタの域を抜けようやく1家に1台になろうとしていた時代だ。地方都市にもADSLが普及し始め、古くからのネットユーザーはテレホタイムからの開放・常時接続・高速性に狂喜乱舞する一方で、世間的にはインターネット?なんじゃそりゃ?という時代である。検索エンジンはディレクトリ型のYahoo、ロボット型のInfoseek、/-ぁゃιぃ-/海外サイトならAltaVistaを使い分け、ときにはFTP検索も駆使し、Googleなるものが凄いらしいと評判になっていた。

こんな感じであるからして、PCより簡単とはいえ、DCでのネット接続もそれなりにハードルが高かった。自発的にスクールネットへダイヤルアップ接続し情報を取得しなきゃならないんだから、保護者世代には難しかったであろうことは想像に難くない。家庭へのサポート部隊の派遣があったわけでもないので、一度もスクールネットに繋ぐことなく、ただのゲーム機化した家庭も少なくないと思う(下手すりゃ売られて買い取り代金が親の懐に入った可能性も…)

かく言ううちでも使うのは自分だけ。今だから言えるけど、isao.netのアカウントもPCでネットするのに使ってた笑。

そんなこんなで、実証実験は知らぬ間に終わり(なんか学校からプリントが来たような…スクールネット上でも告知があったような……)、晴れてドリキャス一式が自分のゲームコレクションに加わったのだった。

その後、今はなきGAMES'ARKでVGAデミロを購入し、美麗な出力でサクラ大戦2~4を遊び、クレイジータクシーで笑い転げ、連ジとJET SET RADIOにドハマりしてた。連ジはPS2版よりジャギーが少なくてキレイだったなぁ(遠い目。MIL-CDやネオジオポケットの通信ケーブルを使ったアレやコレやからのブロードバンドアダプタ購入など、ドリキャスでは一通り遊ばせてもらったし、本当にいい思い出。

ありがとう、スクールネット・エクスペリメンタル…!

EmacsのTRAMPのrgrepでfind: paths must precede expression: ^^!^が出るようになった顛末

Windows 10 + PuTTY(plink) + Emacs 26.1な環境でLinuxターゲットのSSH TRAMPがいい感じに使えてたんだけど、PuTTYをmsys2のものに置き換えたら、rgrepが「find: paths must precede expression: ^^!^」なるエラーを吐いて使えなくなってしまった。これじゃ仕事にならん!ってなもんで前のPuTTYに戻したものの状況は変わらず…オワタ\(^o^)/

とりあえずemacs/share/emacs/26.1/lisp/progmodes/grep.el.gzの1153行目付近、-prune -o(shell-quote-argument “!”)から文字列を結合してるあたりを削り、M-x byte-compile-file grep.el.gzして、超無理やり解決した。

同様の問題が起きた時の参考として、解決に至るまでの顛末をメモ。

  • lgrepやgrep-findは動くのでrgrepの問題と判断。
  • エラーメッセージと*grep*バッファのコマンドログから -prune -o ^“^!^” -type d あたりが怪しいと判断。実際、^“^!^”の先頭のサーカムフレックスは引数の文字としておかしくない?
  • M-x describe-function rgrepでrgrep関数の定義を探す→grep.el.gzと判明
  • ファイル内を「rgrep」をキーワードに流し読み。rgrep-default-command関数で実行するコマンドを組み立ててる予感!
  • 一応scratchバッファで(rgrep-default-command “XXX” “YYY” “ZZZ”)を実行して結果を見てみる→あたり!
  • rgrep-default-command関数の中で「!」を使ってるところを探す→(shell-quote-argument “!”)発見
  • scratchバッファで評価してみる→変なエスケープのされ方をされている!
  • 「!」は結合しない方向で、findの引数の関係が正しくなるように前後の処理を調整
  • M-x byte-compile-file grep.el.gzしてEmacs再起動
  • rgrepが使えるようになっていることを確認

根本原因はshell-quote-argumentの挙動が変わった(?)ことっぽいけど、なぜ変わったのかは不明のまま。PuTTYを差し替えたこと以外、何もいじってないはずなんだけどな…。

同様にshell-quote-argumentの実装を見てみても、OSによって処理を分岐させてるだけで変なところはない。……ん?待てよ、TRAMPの場合はOSはどういう扱いになるのこれ?ちゃんとリモート側のシステムにあわせてsystem-typeの中身が変わるのこれ…?

サーカムフレックスはコマンドプロンプトでのエスケープシーケンスらしいので、TRAMPしてるにもかかわらずshell-quote-argumentがWindows用の挙動を示すのが根本原因のようだ。

先の回避策では除外ディレクトリの指定が効かなくなってしまうので、grep.el.gzの1153行目あたりを以下のように変更した。

    (and grep-find-ignored-files
         (concat (shell-quote-argument "!") " -type d "

    (and grep-find-ignored-files
         (concat " '!' -type d "
  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo