TransFreeBSDの日記 このページをアンテナに追加 RSSフィード

2006-02-19

[][]はてなグラフで1月分のデータをまとめて消すbookmarklet はてなグラフで1月分のデータをまとめて消すbookmarklet - TransFreeBSDの日記 を含むブックマーク

1ヶ月ほど前、はてなグラフに多量のゴミデータを送ってしまった*1。しかし、あまりに量が多いので1日毎に消していくなんてやってられない。というわけで、スクリプトか何かで一気に消してしまおうと思いつつ放置していたが、今日ようやく実行。最初はperlで、とか思っていたけど、せっかくなのでJavaScriptの勉強がてらbookmarkletにしてみた。*2

javascript:var postdata=new Array(); function NextDelete(){ if(xmlhttp.readyState==0||xmlhttp.readyState==4){ if(postdata.length==0){ window.location.reload() }else{ xmlhttp.open('POST','./update',true); xmlhttp.onreadystatechange=NextDelete; xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(postdata.shift())} } } if(confirm('この月を削除します。よろしいですか?')){ for(var i=3;i<rows+3;i++){ postdata.push('mode=delete&date=' +document.getElementById('0-'+i+'-value').innerHTML +'&rkm='+rkm)} NextDelete() } undefined;

一応整形したコードも。

javascript:
var postdata = new Array();
function NextDelete() {
  if (xmlhttp.readyState == 0 || xmlhttp.readyState == 4) {
    if (postdata.length == 0) {
      window.location.reload();
    }else{
      xmlhttp.open('POST', './update', true);
      xmlhttp.onreadystatechange = NextDelete;
      xmlhttp.setRequestHeader('Content-Type',
        'application/x-www-form-urlencoded');
      xmlhttp.send(postdata.shift());
    }
  }
}
if (confirm('この月を削除します。よろしいですか?')) {
  for(var i=3; i<rows+3; i++) {
    postdata.push('mode=delete&date='
        + document.getElementById('0-' + i + '-value').innerHTML
        + '&rkm=' + rkm);
  }
  NextDelete();
}
undefined;

最後のundefinedはいらないかも知れない。そのた、なれてないので変な作りになっているかも。添削していただけるとありがたい。

*1:送ったCSVファイルに年が入っておらず、去年の部分が今年とみなされてしまったため

*2はてなにはbookmarkletは貼れないのかな?

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20060219

2005-08-28

[][]総選挙はてな出来高推移 総選挙はてな出来高推移 - TransFreeBSDの日記 を含むブックマーク

ここの所こもってこんなことやってました。

TransFreeBSDの自民党出来高と民主党出来高と公明党出来高と共産党出来高と社民党出来高と無所属出来高と平和党出来高と自由連合出来高と国民新党出来高と新党日本出来高

とか、

総選挙出来高

とか。

出来高だけじゃなくその他も色々作ってみました。

graph:id:TransFreeBSD

というか作りすぎ。現在グラフが63個。まぁ、真っ当な使い方じゃないから操作性が落ちても文句はいいませんけど。

値の取得などは先日のスクリプトの流用で、ユーザとかアイデアの売買履歴取得部分はモジュールにしてある。

評価額に関しては現行のはてなの30分ルールは適用してなくて、昔の一番最新1件で決める方法、つまりその日の終値を前日と比較した値となってる。

本当は株価を日足のように始値終値、最高、最低が表示できるとそれっぽいのだけどね。

そしてこれをアイデア全体の合計で求めるとまた面白そうではあるが、なんせ5000以上あるからなぁ。それだけのページを取得するのはちょっと気が引ける。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20050828

2005-08-16

[][]はてなアイデアの評価額履歴を計算 はてなアイデアの評価額履歴を計算 - TransFreeBSDの日記 を含むブックマーク

夏休みスクリプト第2弾と言うにはかなり泥臭い方法で、これまでのはてなアイデア評価額履歴を計算してみた。

履歴を計算するには、自分の取引履歴と、過去に保持した事のあるアイデアの取引履歴と、そのアイデアに関与した全ユーザの取引履歴を取得して、そこから順に取引を追っていく。と、書けば短いが、あまり取引の多くない私でも45アイデア54ユーザから985ページのHTMLを取得してパース、約17,000の履歴からたどる事になった。でも、これらはほとんどが自分が株をもっていない間の関係ない取引だったりする。あんまり良くない方法だよな。

とか言いつつもデータを取得してグラフを作ってみると、やっぱりはてな表示の評価額と手元計算の評価額がずれていた。

TransFreeBSDの評価ポイント@ideaとTransFreeBSDの評価ポイント推定とTransFreeBSDの残りポイント

そんなわけで下記の2つのアイデアを購入した。

idea:4499

はてなアイデア - 「評価」のポートフォリオの数値が「ポートフォリオ」の評価額の合計になっていない。

idea:2991

はてなアイデア - 各要望ページにアイデア株の売買の記録が残るが、株数だけでなくそのときの売買価格(1株当たりの単価)も表示してほしい。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20050816

2005-08-08

[] はてなリベンジ  はてなリベンジ - TransFreeBSDの日記 を含むブックマーク

昨日、縦というか普通の方向のはてなマーク生成時の挙動がおかしく、バグ臭いといっていたけど、やっぱりバグだった。というわけで修正してリベンジ

TransFreeBSDのhatena0とTransFreeBSDのhatena1とTransFreeBSDのhatena2とTransFreeBSDのhatena3とTransFreeBSDのhatena4

一応出来たけど形がいびつなのは元画像*1アルゴリズムの両方のせい。もう少し精進が必要。

で、精進のためにローカルな表示環境を、と思ってgnumeric入れようとしたけど、エラーが出てconfigureに失敗。良くわかんないけどおいておこう。あれならGDとかで書かせても良いし。

*1:8/13元画像から作り直した

kenbot3kenbot32005/08/08 23:27はじめまして。はてなグラフアート(って言うのかな?)の自動生成、凄いですね。私もプログラムが書ければいいんですが、Excelでポチポチやってます。
先ほどあっぷしましたが、私も「はまぞう」が完成しました!ちなみに私の場合は Excel上 でグラフにして確認しています(笑)もっとも、表示のアルゴリズムが違うからか、実際にアップするとイメージが微妙に違って困るんですけど。
プログラムがさらに発展するのを楽しみにしています!では。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20050808

2005-08-07

[] はてな(横向き)  はてな(横向き) - TransFreeBSDの日記 を含むブックマーク

はてなグラフにタグが付いたので見て回ってたらjokeというタグ

HEAD

というのを発見。最初はなんだろう?と思ってたのですが、kenbot3のBODYとHEADということのようです。作られたのはd:id:kenbot3さん。手書きで今ははまぞうに挑戦中のようです。

この重ね合わせってのはなるほどと思った。たくさん重ねればもっと複雑なのも出来るでしょう。でも手書きじゃしんどい。

そんなわけで自動生成。日曜プログラマにはちょうど良いお題と、簡単に考えて取り掛かったのだけれど、作ってる最中に複雑な絵で描画パス=グラフ数を減らすにはそれなりのアルゴリズムが必要なことに気が付く。

そんなわけでパス最適化は今週のお題にとっておいて、今日の所は簡単なはてなマーク、しかも横向き画像で(いや、元は縦なんだけどそれが横向きに生成されるもんで)基本部分の動作チェック。何とか出来る。

TransFreeBSDのyokohatena0とTransFreeBSDのyokohatena1とTransFreeBSDのyokohatena2

でも縦向きにしようとしたら9パスとかなってまだバグ臭いんですけどね。

さて、以下は自分メモ。

生成過程の概略は、まず、元画像はgimpでモノクロ画像を作ってpngで保存。それをnetpbmによりplain asciipbm形式に変換後、perlで変換する。

% anytopnm hatena.png | pamditherbw | pamtopnm -plain | perl mkgraph.pl yokohatena > hatena.csv

perlでやってるのは、

  1. 1ラインずつ読んで白黒の境の位置を出して、それを黒部分の両端の位置として保存
  2. 隣のライン同士で繋がってる黒部分をリンクさせる
  3. リンクした塊がそれぞれのパスなので、端から日付を生成しながらリンク毎にグラフとして出力

そんな所。今は3パス、リンク生成は1パスだけど、結合・分岐をうまく処理するのにもう1パス、さらに結合・分岐が多い場合は最初のパスで付加情報を作ったり先読みしたりする事も必要かな?

あと、繋がってなくても近くてパスが減るような場合はつなげちゃう処理とかも必要かも。

トラックバック - http://freebsd.g.hatena.ne.jp/TransFreeBSD/20050807