SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|02|03|04|05|06|07|08|

2005-02-26(Sat) 調光器キット製作開始

  突然ではあるが、かなり以前に秋月で「トライアック万能調光器キット(35A)」を購入してあったのを思い出した。あの直後に、もう少し容量の大きい40Aタイプが、よりかさばらないパッケージのトライアック使用で、35Aタイプより\200安く出たので、ちょっと落ち込んでいたのだ。そもそもオイラの用途では20Aタイプで十分だったんだけどな……。久々に、よく考えないで買って失敗したのであった。

  画像の説明

  んが、んなことでヘコんでいても仕方ない。OLIMEXに製作を発注したFT232BMの変換基板が届くのはまだ先だし、今日はまとまった時間があるので、おもむろにキットの製作に入るのである。しかしここで「おぃおぃ、他にも放置中のプロジェクトがあるじゃねぇか」というツッコミはなしでお願いしたい。日記スタイルだとゴマかし効かねくてイケねぇや……とほほ。

  電子工作キットの製作の場合、なにしろ重要なのがパッケージングである。電子工作というと、イキナリハンダ付けから始まると思われがちであるが、部品を載せてしまうと極端に基板のハンドリングが悪くなる。ハヤる気持ちをぐっと抑え、まずはパッケージングから始めるのである。だいたい、キットの場合は大概プリント基板上に製作するコトになっており、完成する大きさが決まっている。しかし、回路設計から行う場合には、パッケージングにあわせて回路デザインをすることもあるくらいだ。シツコイがパッケージングは重要である。

  画像の説明

  で、手持ちのプラケースを物色してみる……大きさが足りない。プリント基板のサイズとピッタリ同じではどうしようもない。今回のキットの場合、AC100Vが流れる配線があるため、ムキ出しは絶対にマズい。オマケにトライアックは放熱が必要だ。できれば金属のケースを使い、ヒートシンクを兼用したい……これは……サンマのカバ焼の缶詰だ。サイズ的にはなかなかヨイが、ちょっと高さが足りない。缶のフタを剥がすと元に戻らないのも調子が悪い。オモシロそうな見た目にはなるだろうが、残念ながらダメである。

  そこで発見したのが、ウィスキー的には選択を誤ったMcCLELLAND'S-ISLAYの瓶の外箱。そこそこ高級なスコッチは遮光のためか、こういう紙のケースに入っているのだが、これがなかなかシッカリした箱なのである。今まで上下1/3辺りでブッた切ってペン立て等に利用したりもしていたが、こいつをケースにしてはどうだろう? 上下は金属でできているから放熱にもバッチリだし、上のフタはかなりキッチリと閉まるのだ。高さは自在に調節できるしうってつけではないか。

  画像の説明

  早速、高さを決めてカッターでブッた切る。どうしてもサイズ的にプリント基板が入らないので、キット添付のプリント基板を使うことを惜しげもなくあきらめた。替わりにユニバーサル基板を少し折り去って円筒内に収まるようにする。基板の片側に固定用のネジ穴を空けなおし、ケースの下側に基板固定用の穴を空ける。上側のフタにはトライアックとボリュームをマウントするための穴を空ける。どうよ!! コレ!!

  画像の説明

  とか作業していたら、イキナリ「ガチャーン」という音が。カミさんがテレビの上の置時計時計をスッ飛ばしていた。100円ショップで買ったアイテムだけに、1mソコソコの高さから落ちただけで針がバラバラだ。オイラは一瞬で直すのをあきらめて、部品サルベージモードに移行。32.768kHzの水晶とブザーをゲット。こいつもそのうちケースとして利用できるかもしれん。プラのギア類を全部捨てガワだけ元に戻してジャンク箱へ。

  画像の説明

  もう遅いので、ハンダ付けは明日にしよう。とりあえずユニバーサル基板の部品配置を考える。先日に高機能なPCB-CAD「EAGLE」を使えるようにはなったが、ユニバーサル基板の配線設計にはBschのほうが便利な気がする。チョイチョイと最適化して完了。明日はハンダ付けだ!! ジュワッチ!!


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に書き込む程度なら、さして気にするほどでもない。

  しかし、なんといっても一番の利点は、電気的にエラいミスやらかしちゃってPCがぶっ壊れても、あぁーあ……で済むことであったりする……なはは……。


2008-02-26(Tue) オペアンプまでぶっ壊す

  ブレッドボード上でオペアンプの動作をあーだこーだしているウチに、単一電源でなく、実際に正負の電源を与えてみたくなって、昨日、完成したばかりの電源から「ICクリップ⇔ワニグチケーブル」で電源を引いてみることにした。

  ブレッドボードには、普段9V電池を貼り付けてあるので、電池スナップの端子をワニグチでカジらせて電源供給……

  「にょ……?」

  ……なんか、オペアンプの動作がおかしくなったぞ。ナゼか、備え付けの3端子レギュレータまで、5Vでなく中途半端な電圧を出力するようになってしまった。もっ、もしかして……

  画像の説明

  ……や、やっちまった……電池スナップのオスメスを間違えた。逆電圧をドカーンと。オイラ的には、パーツを壊すのは結構珍しいコトなんだけどな。ガガーン。昨日の電解に続き、二日連続かよ……しかも、3端子レギュレータはともかく、LM7171って、1個200円もする比較的高価なオペアンプなんだけど、それを2個も同時にオダブツにするとは……。

  ま、壊すコトでスキルが身に付くともいうし、自分がレベルアップしたと思ってあきらめるか……今回の一連の試行錯誤で、オペアンプやインピーダンスのなんたるかについてはガッチリと掴めた気がするし……とはいえ、トホホな出来事であった。


2011-02-26(Sat) デグRAIDする

  気がつくと、ソフトRAIDがデグレードしていた。あまりにヒドイSMART情報が出たので、記念に貼っておく。こういうの、出そうと思って出せるものではないので、参考になるはず。

  そういえば、このHDDはファームウェア問題を持っていたっけ。24時間稼働で使っているので、発現確率は低いと見積もり、対処してなかった。フツーに壊れた今となってはどうでもイイ話だけど。

  とりあえず、替えのHDDもないので、無理矢理、再アレイしてみる。

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

  あかん……HDD注文しよ。以下は、マトモな側のSMART。

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」を手配して、ラップタイムを計測するガジェットを組んでみた。

  画像の説明

  どこまでガッチリしたものを組もうかと思案しつつ、センサだけ基板の切れ端にハンダ付けして、ブレッドボード上に組むことにした。ファームウェアは、デキあいのコードを切り貼りしたら、アッサリとセンサの出力をUSB変換器を経由して、シリアル出力することに成功した。

  あとはソフトだが、ガキに回路を見せて話を振ったら「しゃべればいいじゃん」だと。くーッ!! ニクいツッコミをするヤツめッ!!


2023-02-26(Sun) 九四ドライブ8日目

  今日は朝からカミさんを長崎空港に送っていくので、6時に起きて準備だ。朝食も済ませ、7時40分に出発し、1時間ほどで到着。長崎空港の駐車場は30分まで無料だったので、カミさんを送るついでに、空港の中を少し見て回る。何だか、朝からエラい混雑だったので大丈夫かいなと思っていたら、手続きの渋滞で離陸の遅延にまで至ったらしい。何だそりゃ。そんなこと知らない自分は、少し朝食が足りなかったので、空港でおにぎりを買って追加インストールしつつ、ひとり旅の幕を切る。

  画像の説明

  諫早市内まで戻って南下。雲仙を左に見て海っぺりを走る。そして遂に来ました。初のフェリー乗り場。人生で初じゃないかな。クルマと一緒に海を越えるのは。事前に乗り方についての情報をサイトで仕入れていたが、まずは一般駐車場へ駐めて……て、あれ? 予定よりひとつ前に乗れそう?

  画像の説明 画像の説明

  クルマを乗船用のレーンに並べ直し、係員に15分前までにクルマに戻ればいい旨を確認、事前に車検証を移しておいたクリアファイルを持って窓口へ。切符を買ってクルマに戻る。出航の15分前くらいに乗船が始まる。エンジンを始動し、窓を開けて切符を見せて、桟橋を渡ってフェリー船内へ。誘導に従ってクルマを駐めて、ちょっと強めにサイドブレーキを引く。係員の人が輪止めをセットしてくれる。一輪だけだし、エラく適当に見えるが。ちなみにフェリーは前後に口があるので、下船する時にバックする必要はない。世の中のすべてのフェリーがそうなのかは知らないが。

  画像の説明 画像の説明

  クルマを駐めたら、船室に移動しなければならないルールだ。階段を上り船内へ。口之津港から鬼池港までは、30分前後の乗船なので、船は小規模。売店はない。初めての体験なので、あちらこちらを見て回るが、それほど広いわけでもない。しばらくは船室にいて、後半は甲板に出て風を感じながら到着。案内の放送に従って、階段を下りて乗車。前方の口が開いたら、エンジンを始動し、順に下船する。特段の手続きはないので、そのまま走り去る感じだ。あー、おもしろかった。でも、今日中にもう一度、乗る予定なんだけど。

  昼を過ぎたので、すぐ先にあった道の駅でうどんの昼飯を済ましつつ、何となく見た目の面白い「あか巻」という和菓子を購入。天草名物らしい。こういうのが買えるのが道の駅のイイトコだよな。とはいえ、しばらくは食べる機会もなく、クーラーボックスで持ち歩くことになるのだが。で、そのまま海っぺりを走り、ひとつめのデッパリとおっぱい岩はスルーしたものの、ふたつめのデカいデッパリに城跡があるとのことで立ち寄ることにした。

  画像の説明

  が、この富岡城跡には、意外と印象深い歴史があった。実際に一揆軍と戦い守り切ったり、足助(近所だ)出身の鈴木重成という城主が名君として語り継がれていたりする。偶然だが、観光するのも大事な経験だな。

  で、どんどこ南下する。基本、海っぺりを走るのだが、それをガンバリすぎると、とんでもない酷い道を行くことになる場合があるので、その選択が難しい。その選択をいい感じにこなしつつ、海を横目に走っていると、次のフェリー乗り場に近づいてきた。最近の港には海上をパスする橋がある場合が多いが、この港にある牛深ハイヤ大橋は、橋上にT字路があったり、そこまでループで上ったりと面白い構成だ。うまく両方とも通過しつつ、フェリー乗り場に着く。よっしゃ。

  画像の説明 画像の説明 画像の説明

  そして、人生の初フェリーから、4時間を経ずして2回目のフェリー。すっかりベテラン気分で乗り込む。牛深港から蔵之元港までは、30分前後と同程度で、船の規模も似たようなもの。やっぱり、あちらこちらを見て回り、到着したら下船。船の前方の口が開くのを待って、そのまま走り去る。走り去る時の開放感がいいな。

  蔵之元港の地形的に、下船した車は、ほぼ南に向かうことになるので、フェリーから出たまんまの隊列でしばらく走ることになった。で、淡々と走っていると、あ、ここだ、となって停車。実は、事前に洗車スポットをチェックしていたのだよね。広島での洗車から6日経って、だいぶホコリまみれになっている。コイン洗車場も2回目だが、なんだか前回とだいぶ様子が違う。多くの車が自動洗車機に並んでいるのに、ジェット洗車コーナには誰もいないし、ジェット洗車コースがたったの100円だし、水の出もだいぶおとなしい。

  前回同様、備え付けのバケツを借りて、いつも通りの手順で雑巾で洗車しようとしたが、全ブースにバケツが備わってないので、隣のブースのバケツを借り、そこにジェット水流を溜めて洗い始めるが、だいぶバケツが小さいため、すぐに水がなくな……じゃない、バケツの底に穴があいてるんだ。つうか、これ備え付けのバケツじゃなくて、誰かが捨ててったヤツか。もう100円払って水を溜め、水漏れの速度と戦いながら洗車完了。携帯バケツがあったらよかったんだな。

  その後、やっぱり事前にチェックしてあった、エネオスのセルフで給油。燃費は18.64km/lと、普通よりちょっといい程度。まぁ、妥当。

  さて、ぼちぼち宿が近づいてきたし晩飯の調達をしなきゃ、と思ったのだが、ちょっと遅かった。コンビニがない。道の駅はあるが、食堂は早く閉まるし、晩飯っぽいものが売っていない場合もあり、実際に売ってなかった。結局、そのまま今日の宿である竹屋旅館本館に着いてしまう。

  おぉ、しかしすごい宿だな。玄関を入った瞬間から硫黄の匂いがすごい。すぐにいい感じのおばあさんが出てきてチェックイン。元々は旅館ではなく湯治場ですからね、なんて説明もされつつ、晩飯を買うなら、西にはない、南に向かえばある、とのこと。早速、南に向かうが、だいぶ想像とスケール感が違い、コンビニまで10km弱もあった。適当に晩飯と朝飯を買って宿に戻る。

  戻ると18時半。ここんとこ、ずっと走ってなかったし、せっかくジョギングシューズとか持ってきたので、ちょっと時間が遅いが走るか。と、走り出した。コンビニからの帰り道、宿から5kmのポイントをチェックしたので、そこまで走れば10km走ることができる。

  しかし、やはりちょっと時間が遅かった。行きの時点で真っ暗。街灯も少なくだいぶヤバい。んが、自分はヤリだすと目標にコダわるタイプなんだよな。結局、5kmのポイントまで到達して、戻る。今回も、時々iPhoneのマップを見つつ走ったが、試しに経路案内を使ってみたら、最後のキツい上りの場面でいきなりシャベリだして肝を冷やした。トンネルが見えた時は心底ホッとしたわ。

  画像の説明

  戻ったらすぐに風呂だ。これがまた、時代が付いていてホントにいい味を出している。ひとりでのんびりと入る。これはゼヒまた来たいなぁ。

  画像の説明

  部屋は4畳半と狭いが、むしろ落ち着く感じ。モノで足の踏み場もなくなりながらも、晩飯をかき込んだら、荷物整理を済ませる。無線LANはないのでテザリングにより、例によってノートPCで明日のルートをおさらいしつつ、早めのおやすみである。

  画像の説明

  本日の走行距離は259.1km。累計距離は1653.8km。


2024-02-26(Mon) トラディショナルなバックグラウンドの回転拡大縮小技術を再現完了

  特定の位置を中心に回転拡大縮小ができるようになり、非常に使い勝手がよくなった。十分な速度であり、描画の結果も非常に正確だ。我ながら傑作コードである。

  画像の説明 画像の説明 画像の説明

  自分で言うのも何だが、今回のコードには無駄な部分が一切存在しない。極めてシンプル。書きながら、煮詰めていくうちに、自然にそうなった。そこで、ハッと気づかされたのだ、当時の回転拡大縮小機能は「こう実装されていた」のかと。

  今回のコードは、ループの終了をゼロフラグで判断する(値比較で判断するより命令が減らせる)都合で、右下から左上にラスタースキャンするように回転パターンを生成しているが「ラスタースキャンするように生成している」のがミソだ。原理は同じなのだ。当時の回転拡大縮小機能も、ブラウン管モニタに「ラスタースキャンしながら回転パターンを生成していた」に違いないのである。PCG、スプライトなどと同様、CRTCに搭載されていた機能だったのだ。左上から順に、VRAMアドレス空間を「斜めに」参照しながら塗りつぶしていくという原理だったのだ。

  思えば、なんとなーく手を染め始めたWebAssemblyであったが、往年の回転拡大縮小機能の実装を再発明してしまうとは、気づけばエラいトコロに着地したもんだ。さて、レーシングゲームの実装を進めよう。