自分自身のための ものづくり / 自分自身のためのものづくりメモ

突っ込みなどがありましたら掲示板にお願いします。

* 携帯殺菌ライトでEPROMの消去

#電子工作


 タニタの携帯用殺菌ライト EC-966 を、ROMイレーサとして使っている。普通の殺菌灯よりも小型で、単4電池2本で動くので、便利で手軽。一度に1個しかイレースできないのが欠点。
 15分で消去が完了する。10分だと消えてないビットが残る。

 ボタンを押している間だけ照射なので、トグルスイッチを並列にして連続照射できるように改造した。
 タイマーをつければもっといいが、面倒なのでやってない。キッチンタイマーをセットして、手動で切っている。

 EC-966は現行商品ではないが、中古品や新古品はまだヤフオクなどで入手可能。

* 100万点のspam出品

#ヤフオク #YAH!
YAH! NG_IDの整理
http://baku.homeunix.net/WiKi/rnx/index.rb?1179662167.txt
にて取得した、IDと出品数のリストを、出品数の多い順にソートし、上位の総出品数を算出した。

結果

 1000点以上出品しているIDが 389 あり、それら総出品数は 716044 --- 71万点 であった。
 100点以上出品しているIDが 1361 あり、それらの総出品数は 1087596 --- 108万点 であった。




* YAH! NG_IDの整理

#ヤフオク #YAH!
 YAH!のNG_IDの整理を行った。
 これまでに登録した各IDの総出品数をAPIにより取得し、IDと組にして出力。消えているID、もう活動していないIDをリストから消去した。

http://baku.homeunix.net/program/yahX/list_ngid.tgz

$ ruby -Ku list_ngid.rb ng_ID.txt | tee ngid_listed.txt
$ ruby -n -a -e 'print "#{$F[0]}\n" if $F[1].to_i>0' < ngid_listed.txt  > ng_id_active.txt

$ sort -n -k 2 -n -r < ngid_listed.txt > ngid_listed_sorted.txt

 自分用のNG_IDは、最初のYAH!を作って以来引き継いでおり、総登録数が4946件だった。内、IDが残っているのが4391、1点以上出品があるのが2839だった。
 NG_IDとの照合はrubyのHashを使っていて、数が増えても照合時間はさほど増えない。…が、もう消えているIDは確実に無駄だし、活動していないのも無駄だろう。

* deny from 64.124.85.0/24

#Web
 再び、BecomeBotに検索履歴をかき回されたので、.htaccessにて排除することにした。
robots.txt BecomeBot締め出し
http://baku.homeunix.net/WiKi/rnx/index.rb?1138996756.txt
にてのけ者にしたはずなのだが、BecomeJPBotは別物というわけか。え゛ー。
 ちなみに、robots.txtは最初にちゃんと読んでる。

 20秒に一度のアクセスだったり、UAの項に載っている http://www.become.co.jp/site_owners.htmlは「お客様が指定されたページは見つかりませんでした。」だったり、かなり感じ悪い。
(ちなみに、正しくは、http://www.become.co.jp/site_owner.html だそうだ。その辺の食い違いも感じ悪いぞ)
 また、他の多くのクローラの挙動と違ってリファラを送る点で、RandomeNoteの敵。

↓はた迷惑なアクセスの記録
(ReadMore...)

* 公認spammerに埋め尽くされてるヤフオク

#ヤフオク
 「ストア」は何点出品しようが(制限内なら)手数料がかからないから、元を取ろうとうじゃうじゃ出品していて激しく邪魔だ。

http://baku.homeunix.net/program/yah2/yah.rb?search=&extract_spam=yes&extract_spam_scan_noimg=yes&url=http%3A%2F%2Flist.auctions.yahoo.co.jp%2Fjp%2F2084039542-category-leaf.html%3Fmode%3D2%26s1%3Dend
オークション / コンピュータ / パーツ / ケーブル、コネクタ / その他
OriginalPage : http://list.auctions.yahoo.co.jp/jp/2084039542-category-leaf.html?mode=2&s1=end

1 / 80 ( 1993 )
(中略)
30 : netshop_one
32 : nature_net_shop
36 : komugi18
80 : m_aica
85 : tokyo_wave777ac
139 : bitcafeosaka
189 : enzandenki
218 : hobbesshop
234 : different_2005jp

 以上で、計1043点。カテゴリの全出品の5割を占めている。

(YAHのバグでページをまたぐ品を計上しているため、少し誤差があるが、まぁ、誤差の範囲)

* DSC-UE4.3GのHDD換装

#PC #PC-98
 IDEのHDDをSCSIに変換するSDATを搭載のDSC-UE4.3G…の殻をヤフオク経由で入手した。早速、手持ちの6.4GBのHDDを入れたら無事認識された。

 しかし、他のHDDに変えると認識しなかった。
 手持ちのHDDで試した結果は以下の通り。
○Quantum Fireball CR 6.4G
×SAMSUNG SV0844A
×DK-238A-43
×MK2103MAV

 情報を求めてWebを彷徨うと
DSC-UE3.2Gを改造する
http://www11.cds.ne.jp/~youkan/y2k700/DSC-UE32.html
に、以下の記述があった。
ATAコマンドのIDENTIFY DEVICEを投げているとおぼしきところから追っていくと、怪しい部分が2つ見つかりました。
・Multiword DMA Capability を見て Mode 2 supported でなければエラーとしている。ここで該当ビットを見るのではなく即値の 0x04 と比較しているが、ATAPI-6のスペックを読むと「Mode 2 supported なら Mode1,0 のビットも立ててね」と書いてあるような気がする。0x07を返すHDDだとまずいっぽい。
・HDDから取得した総セクタ数をあらかじめ用意したテーブルのデータと順次比較し、「総セクタ数以下で一番近い容量のエントリ」を選択している。このとき実際の総セクタ数と決めうちで持っているセクタ数の差が0x100000(≒537MB)以上あるとエラーになる。つまり、このファームウェアはあらかじめ決められた数パターンの容量(9.1G/8.3G/6.4G/4.3G/3.2G/2.1G/1.2G + 0〜0.5G)しかサポートしていないのであった。これが20Gでも4Gでもダメだった原因っぽい。

 8.4Gのも4.3Gのも2.1Gのもダメだったのは、最初の条件に当てはまったっぽい。
 Interface 2000年7月号の「ATA(IDE)/ATAPIの徹底活用研究」を見てみたところ、ビット0,1,2が「マルチワードDMAモード0をサポートする」「(ryモード1又はそれ以下をサポートする」「(ryモード2または(ry」だそうだ。

#同じ悩みの人用の検索ホイホイ:DSC-UE4.3G, DSC-UE4.3G, DSC-UE8.3G,

* Yahoo!オークションWebサービスで商品詳細のデータ取得が可能に!!

#ヤフオク #Web
キタ━━━━(゜∀゜)━━━━ッ!!
Yahoo!デベロッパーネットワーク - Yahoo!オークション - REST - 商品詳細
http://developer.yahoo.co.jp/auctions/rest/auctionitem/V1/auctionitem.html

* Yahoo!オークションWebサービスで検索ができるようになった

 これまではそれができないのがかなり痛かったのだが、これで通常のブラウザでのアクセスとほぼ同等の情報が得られるようになったな。
 残るは、アダルトカテゴリへの対応?

Yahoo!デベロッパーネットワーク - 検索
http://developer.yahoo.co.jp/auctions/rest/search/V1/search.html

#ヤフオク #YAH! #Web

* HTMLをXHTMLに変換してREXMLで処理

プログラム(抜粋)
h = Html2xhtml.new
h.read_array(readlines)

require "rexml/document"
y = REXML::Document.new(h.body.to_s)

y.elements["/html/body"].elements[6, 'table'].elements['tr/td'].elements.each('a') do |a|
    p a.attributes['href']
    print a.text.strip + "\n"
end
結果
"http://auctions.yahoo.co.jp/jp/0-category.html?"
オークション
"http://list3.auctions.yahoo.co.jp/jp/23336-category.html?"
コンピュータ
"http://list3.auctions.yahoo.co.jp/jp/2084039759-category.html?"
パーソナルコンピュータ
楽だ…めっちゃ楽だ…

#Web #ヤフオク

* カテゴリ情報のデータが時々変

 ヘッダは200OKを返してくるのに、中身が"1\r\n"だけだったり、<childCategory>内の<categoryName>だけが抜けてたりする。
 検査して変だったらもう一回データを読み直すか?

#Ruby #REXML #ヤフオク #YAH! #途中経過

* ヤフオク用Proxomitronフィルタ

ウォッチリスト(等)の、邪魔なだけな「商品ID」やほとんど役に立たない「最高額入札者」の項を消去。
(仕様変更のため、もはや正常に機能せず)
(ReadMore...)

* ヤフオクのウォッチリスト用フィルタ

 ウォッチリストから商品IDが消えたと思ったら、まったくもって邪魔な「ポイント」とやらが出現。
 うりうりとProxomitron用フィルタを作成した。改変すると言うよりは、必要な情報を抽出して再構築するフィルタ。

商品名のみ
http://openwatchlist2.auctions.yahoo.co.jp/jp/show/mystatus?select=watchlist&s1=end&watchclosed=0&myaucpic=false
商品名と画像
http://openwatchlist2.auctions.yahoo.co.jp/jp/show/mystatus?select=watchlist&s1=end&watchclosed=0&myaucpic=true
等に対して機能。
 明示的に"myaucpic=true"とか書いてないと、どちらかを判別できないので適用されない。
(ReadMore...)

* Yahoo!オークションWebサービスとRSSとを併用

 これまでは、役に立たないと思っていたヤフオクRSSは結構使えるかもしれん。
 特に、Yahoo!オークションWebサービスのAPIでは検索できないけど、RSSの方なら検索結果が得られるのはありがたい。
http://search3.auctions.yahoo.co.jp/search_rss?p=mobilegear&auccat=23336&alocale=0jp&acc=jp

#Ruby #REXML #ヤフオク #YAH! #途中経過

* YAH!X試験中

 Yahoo!オークションWebサービスにより提供されるXMLデータを使うYahoo!AuctionHelperを作成中。

↓とりあえずの実験バージョン
http://baku.homeunix.net/program/yahX/yahX_test01.rb?category=2084045752&pic=true
categoryを書き換えれば他のカテゴリを見れる。
pic=trueで画像表示。それ以外で非表示。

 YAH!の特徴である各種NG機能は、とりあえず「NGキャラクタ」のみ実装。
 「次の25件」をいちいちクリックしなくてもいいので、現状でもとりあえずそこそこ役立つと思う。

 YAH! Ver.3としようかと思っていたけど、Yahoo!オークションWebサービスでは今のところキーワード検索ができないっぽいなどの理由で、Ver.Xとして別物としての扱い。

#Ruby #REXML #ヤフオク #YAH! #途中経過

* REXMLを使ってヤフオクのXMLデータを読む

 楽だ…。機械で読みやすいデータが提供されてるというのはこんなにもありがたい物だったとは。
 また、便利なREXMLに感謝。

#!ruby -Ku

require 'jcode'
require 'nkf'
require "rexml/document"

file = File.new( "y.xml" )
y = REXML::Document.new file

y.root.each_element('item') do |item|
  p item.elements['auctionID'].text
  p item.elements['title'].text
  item.each_element('seller') do |s_item|
    p s_item.elements['itemlist'].text
    p s_item.elements['rating'].text
  end
  p item.elements['url'].text
  p item.elements['img'].text
  p item.elements['price'].text
  p item.elements['bids'].text
  p item.elements['endtime'].text
end

Yahoo!デベロッパーネットワーク - オークションWebサービス
http://developer.yahoo.co.jp/auctions/

REXML - Home
http://www.germane-software.com/software/rexml/index.html

私家版REXML APIリファレンス
http://www.cozmixng.org/~kou/ruby/rexml/reference

REXML Tutorial - Home
http://www.germane-software.com/software/rexml/docs/tutorial.html

REXML であそぶ
http://www.namikilab.tuat.ac.jp/~sasada/prog/rexml.html


#Ruby #REXML #ヤフオク #YAH! #途中経過