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

* 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! #途中経過

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

 ウォッチリストから商品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...)

* RandomNoteのrefererを検索エンジン(等)に登録させない

 アクセスログを眺めてたら、RandomNoteのrefererページに検索エンジン経由でのアクセスがあった。

 Webページでの披検索語の表示は迷惑極まりない。その単語が更にCGIに登録されて、それを検索エンジンが拾って、その単語で検索した人がアクセスして…。
 俺自身が大嫌いな要素なのに自分がやらかしていたとは…なんてこった…。

 というわけで、ざくざくとRandomNoteをいじった。
 もともとのコードにヘッダにロボット避けを入れる機能があるので、refererの表示の際にはそのようにするように変更。
def do_referer内
#  print_header(' - referer')
print_header(' - referer', true) # 検索エンジンにリンク元が登録されると邪魔

 あと、cahge_logも検索エンジンにインデックスされるべきじゃない。
def do_change_log
#  print_header
print_header(' - change log', true)

#RandomNote#Web

* xyzzy拡張

* RGB出力PPU

 ファミコンRGB出力するのに必要なPPUに関して。

RP2C03BTENNIS
DUCK HUNT
RC2C05-03GUMSHOE
RC2C05-04TOP GUN
RC2C05-99編集ファミコンファミコンタイトラー)
不明ファミコンテレビC1

 RC2C05-03, RC2C05-04は使えない?
 手に入れたのをRP2C03BでRGB出力化したAVファミコンのと差し替えたら、ゲームが起動しなかった。どの辺に非互換部分があるんだろうか?


 C1不可のソフトがあるのは、C1のPPUが古い仕様で新しいので直ったバグが残っているためらしい。通常のファミコンでも初期のものは同様の症状が発生する可能性があるとのこと。

 C1はRP2C03Bを積んでいるのではないかと推測される。ということは、編集ファミコンに搭載されているRC2C05では改善されていて、C1不可のゲームでも不具合がでないのかも。


参考文献
RGBイヒ】ゲーム機改造 4機種目【その他小ネタ】
http://game9.2ch.net/test/read.cgi/gameurawaza/1117339941/600
一流メーカーの過去の駄作。
http://piza.2ch.net/jisaku/kako/986/986571947.htmlの170

http://gavin.panicus.org/doc/2C02%20technical%20reference.txt

#電子工作 #RGB

* DOSモバとAIR-EDGE

AH-S405CをMobile Gear for DoCoMoに装着し、ちょいちょいと設定すると、あっけなく「テキストブラウザ」を使ったWebの閲覧ができた。



 ただし、「テキストブラウザ」は制限が色々あるので、そのままでは実用的に使うのは苦しい。
 googleのトップページすら開けないのはなぜだろう?
 テキストだけでも十分と思って開いた2chもちゃんと読めない。gzip圧縮に対応していないとダメなのかも。


 ちなみに、昔、MC-P300で試したときには数KB読んだところでつまって、モデムのATXコマンドをいじったり等もできないため手詰まりだった。

#モバイルギア #PDA

* 掲示板spam対策 (英語圏からのspam用)

 近頃猛威をふるっている、海外からのURL羅列spam等に対する対策。

 本文に多バイト文字が入っていなければエラーとして弾く。
 安直で簡単な対策ながら、効果絶大・副作用極小。
(ReadMore...)

* 表示デバイス


アパチャーモジュレーション方式による12bit階調表示
http://radiforce.com/jp/support/pdf/wp_jp_05_001_Aperture.pdf

* 読みやすいWebページを目指して


UI 設計の 5 世紀
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnwebtool/htm/ui5.asp
「何時間使っても疲れない自然なユーザー インターフェイスを持つアプリケーションを設計しました。実のところ、あまりにも透過性に優れているため、ユーザーの意識から『消えます』。まるでユーザー自身の脳の一部のようで、アプリケーションを使っていることさえ忘れてしまうほどです」

まるで UI 設計における聖杯のようじゃありませんか?私たちを仮想現実世界へと導く、あくまでも空想上の未来像だとお思いでしょうか。そう思っているとしたら、それは間違いです!私たちはみんな、これくらい自然な UI をほとんど毎日のように使っています。私たちはそれを「本」と呼んでいます。

#Web

* mixi外からmixiへのアクセスを防ぐ

Proxomitorn用フィルタ
[Patterns]
Name = "Block mixi form not mixi (IP)"
Active = TRUE
URL = "(^mixi.jp)"
Limit = 512
Match = "59.106.41."

Name = "Block mixi form not mixi"
Active = TRUE
URL = "(^mixi.jp)"
Limit = 512
Match = "mixi.jp"
Replace = "mixotron.jp"
mixi.jp以外のサイトではmixi.jpという文字列を片っ端から書き換えてしまうという力業。
※単純に文字列の置換を行うだけなので、Javascriptで難読化されたりすると通用しない。
#悪用のヒントを出すのはどうかとも思うが、どーせ悪用するような人はそれぐらい思いつくだろう。
(ReadMore...)

* RandomNote ロボット対策

 今度はgooのichiroが検索ワードを引っかき回していった。

 検索ワードによるリンク先にアクセスするとその単語がageられるけど、ロボットにかき回されると困る。…が、ロボットによるアクセスだけをうまく制限する方法が思いつかない。他の人にも役に立つかもしれないメモ帳を目指しているので、ロボットの完全排除は論外だし…。

 ぱっと思いつくのは、UAを見てロボットだったら記録に残さないように改造すること。でも、ブラックリスト方式だから、最初にリストを作るのがやや面倒で更に新手が増えるたびにリストを更新する必要があるのが面倒だぁ。

 とりあえずの対策として、ichiroとかはRefererが空なので、Refererがnilな場合は検索ワードを追加しないようにした。
def save
  PStore.new(CACHE_DATA).transaction do |db|
#    db['search']  = @search
    db['search']  = @search if @cgi_referer != nil

2006/02/09:今度はmsnbotが引っかき回していった。対策をミスっていたのが発覚し訂正。
cgi_refererはリファラ無しの場合はnilなのだな。

#RandomNote #Web

* USBマウスを改造してお手軽にUSB接続機器を作る実験


 ヤフオクを介して入手したエンコーダを、テストを兼ねてUSB接続のマウスに繋いでみた。
 マウスはジャンクとして300円ぐらいで購入したもの。ホイール付ではなかったが内部にはホイール用のパターンがあった。ホイール用エンコーダが繋がるとおぼしきところにエンコーダのA,B相を繋いだら、あっさりホイールとして機能した。

#電子工作 #途中経過

* コンタクトZ

 秋月で売っているDMMP-10の電池を交換したものの、やたら調子が悪く表示が時々消えた。叩くと動いたりするので電池の接触不良と考え、接点部を起こして接触圧を増すと共に、電池を固体系接点復活材コンタクトZにて処置した。

 どっちが効果的だったのかは不明だが、電池が結構前に買ったもので接点が曇っていたので、コンタクトZが効いたのではないかと思う。

#電子工作