読者です 読者をやめる 読者になる 読者になる

先日のgreasemonkey

■本日の変更点
<ランキングへの各種数値表示>
 各カテゴリのランキング詳細ページに、再生数、コメント数、マイリスト登録数の表示を再開しました。
また、ニコニ広告で宣伝された動画には、宣伝ポイント数も表示しています。
本日の変更点 ~要望掲示板ご意見より~‐ニコニコインフォ

ということで不要になりました。
でもこういうgreasemonkeyをさくっと書けると楽しいな。
これからもいろいろやってみよう。

ニコニコ動画(9)でランキングに再生数などを表示させるgreasemonkey

ニコニコ動画がバージョンアップして(9)になり、数多くの仕様変更がありました。
ランキングもその一つで、個々の動画の再生数などが表示されなくなりました。
カテゴリ合算 毎時 総合ランキング -ニコニコ動画:GINZA
今まで通りの仕様の方がいいなぁと思ったので、greasemonkeyを書いてみました。
UTF-8で保存すれば、文字化けしないようです。
JavaScriptって面白い、一応これで動いたけど大丈夫だろうか。

// ==UserScript==
// @name           nicovideo_show_counter
// @namespace      http://www.nicovideo.jp/
// @include        http://www.nicovideo.jp/ranking/*
// ==/UserScript==
function Showdata(videoid, item){
	GM_xmlhttpRequest({
		method: 'GET',
		url: 'http://www.nicovideo.jp/api/getthumbinfo/' + videoid,
		onload: function(response){
			var text = response.responseText;
			var view = text.match(/<view_counter>(\d+)<\/view_counter>/)[1];
			var comment = text.match(/<comment_num>(\d+)<\/comment_num>/)[1];
			var mylist = text.match(/<mylist_counter>(\d+)<\/mylist_counter>/)[1];
			var html = '<br>再生:<strong>' + view + '</strong> コメント:<strong>' +
			                  comment + '</strong> マイリスト:<strong>' + mylist + '</strong>';
			item.innerHTML += html;
		}
	});
}

var items = document.getElementsByClassName('thumb_frm');
for(var i=0; i<items.length; i++){
	var videoid = items[i].getElementsByClassName('video')[0].href.split('/')[4];
	var item = items[i].getElementsByClassName('font12')[0];
	Showdata(videoid, item);
}

Python3.1が出ていた

Python 3.1 Release | Python.org
What’s New In Python 3.1 — Python 3.4.3 documentation
変更点については

が参考になりました。
浮動小数点の表現アルゴリズムが変わったというのは、浮動小数点の内容は変化せず
repr()関数の挙動が変わった、という理解でいいのでしょうか?

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> repr(float(1.1))
'1.1000000000000001'
>>> str(float(1.1))
'1.1'
>>> 

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> repr(float(1.1))
'1.1'
>>> str(float(1.1))
'1.1'
>>> 

"David Gay’s algorithm"については検索すると、RubyのMLが引っかかりました。
[ruby-dev:31539] strtod の精度
ここに書いてある丸めの挙動をPythonでも試してみると

Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> format(36893488147419107329, '21.0f')
' 36893488147419111000'

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> format(36893488147419107329, '21.0f')
' 36893488147419111424'

という結果になりました。

ロシアの海賊死傷ツアーって本当?

このツアーは1日約55万円の参加費を払い、海賊が多くいるといわれているソマリア海域を巡回します。こちらからは攻撃しませんが、少しでも海賊がツアー船を攻撃したら最後。ツアー船に乗船している乗客たちのバズーカ砲やライフル、グレネードランチャー、マシンガン、散弾銃、ロケットランチャーなどが海賊たちに向かって火を噴きます。
ロシアで海賊を “合法的に死傷させる” ツアーが問題に | ロケットニュース24

この記事は本当なの?とはてなブックマークでも言われていて、気になったので検索してみました。

Latest Webhosting News

ロシア発、海賊退治ツアー発売 » | がらくたGalleryのエントリからのリンクです。
このAnanovaの記事内容が上のロケットニュースの内容と殆ど一致するので、
恐らくこれを翻訳したのではないかと思います。
Ananovaの記事内ではオーストリアWirtschaftsblatt紙が報じたと書かれていますが
オーストリア語が翻訳検索使ってもよくわからず、そこでどう報じられていたのかは見つけられませんでした。
ロケットニュース←Ananova←Wirtschaftsblatt紙という流れのようです。

http://www.tothepointnews.com/content/view/3617/85/

ソマリアアドベンチャークルーズ | kazuhixの日記 | スラドでこのサイトを見つけました。
ロケットニュースで紹介されているツアーと同一かどうかは不明ですが、出発地とかは合っているんですよね
参加者の感想で「私は海賊3人、妻は2人倒したよ、12歳の息子はミニガンでボートを2隻沈めた」など書いてあったので
正直ネタじゃないの?と思っていました。上のカテゴリに"Humor File"なんて入ってますし。
追記
はてなブックマーク - 痛いニュース(ノ∀`):ロシアで海賊を “合法的に死傷させる” ツアーが問題にのコメントで
>>K1tten http://www.somalicruises.com/ hoaxだと推測。ヴァイラルマーケティングの一種? 2009/06/29

TrackPointの設定

サスペンド後に速度と軽さの設定が消えてしまうのに対処。
/etc/pm/sleep.d/00trackpoint-setting

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        echo -n 150 > /sys/devices/platform/i8042/serio1/speed
        echo -n 200 > /sys/devices/platform/i8042/serio1/sensitivity
        ;;
    *)
        ;;
esac

サスペンドスクリプト解説は
http://en.opensuse.org/Pm-utils
が分かりやすかったです、UbuntuじゃなくてSUSEだけど。

Ubuntu9.04をX40にインストールしたメモ

8.10と同様、インストール自体はすんなりと完了。

無線LAN

ath5k_pciによって自動認識され、接続も出来るもののよく切れて不安定。
linux-backports-modules-jauntyをインストール後再起動でath5kによって認識され、安定して動作するようになった。

TrackPoint

http://www.thinkwiki.org/wiki/How_to_configure_the_TrackPointを参考に
/etc/hal/fdi/policy/mouse-wheel.fdi


true
2
4 5
6 7
true
200

/etc/pm/config.d/01reload_mouse

# reload psmouse to reactivate trackpoint scrolling
SUSPEND_MODULES="${SUSPEND_MODULES:+$SUSPEND_MODULES }psmouse"

これでTrackPointの中ボタン使ってのスクロールが有効になる。
8.10の頃にあったサスペンド後に使えなくなるのは直った模様。
sysfsutilsをインストールしてから

echo -n 150 > /sys/devices/platform/i8042/serio1/speed
echo -n 200 > /sys/devices/platform/i8042/serio1/sensitivity

で速度と軽さを指定、この設定はサスペンド後に消えてしまうので
自動実行させる方法を調べようと思う。

.recvfrom

socket.recvfrom()で返ってくるアドレスがおかしい? - 手をよく洗いましょうの続き
どうもsocketの使い方がおかしかったらしい。
recvfromは基本的にUDPで使うものとのこと
日本麻酔科学会関西地方会 Yoshifumi Tanaka参照
TCPでconnectしたソケットはgetpeernameで接続先情報を拾える

Python 2.6.1 (r261:67517, Dec  4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.connect(('www.google.co.jp', 80))
>>> address = s.getpeername()
>>> s.sendall('GET / HTTP/1.0\r\n\r\n')
>>> data = s.recv(8192)
>>> print address
('66.249.89.147', 80)
>>>