ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

「日本は終了しました」って、やっぱ、バグ?

2006-06-15 20:18:18 | Weblog

 本家でも書いた話ですが。。

 現在の開発方法、テストファーストの場合、バグを発見したら、修正するのが普通である。

 ところが、ウォーターフォールが全盛時代の場合、すぐに修正したら、えらい怒られた。

 当時は、

1.まず、バグをあつめる
2.優先順位などやコスト、バグの関連などを鑑みて、バグを修正するかどうか、
  どのように修正するかを決める
3.その後修正に入り
4.修正確認テスト、および回帰テストを行う

という方式を取った。なぜ、この方式が取られたかというと、

一度ためて、バグ状況を集約しないと、
・その部分のプログラム完成度が低いので全部捨てたほうがいいのか、
 それとも修正すべきなのかの判断がつかず、だらだらと完成度の低い
 プログラムを修正し、手がつけられなくなってしまう。

・いくつものバグをまとめて、いちどに根本的な修正をしたほうが、効率的

・修正コストのほうが、大きい場合には、修正しないほうがいいこともある
 →回帰テストのコストや、もっと致命的なバグをいれてしまう危険性があるから

などが大きな理由だった。




 つまり、過去には、表示文字は違っているけど、ここに手をいれると、やばいんで、表示文字を変えないで置くという状況もあった。とくに、意味が理解できる場合。。

 で、うーん、そのケースなの?と考えてしまうのが、これ


http://blog9.fc2.com/2/2log/file/up24101.jpg


みれないこともあるみたいなので、内容をかいておくと。。。

JR神戸線の電光掲示板です。

       日本は終了しました。




本日じゃないよ、日本、ニッポンだよ(^^)

すげー、終わったんかい、日本。。。
やっぱ、電光掲示板も、オーストラリア戦がショックだった??

で、これって、バグ?やっぱ。

修正コストが大きいから、このまま残したのかなあ。。

それとも、駅員だれも気付いてない?

もし、駅員が、わざとやっているんだとしたら、「ナイス!駅員」賞でも、

あげたいくらいの逸品だ(そんな賞は、ない)



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ドワンゴのRSSを使って、着うた着メロの、ある歌手の新着情報を抽出する方法

2006-06-15 16:32:06 | Weblog

前に書いた、着メロのドワンゴのRSSを使って、misono自動抽出計画!

まず、ドワンゴのRSSの種類
(これ以外にもあるかも。とりあえず目に付いて分かったもの)

 いろメロニュース http://dwango.jp/index.php/m/rss/a/rss?key=iromelonews
 新着曲情報 http://dwango.jp/index.php/m/rss/a/rss?key=newrelease
 着うたランキング http://dwango.jp/index.php/m/rss/a/rss?key=ranking_uta
 着メロランキング http://dwango.jp/index.php/m/rss/a/rss?key=ranking_melo

で、このうち、下の3つ(新着曲情報、着うたランキング、着メロランキング)は、linkのところにURL,タイトルのところが

  順位や歌のタイトルなど / 歌手名

のフォーマットになっているように見える。

 したがって
・itemごとに配列に入れて
・各要素ごとにlinkとtitleをとってきて
・titleの / のところをさがしてきて、そこから後ろを歌手名としたときに
・おきにいりの歌手だったら、それを表示

で、お気に入りの歌手チェックができそうだ。
問題は、ここの歌手名なんだが、おねーさんは、着メロランキング1位になっていたので、歌手名は明らかなのだが、misonoさんは、半角のmisonoでいいのかどうか不明。

ELTは、新着情報に

 ハイファイ メッセージ / Every Little Thing

ってかいてあったので、半角文字でEvery Little Thingのようだ。

 いじょう、どわんごRSS調査でした。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

BREWのRSSリーダーっていうのがあれば、面白い展開ができるよね。きっと

2006-06-15 15:35:05 | Weblog

 RSSリーダーのケータイ版として、ECR RSSリーダーっていうのがある。でもDocomo版だ。

 BREWのRSSリーダーがあるとおもしろいかも。。

 BREWの場合、Webアクセスするには、

(もちろんシュミレーターだと、特権のところのwebアクセスにチェックとか、127.0.0.1の場合、Socketの指定を書き換えてとか、そーいう話は置いておいて)
基本的に、
・IWeb生成して、
・ISourceUtil生成して
・ISOURCEUTIL_SourceFromMemoryして
・CALLBACK_Initで、戻り先を指定したら
・IWEB_GetResponseでRSSのURLにアクセスすると、

CALLBACK_Initの戻り先に帰ってくるから、そこで
・ IWEBRESP_GetInfoして
結果を受け取れば、RSSの値は取得できると。

そしたら、あとはDomとかなくても、<item>のところをSTRSTRで探し出し、そこから</item>までのあいだにあるlinkタグ、titleタグを探し出して、表示すればOK。

 表示して選択されたら、フルブラウザを立ち上げて表示するもよし(って、連携できんのかなあ。。そもそもフルブラウザって、でてたかなあ?auの。。。)場合によっては、IHtmlViewerで一部のタグしか対応してないけど、それで表示するってこともありかもしんない。

(もっと裏技チックにやると、サーバーで、HTMLで表示した場合の画像を生成して、その画像を見れるようにするって言う手とかもあるんだけどさ。さらに元も子もない話すると、べつにWeb版でやれば、ケータイも、なにも、関係ないっていう話もあるんだけどさ)。




 ってことで、技術的に、ある程度は、できそうだ。

 で、そーすれば、暇つぶしにYOU TUBEのRSSからYOU TUBEが見れるって事だけじゃなくって、ドワンゴもRSSを出しているので、着メロとかの取得にいいかも。。

 ってことで、ドワンゴのRSSで、misono自動取得大作戦となるが、これはavexより簡単そうだ。先に、こっち書くかも

(自分へのメモ ドワンゴの着メロ新着情報のRSS )


 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RSSにXSL指定で、画面デザインを書いておくと、RSS発行だけでWebページができるね!

2006-06-15 14:45:04 | Weblog

 なるほどね!
 今、avex netのRSSをみて、ELTとmisonoの情報だけを取り出す方法(おねーさんの情報は、いらない ^^;)を検討しているのですが、そこで気づいた!

 avexには4つのRSSがある(詳しくは、今度書く)
で、そのうちの1つ、avex アーティスト情報のRSSをみてみましょう

ここ 
avex アーティスト情報
http://rss.avexnet.jp/rss/avex_1.xml


え、XMLの画面じゃないじゃんって、そう、そーなんですよ
普通RSSって、ここ(リンク先はYAHOOのニュース)のように、ブラウザで見るとXML表示される。
 しかし、AVEXのRSSは、普通のページにみえる。

どーもカラクリは、こういうことらしい。
そのXMLのソースの上のほうだけ引用すると

<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet href="/image/rss2_f.xsl" type="text/xsl" media="screen"?>
<rss version="2.0">
    <channel>
        <title>avex アーティスト情報</title>
        <link>http://avexnet.jp/</link>
        <description></description>
        <ttl>360</ttl>
        <generator>editCruiser</generator>
        <ecruiserDocUrl>http://avexnet.jp/RSS/</ecruiserDocUrl>
        <ecruiserAddFeedUrl>http://rss.avexnet.jp/rss/avex_1.xml</ecruiserAddFeedUrl>
        <item>
            <title>AAA 8th シングル『ソウルエッジボーイ/キモノジェットガール』7/19発売決定!!</title>
            <link>http://avexnet.jp/news/060613/001AAAXX.html?ecruiser=5_64587</link>
            <pubDate>Wed, 14 Jun 2006 04:00:06 +0900</pubDate>
            <description></description>
        </item>

(上記< > は本当は半角)

 つまり、XSLで、RSSのXMLについて、画面デザインのレイアウト指定をしてしまっているため、RSSを発行すれば、ブラウザで見たとき、ちゃんとWebページの形にしてくれるってわけ。

にゃーるほど、あったまいい!

って、これが普通なの(^^;)

ということで、misono自動収集(おねーさんの情報はいらん)は、続くのであった
(世間一般では、おねーさんの情報のほうが欲しいと思うが)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ExcelマクロでXMLを読み込む方法(RSSを読み込む場合を例に)

2006-06-15 09:48:38 | XML

 以前、YOU TUBEに追加された動画を、RSSから取得するためのExcelシート(マクロ)の作り方 というのを書きましたが、そこでの説明がなかったので、説明してみたいと思います。




■ExcelマクロでXMLを読み込む場合、参照設定が必要
 XMLのライブラリはデフォルトでリンクされているわけではないので、参照設定で、XMLのライブラリを追加する必要があります。

 XMLのライブラリは、Microsoft XMLというのなのですが、バージョンがいくつかあります。

 3.0は2000,XP,2003どれも入っています。今回は、3.0をリンクすればOKです(それ以上でももちろんOKです)。追加の仕方は、上記リンク先を見てください。




■マクロの概要
 マクロでやることは、以下のことです
(1)XMLファイルの読み込んで、必要なところを切り出す
(2)切り出した内容の書き出し
(3)タイマーをかけて一定時間たったら、再度メソッド実行

 マクロのソースはここにありますが(文字化けしたら、シフトJISを指定してみてください)
 (1)は、RSSRead()の「RSS読み込み」の部分で行っています
 (2)は、writeItemでやっています
 (3)は、RSSRead()の「次の時間まち処理」の部分で行っています
 なお、ボタン1をクリックされると、「ボタン1_Click」にはいるように設定しています。
 そこからRSSRead()に入るようになっています。

今回、(2)は、XMLとは関係ない、Excelの書き方の部分なので、今回は、(1)と(3)について説明します。




■ExcelマクロでのXMLの読み方

XMLを読んでいる部分は、こんなかんじです。

    Dim xdoc As New DOMDocument
    Dim itemlist As IXMLDOMNodeList
    Dim node As IXMLDOMNode
    Dim url As String
    Dim i As Integer
    Dim addURL As String
    Dim addTitle As String
    

'(中略)

    '/*=========================*/
    '/*     RSS読み込み      */
    '/*=========================*/
                '   データを取ってくる
    xdoc.async = False
    xdoc.Load (url)     '   ここは、引数をStringに入れておかないとエラーになる
    
                '   itemタグを全員集合させる
    Set itemlist = xdoc.getElementsByTagName("item")
    sosa_sh.Range("C6") = "読み込み終了:" & CStr(itemlist.Length) & "件"
    
                '   各itemに対して、書き出し
    For i = 0 To itemlist.Length - 1
        addURL = itemlist(i).selectSingleNode("link").nodeTypedValue
        addTitle = itemlist(i).selectSingleNode("title").nodeTypedValue
        Call writeItem(addURL, addTitle)
    Next



一番初めに、DOMDocumentクラスの変数(ここではxdocに対して、

xdoc.async = False

と入れます。asyncにFalseが入っていると、読み込み終了後、次の処理をします。
trueだと、読み込みが終わんなくても、次の行に行ってしまいます。
なのでfalseにします。
実際読み込むのは

xdoc.Load (url)

です。
 なお、urlは、ローカルのファイルでも、http://のネット上のファイルでも、どちらでもOKです。あらかじめ文字列にいれておきます(すみません、そこは省略してます。もしきになったら、リンク先のソースコードを見てください)。文字列に入れておかないと、エラーになってしまいました。




 で、これで、読み込んできますので、ここで、
・レコードに該当するタグを検索して、各レコードを取得する
・レコード数分、必要な内容を取得して、書き出す

ということをします。今回のRSSの場合は、itemタグ(これが、レコードに対応するタグ)の中に入っている、linkとtitle(という項目)を取り出したいので、、

・getElementsByTagNameで、itemを指定し、レコードに相当するノードのリストを取得します。

で、レコード数分=ノートリストの個数分、

・必要な内容である、linkとtitleを取り出しwriteItemで書き出します。

このとき、getElementsByTagNameはノードに対して、使えなかったので、selectSingleNodeを使ってます。また、値の取得は、nodeTypedValueでやってます(他にも、取り出し方はありますが)。




■時間まち処理

時間まち処理をしている部分は、こんなかんじです。

    Call Application.OnTime(Now + TimeValue("00:" & Format("99", intv) & ":00"), "RSSRead")

   
Application.OnTime(時間,呼び出す関数)で、その時間が来ると、「呼び出す関数」を呼び出します。今回は、繰り返したいので、自分の関数を呼び出してます。

ちなみに。。。 Call Application.OnTime(Now,次の呼び出す関数)とやると、その関数を産後まで終了した後、すぐに「次の呼び出す関数」を呼び出します。




と、説明は、こんなかんじとなります。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする