SVX日記
2005-02-26(Sat) 調光器キット製作開始
突然ではあるが、かなり以前に秋月で「トライアック万能調光器キット(35A)」を購入してあったのを思い出した。あの直後に、もう少し容量の大きい40Aタイプが、よりかさばらないパッケージのトライアック使用で、35Aタイプより\200安く出たので、ちょっと落ち込んでいたのだ。そもそもオイラの用途では20Aタイプで十分だったんだけどな……。久々に、よく考えないで買って失敗したのであった。
んが、んなことでヘコんでいても仕方ない。OLIMEXに製作を発注したFT232BMの変換基板が届くのはまだ先だし、今日はまとまった時間があるので、おもむろにキットの製作に入るのである。しかしここで「おぃおぃ、他にも放置中のプロジェクトがあるじゃねぇか」というツッコミはなしでお願いしたい。日記スタイルだとゴマかし効かねくてイケねぇや……とほほ。
電子工作キットの製作の場合、なにしろ重要なのがパッケージングである。電子工作というと、イキナリハンダ付けから始まると思われがちであるが、部品を載せてしまうと極端に基板のハンドリングが悪くなる。ハヤる気持ちをぐっと抑え、まずはパッケージングから始めるのである。だいたい、キットの場合は大概プリント基板上に製作するコトになっており、完成する大きさが決まっている。しかし、回路設計から行う場合には、パッケージングにあわせて回路デザインをすることもあるくらいだ。シツコイがパッケージングは重要である。
で、手持ちのプラケースを物色してみる……大きさが足りない。プリント基板のサイズとピッタリ同じではどうしようもない。今回のキットの場合、AC100Vが流れる配線があるため、ムキ出しは絶対にマズい。オマケにトライアックは放熱が必要だ。できれば金属のケースを使い、ヒートシンクを兼用したい……これは……サンマのカバ焼の缶詰だ。サイズ的にはなかなかヨイが、ちょっと高さが足りない。缶のフタを剥がすと元に戻らないのも調子が悪い。オモシロそうな見た目にはなるだろうが、残念ながらダメである。
そこで発見したのが、ウィスキー的には選択を誤ったMcCLELLAND'S-ISLAYの瓶の外箱。そこそこ高級なスコッチは遮光のためか、こういう紙のケースに入っているのだが、これがなかなかシッカリした箱なのである。今まで上下1/3辺りでブッた切ってペン立て等に利用したりもしていたが、こいつをケースにしてはどうだろう? 上下は金属でできているから放熱にもバッチリだし、上のフタはかなりキッチリと閉まるのだ。高さは自在に調節できるしうってつけではないか。
早速、高さを決めてカッターでブッた切る。どうしてもサイズ的にプリント基板が入らないので、キット添付のプリント基板を使うことを惜しげもなくあきらめた。替わりにユニバーサル基板を少し折り去って円筒内に収まるようにする。基板の片側に固定用のネジ穴を空けなおし、ケースの下側に基板固定用の穴を空ける。上側のフタにはトライアックとボリュームをマウントするための穴を空ける。どうよ!! コレ!!
2006-02-26(Sun) FT245AMテスト基板稼動
久々に、ちょっと気合を入れて作業してみた。思い返せば、基板を設計してから約1ヶ月、基板が届いてから1ヶ月、ハンダ付け始めてから1ヶ月……で、今日になってやっと通信に成功した。まったくもってヒドい開発ペースである。
途中まで裏表逆に設計してしまった上に、使った線がちょっと太かったので、なんだかムチャなことになっている……が、ちゃんと動くからこれでよいのだ。USBに接続すれば、ちゃんと認識されるし、Cygwinから/dev/com8にデータを送れば、ちゃんとPICが受信してくれる。一応、変換基板としては動作確認完了といってよいだろう。ほっ、よかった。
とりあえず、これといって作りたいUSB対応機器はないのだが、以前から便利に使っていた「CPU使用率メータ」のUSB版でもサクッと作ろうかと思っている。今、職場で使っているPCはノートだもんだから、シリアルポート用のアイテムが使えないんだよね。
余談だが、この開発は、以前に愛用していたジャンクのメビウスノートを引っ張り出してきてやっている。というのも、以前に作ったRS-232C切り替え器はPICライターの接続に便利だし、4ポートの内蔵USBハブもこれまた便利なのだ。233MHzの遅さはちょっと気になるが、まぁ、Cygwinのviでソース書いて、アセンブルして、PICに書き込む程度なら、さして気にするほどでもない。
2008-02-26(Tue) オペアンプまでぶっ壊す
ブレッドボード上でオペアンプの動作をあーだこーだしているウチに、単一電源でなく、実際に正負の電源を与えてみたくなって、昨日、完成したばかりの電源から「ICクリップ⇔ワニグチケーブル」で電源を引いてみることにした。
2011-02-26(Sat) デグRAIDする
そういえば、このHDDはファームウェア問題を持っていたっけ。24時間稼働で使っているので、発現確率は低いと見積もり、対処してなかった。フツーに壊れた今となってはどうでもイイ話だけど。
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.11
Device Model: ST3500320AS
Serial Number: 9QM6THGV
Firmware Version: SD15
User Capacity: 500,107,862,016 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: ATA-8-ACS revision 4
Local Time is: Sat Feb 26 22:11:11 2011 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
See vendor-specific Attribute list for marginal Attributes.
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 650) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 120) minutes.
Conveyance self-test routine
recommended polling time: ( 2) minutes.
SCT capabilities: (0x103b) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 084 084 006 Pre-fail Always - 9800766
3 Spin_Up_Time 0x0003 095 094 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 65
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 2045
7 Seek_Error_Rate 0x000f 077 060 030 Pre-fail Always - 8698539546
9 Power_On_Hours 0x0032 079 079 000 Old_age Always - 19213
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 65
184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 001 001 000 Old_age Always - 204
188 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 0
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 061 039 045 Old_age Always In_the_past 39 (31 161 39 38)
194 Temperature_Celsius 0x0022 039 061 000 Old_age Always - 39 (0 14 0 0)
195 Hardware_ECC_Recovered 0x001a 040 021 000 Old_age Always - 9800766
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 2
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 2
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
SMART Error Log Version: 1
ATA Error Count: 235 (device log contains only the most recent five errors)
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 235 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
04 71 04 9d 00 32 e0 Device Fault; Error: ABRT
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
a1 00 00 00 00 00 e0 00 20d+21:02:03.382 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:02:03.361 IDENTIFY DEVICE
e5 00 55 9d 00 32 e0 00 20d+21:02:03.359 CHECK POWER MODE
a1 00 00 00 00 00 e0 00 20d+21:02:01.283 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:02:01.261 IDENTIFY DEVICE
Error 234 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
04 71 04 9d 00 32 e0
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
ec 00 00 00 00 00 e0 00 20d+21:02:03.361 IDENTIFY DEVICE
e5 00 55 9d 00 32 e0 00 20d+21:02:03.359 CHECK POWER MODE
a1 00 00 00 00 00 e0 00 20d+21:02:01.283 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:02:01.261 IDENTIFY DEVICE
e5 00 55 01 00 00 e0 00 20d+21:02:01.259 CHECK POWER MODE
Error 233 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
04 71 04 9d 00 32 e0
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
e5 00 55 9d 00 32 e0 00 20d+21:02:03.359 CHECK POWER MODE
a1 00 00 00 00 00 e0 00 20d+21:02:01.283 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:02:01.261 IDENTIFY DEVICE
e5 00 55 01 00 00 e0 00 20d+21:02:01.259 CHECK POWER MODE
00 00 00 00 00 00 00 ff 20d+21:01:56.167 NOP [Abort queued commands]
Error 232 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
04 71 04 9d 00 32 e0 Device Fault; Error: ABRT
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
a1 00 00 00 00 00 e0 00 20d+21:02:01.283 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:02:01.261 IDENTIFY DEVICE
e5 00 55 01 00 00 e0 00 20d+21:02:01.259 CHECK POWER MODE
00 00 00 00 00 00 00 ff 20d+21:01:56.167 NOP [Abort queued commands]
a1 00 00 00 00 00 e0 00 20d+21:01:24.676 IDENTIFY PACKET DEVICE
Error 231 occurred at disk power-on lifetime: 19213 hours (800 days + 13 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
ER ST SC SN CL CH DH
-- -- -- -- -- -- --
04 71 04 9d 00 32 e0
Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
-- -- -- -- -- -- -- -- ---------------- --------------------
ec 00 00 00 00 00 e0 00 20d+21:02:01.261 IDENTIFY DEVICE
e5 00 55 01 00 00 e0 00 20d+21:02:01.259 CHECK POWER MODE
00 00 00 00 00 00 00 ff 20d+21:01:56.167 NOP [Abort queued commands]
a1 00 00 00 00 00 e0 00 20d+21:01:24.676 IDENTIFY PACKET DEVICE
ec 00 00 00 00 00 e0 00 20d+21:01:24.651 IDENTIFY DEVICE
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md8 : active raid1 sdb8[2](F) sda8[0]
244189056 blocks [2/1] [U_]
md7 : active raid1 sdb7[2](F) sda7[0]
145893248 blocks [2/1] [U_]
md0 : active raid1 sdb1[2](F) sda1[1]
16383872 blocks [2/1] [_U]
unused devices: <none>
md: bind<sdb1>
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:1, o:1, dev:sdb1
disk 1, wo:0, o:1, dev:sda1
md: recovery of RAID array md0
md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 16383872 blocks.
md: bind<sdb7>
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda7
disk 1, wo:1, o:1, dev:sdb7
md: delaying recovery of md7 until md0 has finished (they share one or more physical units)
md: bind<sdb8>
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda8
disk 1, wo:1, o:1, dev:sdb8
md: delaying recovery of md8 until md7 has finished (they share one or more physical units)
md: delaying recovery of md7 until md0 has finished (they share one or more physical units)
usb 5-2: reset low speed USB device using uhci_hcd and address 3
usb 5-2: reset low speed USB device using uhci_hcd and address 3
md: md0: recovery done.
md: delaying recovery of md8 until md7 has finished (they share one or more physical units)
md: recovery of RAID array md7
md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 145893248 blocks.
RAID1 conf printout:
--- wd:2 rd:2
disk 0, wo:0, o:1, dev:sdb1
disk 1, wo:0, o:1, dev:sda1
ata4.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
ata4.00: BMDMA stat 0x25
ata4.00: cmd c8/00:10:d0:c9:96/00:00:00:00:00/e0 tag 0 dma 8192 in
res 71/04:04:9d:00:32/00:00:00:00:00/e0 Emask 0x1 (device error)
ata4.00: status: { DRDY DF ERR }
ata4.00: error: { ABRT }
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
ata4: soft resetting link
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
usb 5-2: reset low speed USB device using uhci_hcd and address 3
ata4: soft resetting link
ata4.00: both IDENTIFYs aborted, assuming NODEV
ata4.00: revalidation failed (errno=-2)
ata4.00: disabled
ata4: EH complete
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 9882064
raid1: sdb1: rescheduling sector 9882032
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 9882080
raid1: sdb1: rescheduling sector 9882048
raid1: sdb1: rescheduling sector 9882056
raid1: sdb1: rescheduling sector 9882064
raid1: sdb1: rescheduling sector 9882072
raid1: sdb1: rescheduling sector 9882080
raid1: sdb1: rescheduling sector 9882088
raid1: sdb1: rescheduling sector 9882096
raid1: sdb1: rescheduling sector 9882104
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200956448
raid1: Disk failure on sdb7, disabling device.
raid1: Operation continuing on 1 devices.
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200957472
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200958496
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 200959520
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 32767776
end_request: I/O error, dev sdb, sector 32767776
md: super_written gets error=-5, uptodate=0
raid1: Disk failure on sdb1, disabling device.
raid1: Operation continuing on 1 devices.
md: md7: recovery done.
md: recovery of RAID array md8
md: minimum _guaranteed_ speed: 1000 KB/sec/disk.
md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for recovery.
md: using 128k window, over a total of 244189056 blocks.
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:1, o:0, dev:sdb1
disk 1, wo:0, o:1, dev:sda1
RAID1 conf printout:
--- wd:1 rd:2
disk 1, wo:0, o:1, dev:sda1
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488394784
raid1: Disk failure on sdb8, disabling device.
raid1: Operation continuing on 1 devices.
md: md8: recovery done.
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488395808
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488396832
sd 3:0:0:0: [sdb] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK,SUGGEST_OK
end_request: I/O error, dev sdb, sector 488397856
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda7
disk 1, wo:1, o:0, dev:sdb7
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda7
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda8
disk 1, wo:1, o:0, dev:sdb8
RAID1 conf printout:
--- wd:1 rd:2
disk 0, wo:0, o:1, dev:sda8
smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF INFORMATION SECTION ===
Device Model: WDC WD10EADS-00L5B1
Serial Number: WD-WCAU45330156
Firmware Version: 01.01A01
User Capacity: 1,000,204,886,016 bytes
Device is: Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sat Feb 26 22:10:41 2011 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x84) Offline data collection activity
was suspended by an interrupting command from host.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: (23400) seconds.
Offline data collection
capabilities: (0x7b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: ( 255) minutes.
Conveyance self-test routine
recommended polling time: ( 5) minutes.
SCT capabilities: (0x303f) SCT Status supported.
SCT Feature Control supported.
SCT Data Table supported.
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 169 166 021 Pre-fail Always - 6533
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 28
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0
9 Power_On_Hours 0x0032 075 075 000 Old_age Always - 18784
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 26
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 7
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 28
194 Temperature_Celsius 0x0022 118 094 000 Old_age Always - 32
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]
SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 0 0 Not_testing
2 0 0 Not_testing
3 0 0 Not_testing
4 0 0 Not_testing
5 0 0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
2012-02-26(Sun) スロットレーシング、アゲイン、プラス
しばらく前にガキに買い与えた、スロットレーシングだが、ようやくフォトリフレクタ「RPR-220」を手配して、ラップタイムを計測するガジェットを組んでみた。
2023-02-26(Sun) 九四ドライブ8日目
今日は朝からカミさんを長崎空港に送っていくので、6時に起きて準備だ。朝食も済ませ、7時40分に出発し、1時間ほどで到着。長崎空港の駐車場は30分まで無料だったので、カミさんを送るついでに、空港の中を少し見て回る。何だか、朝からエラい混雑だったので大丈夫かいなと思っていたら、手続きの渋滞で離陸の遅延にまで至ったらしい。何だそりゃ。そんなこと知らない自分は、少し朝食が足りなかったので、空港でおにぎりを買って追加インストールしつつ、ひとり旅の幕を切る。
諫早市内まで戻って南下。雲仙を左に見て海っぺりを走る。そして遂に来ました。初のフェリー乗り場。人生で初じゃないかな。クルマと一緒に海を越えるのは。事前に乗り方についての情報をサイトで仕入れていたが、まずは一般駐車場へ駐めて……て、あれ? 予定よりひとつ前に乗れそう?
クルマを乗船用のレーンに並べ直し、係員に15分前までにクルマに戻ればいい旨を確認、事前に車検証を移しておいたクリアファイルを持って窓口へ。切符を買ってクルマに戻る。出航の15分前くらいに乗船が始まる。エンジンを始動し、窓を開けて切符を見せて、桟橋を渡ってフェリー船内へ。誘導に従ってクルマを駐めて、ちょっと強めにサイドブレーキを引く。係員の人が輪止めをセットしてくれる。一輪だけだし、エラく適当に見えるが。ちなみにフェリーは前後に口があるので、下船する時にバックする必要はない。世の中のすべてのフェリーがそうなのかは知らないが。
クルマを駐めたら、船室に移動しなければならないルールだ。階段を上り船内へ。口之津港から鬼池港までは、30分前後の乗船なので、船は小規模。売店はない。初めての体験なので、あちらこちらを見て回るが、それほど広いわけでもない。しばらくは船室にいて、後半は甲板に出て風を感じながら到着。案内の放送に従って、階段を下りて乗車。前方の口が開いたら、エンジンを始動し、順に下船する。特段の手続きはないので、そのまま走り去る感じだ。あー、おもしろかった。でも、今日中にもう一度、乗る予定なんだけど。
昼を過ぎたので、すぐ先にあった道の駅でうどんの昼飯を済ましつつ、何となく見た目の面白い「あか巻」という和菓子を購入。天草名物らしい。こういうのが買えるのが道の駅のイイトコだよな。とはいえ、しばらくは食べる機会もなく、クーラーボックスで持ち歩くことになるのだが。で、そのまま海っぺりを走り、ひとつめのデッパリとおっぱい岩はスルーしたものの、ふたつめのデカいデッパリに城跡があるとのことで立ち寄ることにした。
で、どんどこ南下する。基本、海っぺりを走るのだが、それをガンバリすぎると、とんでもない酷い道を行くことになる場合があるので、その選択が難しい。その選択をいい感じにこなしつつ、海を横目に走っていると、次のフェリー乗り場に近づいてきた。最近の港には海上をパスする橋がある場合が多いが、この港にある牛深ハイヤ大橋は、橋上にT字路があったり、そこまでループで上ったりと面白い構成だ。うまく両方とも通過しつつ、フェリー乗り場に着く。よっしゃ。
そして、人生の初フェリーから、4時間を経ずして2回目のフェリー。すっかりベテラン気分で乗り込む。牛深港から蔵之元港までは、30分前後と同程度で、船の規模も似たようなもの。やっぱり、あちらこちらを見て回り、到着したら下船。船の前方の口が開くのを待って、そのまま走り去る。走り去る時の開放感がいいな。
蔵之元港の地形的に、下船した車は、ほぼ南に向かうことになるので、フェリーから出たまんまの隊列でしばらく走ることになった。で、淡々と走っていると、あ、ここだ、となって停車。実は、事前に洗車スポットをチェックしていたのだよね。広島での洗車から6日経って、だいぶホコリまみれになっている。コイン洗車場も2回目だが、なんだか前回とだいぶ様子が違う。多くの車が自動洗車機に並んでいるのに、ジェット洗車コーナには誰もいないし、ジェット洗車コースがたったの100円だし、水の出もだいぶおとなしい。
前回同様、備え付けのバケツを借りて、いつも通りの手順で雑巾で洗車しようとしたが、全ブースにバケツが備わってないので、隣のブースのバケツを借り、そこにジェット水流を溜めて洗い始めるが、だいぶバケツが小さいため、すぐに水がなくな……じゃない、バケツの底に穴があいてるんだ。つうか、これ備え付けのバケツじゃなくて、誰かが捨ててったヤツか。もう100円払って水を溜め、水漏れの速度と戦いながら洗車完了。携帯バケツがあったらよかったんだな。
さて、ぼちぼち宿が近づいてきたし晩飯の調達をしなきゃ、と思ったのだが、ちょっと遅かった。コンビニがない。道の駅はあるが、食堂は早く閉まるし、晩飯っぽいものが売っていない場合もあり、実際に売ってなかった。結局、そのまま今日の宿である竹屋旅館本館に着いてしまう。
おぉ、しかしすごい宿だな。玄関を入った瞬間から硫黄の匂いがすごい。すぐにいい感じのおばあさんが出てきてチェックイン。元々は旅館ではなく湯治場ですからね、なんて説明もされつつ、晩飯を買うなら、西にはない、南に向かえばある、とのこと。早速、南に向かうが、だいぶ想像とスケール感が違い、コンビニまで10km弱もあった。適当に晩飯と朝飯を買って宿に戻る。
戻ると18時半。ここんとこ、ずっと走ってなかったし、せっかくジョギングシューズとか持ってきたので、ちょっと時間が遅いが走るか。と、走り出した。コンビニからの帰り道、宿から5kmのポイントをチェックしたので、そこまで走れば10km走ることができる。
しかし、やはりちょっと時間が遅かった。行きの時点で真っ暗。街灯も少なくだいぶヤバい。んが、自分はヤリだすと目標にコダわるタイプなんだよな。結局、5kmのポイントまで到達して、戻る。今回も、時々iPhoneのマップを見つつ走ったが、試しに経路案内を使ってみたら、最後のキツい上りの場面でいきなりシャベリだして肝を冷やした。トンネルが見えた時は心底ホッとしたわ。
2024-02-26(Mon) トラディショナルなバックグラウンドの回転拡大縮小技術を再現完了
先日から取り組んでいるBGの回転処理が完成した。
自分で言うのも何だが、今回のコードには無駄な部分が一切存在しない。極めてシンプル。書きながら、煮詰めていくうちに、自然にそうなった。そこで、ハッと気づかされたのだ、当時の回転拡大縮小機能は「こう実装されていた」のかと。
今回のコードは、ループの終了をゼロフラグで判断する(値比較で判断するより命令が減らせる)都合で、右下から左上にラスタースキャンするように回転パターンを生成しているが「ラスタースキャンするように生成している」のがミソだ。原理は同じなのだ。当時の回転拡大縮小機能も、ブラウン管モニタに「ラスタースキャンしながら回転パターンを生成していた」に違いないのである。PCG、スプライトなどと同様、CRTCに搭載されていた機能だったのだ。左上から順に、VRAMアドレス空間を「斜めに」参照しながら塗りつぶしていくという原理だったのだ。
思えば、なんとなーく手を染め始めたWebAssemblyであったが、往年の回転拡大縮小機能の実装を再発明してしまうとは、気づけばエラいトコロに着地したもんだ。さて、レーシングゲームの実装を進めよう。