2017-04

Latest Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AmazonのHTMLが変わってる

ので、Amazon Kinokuniya Linkyを書き換え。今更だけど。
Amazon Kinonavi Linkyのみupdateします。
新規店も追加。

どう変わったかはここ参照。
<b class="sans">が書名以外のところにも使われるようになっていた。
mixiのデザインリニューアルに関して否定的な意見が多い中、HTMLソースはclassやidが指定されて良くなった、とのがあったが、Amazonは逆行してるんじゃないか。
というかXPathを勉強しろってことか?
スポンサーサイト

アマゾンハック

昨日見つけたアマゾンハック「ぼくばな1号」という本がAmazon.co.jpに出ている。著者名が「ぼくが作ったった」だったりイメージが出鱈目だったり、はまちやさんのような遊び心にあふれたハックである。
どうなっているのかな、と思って調べてみると、検索にもひっかかるのでXSSの類ではないことが分かる。大阪屋書協のデータベースには登録されていない。Amazon.co.jpに直接登録されている。
そしてISBNが9784862390356(4-86239-035-8)というのは、出版社記号86239はボイジャー
ボイジャーというとT-Timeで電子書籍をやっているところだ。で、そのボイジャーがドットプレスというオンデマンドで自費出版なサービスをやっている。ここを読むとISBN採番すると書いてある。
つまり自費出版でISBNを取っている。この本なんかと同じ。また日販へ持ち込めれば登録もされる。Amazonへの登録もISBNがあれば可能だろう。e託販売サービスを使った場合、在庫なしで予約受付というのが可能とは思えないが、ボイジャーの協力があるのか交渉次第なのか。
(5/28追記:e託販売サービスで予約商品も出品可能だ。)

ええとつまり、ハックには違いないが、はまちちゃんのようなハックとは違う。本は、既に実在する。内容は明らかにされていない。予約している人がいて売買が成立する可能性がある。
その後、実物の写真が出ているし、コメント欄でほぼ種明かしに近い発言もある。
たとえISBNを取っていても、在庫がなかったり内容も確認できないとリアル書店では扱いづらい。素直に理想書店でオンデマンド販売していたのではなかなか部数は見込めないだろう。そういった意味では面白い試みである。しかし、目標部数に達しないので刷りません/予約キャンセル、となってしまったら、そして追随が可能だとしたら、Amazonが低コスト低投機性出版活動の場≒復刊ドットコムたのみこむになってしまうような。Amazonはそれでいいのかな。

id:kotorikotorikoさんといえば、少し前に人力検索はてなでイレギュラーだけど回答をした。下調べだったのか何だったのか不明だけど、ここはひとつ予約受付状況を公開してもらって、AmazonRankViewerの推移と比較してランキング基準が明らかにできると嬉しい。

Amazon Rank Viewer障害 「Fatal error 'No current thread.」

Amazon Rank Viewerだが、17日くらいから巡回に失敗している。
気付いてちょこちょこと修正してみたのだが、毎回失敗する。
途中で

Fatal error 'No current thread.
' at line 323 in file /usr/src/lib/libpthread/thread/thr_sig.c (errno = 0)
Fatal error 'No current thread.
' at line 323 in file /usr/src/lib/libpthread/thread/thr_sig.c (errno = 0)
Fatal error 'No current thread.
' at line 323 in file /usr/src/lib/libpthread/thread/thr_sig.c (errno = 0)
Killed


となって止まってしまう。
Rubyのスレッドじゃない。FreeBSDの。
ぐぐっても情報がほとんどない。似た話でlinuxthreadにすると直ったなんて話があるが手が出ないし。
クロールするISBNが増えすぎたせいか? ちゃちな作りであるのは確かなんだけども。

苦肉の策で、クロール対象一覧をリセット。ご勘弁。
過去のランクデータは残る。クロールは12時間ごとにする。1ヶ月以上閲覧されない商品はクロール対象から外すコードも入れた。

[ARV] 開始日設定

Amazon Rank Viewerに表示開始日の設定を付けた。デフォルトで30日前から30日分を表示する。
開始日は変更可能。
http://worris3.sakura.ne.jp/arv/view.cgi?isbn=9784061498709&start=20070115
PubLineと同じように発売直後からの動き、というのをやりたいけど、登録されないとデータを取得していないのでできない。予約時から同じようにランキングに組み込まれていたりするし。

空文字列を与えると全データを表示。
http://worris3.sakura.ne.jp/arv/view.cgi?isbn=9784061498709&start=
パラメータそのものがないと直近30日分を表示する。
http://worris3.sakura.ne.jp/arv/view.cgi?isbn=9784061498709

[ARV] mingplotで対数グラフ

宿題に手を付けてみる。

Y軸を変えるのは、最小値の取り方でちょっとひっかかったけど、すんなり行った。
数字の表示が下の方で密集して見えなくなるのも、もうちょっと工夫が必要だけど、なんとか処置した。
http://worris3.sakura.ne.jp/arv/view.cgi?isbn=9784022731227&log=1

と思って本番環境に持っていったら、一部ISBNでグラフが出ない。
http://worris3.sakura.ne.jp/arv/view.cgi?isbn=9784774130422&log=1
failed assertion (MingError)とか言ってる。
よく見たら、せぐふぉめしてる。[BUG] Segmentation fault
お手上げします。


class MingChart
def convert_y (y, side)
if side == :left
y_min = @left_y_min
y_max = @left_y_max
else
y_min = @right_y_min
y_max = @right_y_max
end
raise if y < y_min or y > y_max
y_diff = Math.log10(y_max) - (y_min==0 ? 0 : Math.log10(y_min))

if (side == :left and @left_y_direction == :upside_down) or
(side == :right and @right_y_direction == :upside_down)
begin
(y_diff - (Math.log10(y_max) - Math.log10(y))) * (@y_length / y_diff) + @canvas_y_margin
rescue
(y_diff - Math.log10(y_max))*(@y_length / y_diff)+@canvas_y_margin
end

else
(y_diff - (y - y_min)) * (@y_length / y_diff) + @canvas_y_margin
end
end

def adjust_scale (min, max)
diff = max - min
raise if diff == 0

n, m = Math.frexp10(diff)
diff2 = (n * 10).round.to_f # 10-99

ndivisions = nil
interval = nil
[20, 10, 5, 2].each {|divider|
tmp = diff2 / divider
if (tmp >=16 and tmp < 64) or divider == 2
ndivisions = tmp.ceil
interval = (divider * 10 ** (m - 1)).to_f
break
end
}

adjusted_min = (min / interval).floor * interval
adjusted_max = adjusted_min + interval * ndivisions
while adjusted_max < max
adjusted_max += interval
ndivisions += 1
end
float_p = if interval.floor != interval then true else false end

raise if adjusted_max < max
raise if adjusted_min > min
return ndivisions, adjusted_min, adjusted_max, float_p
end

def add_scaleline (n, at, float_p)
string=''

text, width, height = create_text(string, @scale_text_color, @scale_font_size)
if at == :bottom
x_margin = - width / 2
y_margin = height + @scale_margin
xx = convert_x(n)
yy = @canvas_height - @canvas_y_margin
else
if at == :left
x_margin = - width - @scale_margin
xx = @canvas_x_margin
else
x_margin = @scale_margin
xx = @canvas_width - @canvas_x_margin
end
y_margin = height / 2
yy = convert_y(n, at)
end
line = SWFShape.new
line.set_line(@scale_line_width, *@scale_line_color.to_a)
line.move_pen_to(xx, yy)
if at == :bottom
line.draw_line(0, -@scale_line_length)
else
line.draw_line(@scale_line_length, 0) if at == :left
line.draw_line(-@scale_line_length, 0) if at == :right
end
@movie.add(line)
end


def add_scales
add_x_scale(@x_min, @x_float_p)
@x_nscales.times {|i|
x = @x_min + ((@x_max - @x_min).to_f / @x_nscales) * (i + 1)
add_x_scale(x, @x_float_p)
}

if @left_y_min and @left_y_max
add_y_scale(@left_y_min, :left, @left_y_float_p)
@left_y_nscales.times {|i|
y = @left_y_min +
((@left_y_max - @left_y_min).to_f / @left_y_nscales) * (i + 1)
if i < @left_y_nscales/4 or (i%8==0)
add_y_scale(y, :left, @left_y_float_p)
else
add_scaleline(y, :left, @left_y_float_p)
end

}
end

if @right_y_min and @right_y_max
add_y_scale(@right_y_min, :right, @right_y_float_p)
@right_y_nscales.times {|i|
y = @right_y_min +
((@right_y_max - @right_y_min).to_f / @right_y_nscales) * (i + 1)
if i < @right_y_nscales/4 or (i%8==0)
add_y_scale(y, :right, @right_y_float_p)
else
add_scaleline(y, :right, @right_y_float_p)
end
}
end
end

end


MingChart.newする時にパラメータを与えるんじゃなくてメソッド上書きしちゃってるけど。

ちなみにFlashの中身だけをJavaScriptで書き換えることはできないのかな。imgみたいにsrc=で。ここによるとできないってことでいいのか。

«  | HOME |  »

移転しました。

ブログ引っ越しました。
無用の科学あるいは錬金術

 

株価情報

 

最近の記事

最近のコメント

 

最近のトラックバック

月別アーカイブ

カテゴリー

RSSフィード

ブログ内検索

 

なかのひと

 

ヘビーローテーション

 

 

リンク

広告

 

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。