「Name」を含む日記 RSS

はてなキーワード: Nameとは

2009-01-16

面倒くさくなった

// ==UserScript==
// @name           anond
// @namespace      http://anond.hatelabo.jp/
// @include        http://anond.hatelabo.jp/?page=*
// ==/UserScript==
function anond(doc) {
    $X(".//div[@class='section'][.//h3/a[2][starts-with(@href, 'http://anond.hatelabo.jp')]]", doc, Array).forEach(function(node){
        node.style.display = "none";
    });
    $X(".//h3/a[1]", doc, Array).forEach(function(node){
        var a = document.createElement("a");
        a.name = node.pathname;
        a.href = "#" + node.pathname + "/footer";
        a.innerHTML = "V";
        node.parentNode.insertBefore(a, node);
    });
    $X(".//p[@class = 'sectionfooter']/a[1]", doc, Array).forEach(function(node){
        var a = document.createElement("a");
        a.name = node.pathname + "/footer";
        a.href = "#" + node.pathname;
        a.innerHTML = "^";
        node.parentNode.insertBefore(a, node);
        node.parentNode.insertBefore(document.createTextNode(" | "), node);
    });
}

anond(document);
if (AutoPagerize.addDocumentFilter)
    AutoPagerize.addDocumentFilter(anond);


// by http://lowreal.net/blog/2007/11/17/1
// $X(exp);
// $X(exp, context);
// $X(exp, type);
// $X(exp, context, type);
function $X (exp, context, type /* want type */) {
    if (typeof context == "function") {
        type    = context;
        context = null;
    }
    if (!context) context = document;
    var exp = (context.ownerDocument || context).createExpression(exp, function (prefix) {
        var o = document.createNSResolver(context).lookupNamespaceURI(prefix);
        if (o) return o;
        return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : "";
    });

    switch (type) {
        case String:
            return exp.evaluate(
                context,
                XPathResult.STRING_TYPE,
                null
            ).stringValue;
        case Number:
            return exp.evaluate(
                context,
                XPathResult.NUMBER_TYPE,
                null
            ).numberValue;
        case Boolean:
            return exp.evaluate(
                context,
                XPathResult.BOOLEAN_TYPE,
                null
            ).booleanValue;
        case Array:
            var result = exp.evaluate(
                context,
                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                null
            );
            var ret = [];
            for (var i = 0, len = result.snapshotLength; i < len; i++) {
                ret.push(result.snapshotItem(i));
            }
            return ret;
        case undefined:
            var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
            switch (result.resultType) {
                case XPathResult.STRING_TYPE : return result.stringValue;
                case XPathResult.NUMBER_TYPE : return result.numberValue;
                case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
                case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                    // not ensure the order.
                    var ret = [];
                    var i = null;
                    while (i = result.iterateNext()) {
                        ret.push(i);
                    }
                    return ret;
                }
            }
            return null;
        default:
            throw(TypeError("$X: specified type is not valid type."));
    }
}

2009-01-09

Imager.ppdがみつからーん

prompt>ping ppd.develop-help.com

Ping request could not find host ppd.develop-help.com. Please check the name and

try again.

がちょーん

しかたがない、コンパイル挑戦とか苦労がとんでもなさそうだし、Image::Magicにしてみよ

【追記:って生き返ってるやんけppd.develop-help.com】

2008-12-31

うごメモはてな - ゆうたさんの作品のスター/コメントを集計してみた。スターの方はentry.json適当に処理して、コメントの方はHTML適当に処理した。

スター

  • otsune, 268492個
  • pi8027, 162445個
  • at_yasu, 98700個
  • hogelog, 54051個
  • hajimehoshi, 47608個
  • elim, 46433個
  • itkz, 46080個
  • hageatama-, 45507個
  • debedebe, 44846個
  • gamil, 40308個
  • kfujii, 31521個
  • utiliti, 29791個
  • tenkoma, 26116個
  • twainy, 25052個
  • IwamotoTakashi, 24912個
  • nakanohito1, 23075個
  • TKSK, 21982個
  • fellows, 20965個
  • kei-os2007, 20246個
  • mimimu8, 18117個
  • storz, 15364個
  • sumyun34, 15113個
  • yachimon, 13160個
  • takano32, 12600個
  • gebet, 11167個
  • YU-TA, 10113個
  • burenka, 9166個
  • shunirr, 8400個
  • nonki, 7777個
  • nishiohirokazu, 7359個
  • nonasu, 6877個
  • nvsofts, 6590個
  • mgkiller, 5813個
  • showyou, 5610個
  • VoQn, 5264個
  • kabawo, 3980個
  • tomoko-am, 3949個
  • suztomo, 3594個
  • z0rac, 2560個
  • Jug, 2222個
  • mainichiomoroh/@livedoor, 2083個
  • eigokun, 2043個
  • abeckham22, 1947個
  • solailo, 1893個
  • sakuragaoka, 1864個
  • everydaysongs, 1839個
  • wang-zhi, 1729個
  • n-styles, 1500個
  • notoriousBIG, 1281個
  • magicalhat, 1272個
  • lautenwerke, 1203個
  • Chaborin, 1193個
  • hubito, 1008個
  • Iketaki, 1000個
  • SUS430, 934個
  • rgfx, 887個
  • kudzu_naoki, 844個
  • mimizumo, 794個
  • BLOG15, 790個
  • Constellation, 765個
  • ykht, 755個
  • janus_wel, 672個
  • konekonekoneko, 663個
  • WiiAreTheWorld, 623
  • KoshianX, 608個
  • s68, 602個
  • fishingsenyou, 586個
  • shitu, 574個
  • hmori, 566
  • himeatball, 523個
  • Manaphy, 518個
  • lokivip, 512個
  • monato, 501
  • saitamanodoruji, 500個
  • mitz_777, 477個
  • shingo-07_05, 453個
  • v44c, 451個
  • kotorikotoriko, 406
  • hatayasan, 400個
  • asc_gamefreak, 395個
  • murakami_tak, 389個
  • takimo, 388個
  • hitagism, 380個
  • clownboy-zuzu, 380個
  • tsugo-tsugo, 374個
  • ssig33, 368個
  • mindblinds, 353個
  • tiiyuka0239, 351個
  • bootaro, 341個
  • coin0136, 339個
  • Blue-Period, 333個
  • jacoby, 323個
  • ayako666, 311
  • yoshitetsu, 301個
  • diary7, 294個
  • aznacc, 283個
  • AKIY, 280個
  • hayamiz, 279個
  • heiwaboke, 276個
  • snaka72, 272個
  • Sore_0, 271個
  • a_halka, 270個
  • wanderingdj, 266個
  • komatz, 261個
  • kaiteki61, 260個
  • Dokukinoko, 256個
  • s00516, 253個
  • chroju, 250個
  • kana-kana_ceo, 247個
  • izm_11, 246個
  • h_uchida, 239個
  • kawango, 236個
  • kikuchige, 232個
  • kiria25, 229個
  • sextremely, 223個
  • ngmkz, 221個
  • goinger, 210個
  • jingi469, 208個
  • jumboly, 202個
  • ktomotaka2, 201個
  • hkn, 200個
  • moeprj, 197個
  • u1koba, 193個
  • tks_period, 189個
  • kazuki253, 186個
  • Mizuhin, 185個
  • Trapezoid, 184個
  • kiku-chan, 184個
  • nolifeking, 183個
  • at_yuko, 180個
  • closer, 176個
  • Nijiko, 174個
  • disable, 169個
  • S0R5, 160個
  • re_niladmirari, 158個
  • minelayer, 150個
  • hirokidaichi, 148個
  • mochige, 148個
  • maritama, 146個
  • yocchan20, 144個
  • Dynagon, 140個
  • osicoman, 140個
  • jionsehu, 138個
  • cielomajin, 137個
  • fura, 136個
  • mind_of_siva, 133個
  • Marnier, 133個
  • kentahirai, 128個
  • mura-taiken, 128個
  • azurestone, 127個
  • okome_chan, 127個
  • hinemosu_notari, 126個
  • akira_srce, 126個
  • kurenaiiro, 125個
  • yoira, 120個
  • antipop, 120個
  • yuyarin, 120個
  • yaketa, 120個
  • to-r, 120個
  • MASSY, 120個
  • r_da, 119個
  • methane, 118個
  • wataken44, 116個
  • skatsuyama, 114個
  • fqu, 114個
  • sugar0101, 112個
  • hayashi311, 111個
  • wozozo, 110個
  • sidestepism, 106個
  • noreply, 101個
  • Horiuchi_H, 100個
  • digm, 99個
  • navecin, 99個
  • muumuuyoshi, 98個
  • cawther, 95個
  • pokutuna, 95個
  • siztsb, 94個
  • camelmasa, 94個
  • hagino_3000, 92個
  • kiichi55, 92個
  • moi5, 92個
  • yoshi1207, 92個
  • Lif, 91個
  • Trou, 89個
  • rui_rui_723, 88個
  • jinonjy, 86個
  • keitaro79, 85個
  • calbeecalbee, 84個
  • hiroaki777, 83個
  • nagakura_eil, 82個
  • emosei, 82個
  • teruyastar, 81個
  • papiko-07, 79個
  • gotorush, 78個
  • yoh596, 77個
  • abekameri, 77個
  • t-tanaka, 76個
  • yaa-at, 76個
  • ta-01, 75個
  • takmck, 74個
  • nori0620, 73個
  • Quecy, 73個
  • gimbuee, 72個
  • shin722, 69個
  • mnz, 68個
  • goyoki, 67個
  • okoppe8, 67個
  • pha, 65個
  • ArappoCaro, 63個
  • wonder_wonder, 63個
  • tsukamoto-hiroshi, 61個
  • kwkn555, 60個
  • ug_okada, 59個
  • ku-suke, 57個
  • dainamo1, 57個
  • wild-man, 57個
  • tacticslife, 57個
  • ksk-si, 56個
  • mitsukurina, 55個
  • Aroundight, 53個
  • sfujiwara, 53個
  • nekogusa9, 52個
  • nowokay, 52個
  • lliorzill, 52個
  • Luhi, 50個
  • terau, 50個
  • yusuke_f, 50個
  • mochikoAsTech, 48個
  • hashillaneye, 48個
  • RocRoc36, 46個
  • ppop, 45個
  • keroro-ex_99, 45個
  • makiton, 42個
  • platoronical, 42個
  • itochan, 42個
  • puyop, 40個
  • sagi-usagi, 39個
  • ocs, 39個
  • hachiuma, 38個
  • blurman, 38個
  • ken1-t, 36個
  • orangestar, 36個
  • so-cru, 34個
  • fuldagap, 34個
  • sekreto, 33個
  • veiros, 33個
  • kazuyacco, 31個
  • sibazyou, 30個
  • takatana-ka, 30個
  • oya03, 30個
  • duanxak, 29個
  • takeim, 29個
  • sansonO7, 28個
  • ShigeakiYazaki, 27個
  • killclock, 27個
  • sakoto00, 26個
  • menaguro, 26個
  • Metaphone, 25個
  • Pasta-K, 25個
  • parumo, 24個
  • zu2, 23個
  • ryo-chan1214, 23個
  • gouzou, 22個
  • k-ryoya, 22個
  • lbuki, 22個
  • javascripter, 22個
  • hitode909, 21個
  • andalusia, 19個
  • the48, 19個
  • uniuniko, 19個
  • frsh_mt, 18個
  • utrillo, 18個
  • nka, 18個
  • gandmu, 18個
  • upu, 17個
  • neoyta, 17個
  • yosshi-t, 17個
  • badending, 17個
  • hk1226, 17個
  • ihojin, 16個
  • kskmrmt, 16個
  • h_kenan, 15個
  • gaomu-rongli, 15個
  • FRAIL, 15個
  • ululun, 15個
  • kimzo, 15個
  • brick, 15個
  • xyobu, 14個
  • mykichi, 14個
  • nonasige, 14個
  • tomioka_hiroshi, 14個
  • emirichi, 13個
  • tsukitaro, 13個
  • minimum_sho, 13個
  • kouta77, 13個
  • rider-2, 13個
  • crazyup, 12個
  • ahiru-123, 12個
  • Haruka1976, 11個
  • martyan, 11個
  • bob3, 10個
  • t-murachi, 10個
  • yuu665, 10個
  • hiroshiykw, 10個
  • hashikyon, 10個
  • yama-28, 10個
  • Frunk, 10個
  • katsu_w, 10個
  • sky-graph, 10個
  • woremacx, 10個
  • tajimaboard, 10個
  • hsymd, 9個
  • tek_koc, 9個
  • yamifuu, 9個
  • ki-sa, 9個
  • cmizuna, 8個
  • hokoyo, 8個
  • FC6, 8個
  • konotomoko@vox, 7個
  • Urume, 7個
  • tai2, 7個
  • narima001, 6個
  • a2c, 6個
  • analogdevicez, 6個
  • shin個

コメント

  • Dokukinoko, 20回
  • taka-T, 9回
  • mozizin, 6回
  • kakusi-96, 5回
  • soukon1500, 4回
  • a_halka, 2回
  • hogelog, 2回
  • diary7, 2回
  • Snakun, 2回
  • nao5531, 2回
  • hajimehoshi, 2回
  • riberura1107, 2回
  • keroro-ex_99, 2回
  • uho-iiotoko, 1回
  • inouoe, 1回
  • tsukitaro, 1回
  • toguo, 1回
  • daiti7, 1回
  • itochan, 1回
  • rgfx, 1回
  • mochikun, 1回
  • morinoGororin, 1回
  • Chaborin, 1回
  • Akimbo, 1回
  • SaffK, 1回
  • supersex, 1回
  • YaMiNeKo, 1回
  • cawther, 1回
  • legend31, 1回
  • papuriko2009, 1回
  • Aroundight, 1回
  • kazuki253, 1回
  • tekitouotoko, 1回
  • aintai, 1回
  • name-0913, 1回
  • yukky2001, 1回
  • Manaphy, 1回
  • gandmu, 1回
  • nekogusa9, 1回
  • H4416, 1回
  • Sirangana, 1回
  • suztomo, 1回
  • hmori, 1回
  • n-pls, 1回
  • ugokumemotyou, 1回
  • peroon, 1回
  • kikuhime_rx, 1回
  • NERU, 1回
  • colombo, 1回
  • ryo-chan1214, 1回
  • abebetaro, 1回
  • abeckham22, 1回
  • hayamiz, 1回
  • salt_tea, 1回
  • Trapezoid, 1回
  • AKIY, 1回
  • ZUNDA, 1回
  • yoidoretensi, 1回
  • ngmkz, 1回
  • kururu1, 1回
  • ugomemonokami, 1回
  • rui_rui_723, 1回
  • futaba-mirin, 1回
  • takimo, 1回
  • monato, 1回
  • gamil, 1回
  • rwas, 1回
  • myhanabi0912, 1回
  • hosine, 1回
  • shom5w, 1回
  • moons, 1回
  • eigokun, 1回
  • altana11, 1回
  • tiiyuka0239, 1回
  • hihi01, 1回

スクリプト

スクリプトはこんな感じ。

コメント

HTML正規表現ごにょごにょして['hoge', 'piyo', 'fuga', 'piyo']みたいな配列にして、でもこれだけだとコメントした回数がカウントできずに何回も同じユーザーが出てきてしまうから

a = ['hoge', 'piyo', 'fuga', 'piyo']
l = []
for i in a:
  l.append([i, a.count(i)])
l = list(set(map(lambda x: tuple(x), l)))
l.sort(lambda x, y: cmp(y[1], x[1]))
for i in l:
  print i[0], i[1]

とする。

スター
import urllib, json
h = urllib.urlopen('http://s.hatena.ne.jp/entry.json?uri=http%3A%2F%2Fugomemo.hatena.ne.jp%2F0B3D19604CE04B2F%40DSi%2Fmovie%2FE04B2F_08720FF94B42A_002')
a = json.load(h)
f=open('stars.txt', 'w')
sys.stdout=f
for i in a[u'entries'][0][u'stars']:
  print i[u'name'], i[u'count']

2008-12-30

[][]うごメモ関連付けセレクトボックス

javascript:(function(j){j.src='http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js';document.body.appendChild(j);setTimeout(function(){$.ready();$('<script src=%22http://query.yahooapis.com/v1/public/yql?q=select%2520content%2520from%2520html%2520where%2520url%253D%2522http%253A%252F%252Fugomemo.hatena.ne.jp%252Fchannels%2522%2520and%2520xpath%253D\'%252F%252Fh3%252Fa\'&amp;format=json&amp;callback=makeSelect%22>').appendTo('body')},1000)})(document.createElement('script'));function makeSelect(o){var s=$('<select name=%22channel-name%22>');$.each(o.query.results.a,function(i,v){$('<option>').text(v).appendTo(s);});$('input.txt').replaceWith(s)}

これでいいのかな。エンコード関係どうなんかね。

2008-12-29

GoLive現役www


Leopard使ってるヤツいたら確認してほしいんだけど。。

ホームフォルダ > サイト > index.html

ソースを見てほしいんだけど、7行目に冗談みたいな内容が。。

<meta name="generator" content="Adobe GoLive" />

ってちょwwおまww 懐かしスw

2008-12-26

[]Hatena::Bookmark::24H::Chart

修正:いい加減&が変換されるのを何とかしてほしい

解説:Hatena::Bookmark::24H(http://hatebu24h.ashitano.in/)に、トップエントリの獲得したブックマーク数の推移のチャートを加えます。

// ==UserScript==
// @name           chart of Hatena::Bookmark::24H
// @namespace      http://anond.hatelabo.jp/
// @include        http://hatebu24h.ashitano.in/*
// ==/UserScript==

var url = unescape("http://chart.apis.google.com/chart?chs=160x60%26cht=ls%26chd=t:");
url = url + $X("//div[@class='clocktxt']", Array).map(function(s){return s.firstChild.nodeValue}).join(",");
//var id = $X("//h3/a/@href")[0].nodeValue;
//url = url + $X("//div[@class='entrytitle' or @class='entrytitle2'][.//a[@href='"+id+"']]/../preceding-sibling::div[1]", Array).map(function(s){return s.textContent.match(/\d+/)}).join(",");
var before = makeElements({
    nodeName: "div",
    className: "sidebox",
    childNodes: [{
        nodeName: "div",
        className: "sidetitle",
        innerHTML: "Recent top entry chart"
      },{
        nodeName: "div",
        className: "sidetitle",
        childNodes: {
            nodeName: "img",
            src: url
        }
    }]
});
var after = $X("//div[@class='sidebox']", Array)[0];
after.parentNode.insertBefore(before, after);

// util

// var 0.01
function makeElements(obj) {
    if (typeof obj != "object")
        return document.createTextNode(obj);
    if (obj instanceof Array)
        return obj.map(makeElements);
    var node = document.createElement(obj.nodeName);
    delete obj.nodeName;
    if (obj.childNodes) {
        [].concat(makeElements(obj.childNodes)).forEach(node.appendChild, node);
        delete obj.childNodes;
    }
    function extend(dst, src) {
        for (var i in src) {
            if (typeof src[i] == "object" &amp;&amp; dst[i] &amp;&amp; typeof dst[i] == "object")
                extend(dst[i], src[i]);
            else
                node[i]=obj[i];
        }
    }
    extend(node, obj);
    return node;
}

// by http://lowreal.net/blog/2007/11/17/1
// $X(exp);
// $X(exp, context);
// $X(exp, type);
// $X(exp, context, type);
function $X (exp, context, type /* want type */) {
    if (typeof context == "function") {
        type    = context;
        context = null;
    }
    if (!context) context = document;
    var exp = (context.ownerDocument || context).createExpression(exp, function (prefix) {
        var o = document.createNSResolver(context).lookupNamespaceURI(prefix);
        if (o) return o;
        return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : "";
    });

    switch (type) {
        case String:
            return exp.evaluate(
                context,
                XPathResult.STRING_TYPE,
                null
            ).stringValue;
        case Number:
            return exp.evaluate(
                context,
                XPathResult.NUMBER_TYPE,
                null
            ).numberValue;
        case Boolean:
            return exp.evaluate(
                context,
                XPathResult.BOOLEAN_TYPE,
                null
            ).booleanValue;
        case Array:
            var result = exp.evaluate(
                context,
                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                null
            );
            var ret = [];
            for (var i = 0, len = result.snapshotLength; i < len; i++) {
                ret.push(result.snapshotItem(i));
            }
            return ret;
        case undefined:
            var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
            switch (result.resultType) {
                case XPathResult.STRING_TYPE : return result.stringValue;
                case XPathResult.NUMBER_TYPE : return result.numberValue;
                case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
                case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: {
                    // not ensure the order.
                    var ret = [];
                    var i = null;
                    while (i = result.iterateNext()) {
                        ret.push(i);
                    }
                    return ret;
                }
            }
            return null;
        default:
            throw(TypeError("$X: specified type is not valid type."));
    }
}

2008-12-17

SP

javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.sp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.sp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[0]+"|"+m.music_list[i].diff[1]+"|"+m.music_list[i].diff[2]+"],"+x.level[0]+","+x.score[0]+","+t[x.flag[0]]+","+x.level[1]+","+x.score[1]+","+t[x.flag[1]]+","+x.level[2]+","+x.score[2]+","+t[x.flag[2]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();

(たぶん)DP用

javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.dp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.dp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[3]+"|"+m.music_list[i].diff[4]+"|"+m.music_list[i].diff[5]+"],"+x.level[3]+","+x.score[3]+","+t[x.flag[3]]+","+x.level[4]+","+x.score[4]+","+t[x.flag[4]]+","+x.level[5]+","+x.score[5]+","+t[x.flag[5]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();

2008-12-15

mixi ホーム画面のマイミク一覧をログイン時間順で表示するグリモン

ふと思い立って昼休みに作った。経過時間別に背景色もつきます。

グループ分けとかしてるとうまく動かないかも。

order_home_mymixi.user.js

// ==UserScript==
// @name          order_home_mymixi
// @namespace     http://anond.hatelabo.jp/
// @include       http://mixi.jp/
// @include       http://mixi.jp/home.pl
// ==/UserScript==

(function() {
    if (window != window.parent) return;

    var homeTds = document.evaluate('//div[@id="mymixiList"]//td', document.body, null, 7, null);
    for (var i = 0; i < homeTds.snapshotLength; i++) homeTds.snapshotItem(i).innerHTML = 'loading...';

    GM_xmlhttpRequest({
        method: 'GET',
        url: 'http://mixi.jp/list_friend_simple.pl',
        onload: function(res) {
            var friends = [];
            var bgColor = {
                '01': '#ffffff',
                '02': '#fee7c6',
                '03': '#ffd8a7'
            };

            var div = document.createElement('div');
            div.innerHTML = res.responseText;
            var tds = document.evaluate('//div[@id="friendList"]//td', div, null, 7, null);
            for (var i = 0; i < tds.snapshotLength; i++) {
                var td = tds.snapshotItem(i);
                var klass = td.getAttribute('class');
                if (!klass || klass.search(/^iconState(01|02|03)/) == -1) continue;
                friends.push({
                    color: bgColor[RegExp.$1],
                    anchor: td.getElementsByTagName('a')[0],
                    name: td.getElementsByTagName('p')[0].innerHTML.replace(/^(.+)\(/, '$1 (')
                });
            }

            for (var i = 0; i < homeTds.snapshotLength; i++) {
                var td = homeTds.snapshotItem(i);
                td.innerHTML = '';
                td.style.background = friends[i].color;
                td.appendChild(friends[i].anchor);
                var span = document.createElement('span');
                span.innerHTML = friends[i].name;
                td.appendChild(span);
            }
        }
    });
})();

2008-12-06

対訳:人を動かす

http://ja.wikipedia.org/wiki/%E4%BA%BA%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99

http://en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People

  • Fundamental Techniques in Handling People(人を動かす三原則)
    • Don't criticize, condemn or complain.(批判も非難もしない。苦情もいわない。)
    • Give honest and sincere appreciation.(卒直で、誠実な評価を与える。)
    • Arouse in the other person an eager want.(強い欲求を起こさせる)
  • Six Ways to Make People Like You(人に好かれる六原則)
    • Become genuinely interested in other people.(誠実な関心を寄せる。)
    • Smile.(笑顔で接する。)
    • Remember that a man's Name is to him the sweetest and most important sound in any language.(名前は、当人にとって、最も快い、最も大切な響きを持つことばであることを忘れない。)
    • Be a good listener. Encourage others to talk about themselves.(聞き手にまわる。)
    • Talk in the terms of the other man's interest.(相手の関心を見抜いて話題にする。)
    • Make the other person feel important and do it sincerely.(重要感を与える―誠意をこめて。)
  • Twelve Ways to Win People to Your Way of Thinking(人を説得する十二原則 )
    • Avoid arguments.(議論に勝つ唯一の方法として議論を避ける。)
    • Show respect for the other person's opinions. Never tell someone they are wrong.(相手の意見に敬意を払い、誤りを指摘しない。)
    • If you're wrong, admit it quickly and emphatically.(自分の誤りをただちにこころよく認める。)
    • Begin in a friendly way.(おだやかに話す。)
    • Start with questions the other person will answer yes to.(相手が即座に'イエス'と答える問題を選ぶ。)
    • Let the other person do the talking.(相手にしゃべらせる。)
    • Let the other person feel the idea is his/hers.(相手に思いつかせる。)
    • Try honestly to see things from the other person's point of view.(人の身になる。)
    • Sympathize with the other person.(相手の考えや希望に対して同情を持つ。)
    • Appeal to noble motives.(人の美しい心情に呼びかける。)
    • Dramatize your ideas.(演出を考える。)
    • Throw down a challenge.(対抗意識を刺激する。)
  • Be a Leader: How to Change People Without Giving Offense or Arousing Resentment(人を変える九原則 )
    • Begin with praise and honest appreciation.(まずほめる。)
    • Call attention to other people's mistakes indirectly.(遠まわしに注意を与える。)
    • Talk about your own mistakes first.(まず自分の誤りを話した後、相手に注意を与える。)
    • Ask questions instead of giving direct orders.(命令をせず、意見を求める。)
    • Let the other person save face.(顔を立てる。)
    • Praise every improvement.(わずかなことでも、すべて、惜しみなく、心からほめる。)
    • Give them a fine reputation to live up to.(期待をかける。)
    • Encourage them by making their faults seem easy to correct.(激励して、能力に自信を持たせる。)
    • Make the other person happy about doing what you suggest.(喜んで協力させる。)

Seven Rules For Making your Home Life Happier(幸福な家庭を作る七原則)は日本語訳無し。

http://anond.hatelabo.jp/20081206201323

Remember that a person's name is to that person the sweetest and most important sound in any language.

2008-12-03

Pentium 4 って、Pentium PRO より新しい?

model name : Intel(R) Pentium(R) 4 CPU 3.40GHz

手元にこういうマシンがあるんだが、これって、PentiumPROよりも新しいCPUかな?

単に Xen を動かしてみたいんだけど、PentiumPRO以降じゃないと動かないみたいなんで気になった。

2008-11-30

ある男が心臓発作になった

意識不明になる前に、彼は2chに「発作で動けない。助けてくれ」と書き込んだ

そのスレを見ていた人間大丈夫かと書き込むが返答は無い

事態の異常さを察知した有志が動き、男の身元の洗い出しが始まった

常にコテハンはつけていた彼だったが、過去ログを漁れど個人情報など書かれているわけも無い。

しかし、彼がコテハンを付けだす前日の書き込みに、name欄にコテハンと同じ名前ハンドルネームが記されたレスがあった

書き込み即座に半年ROMれの嵐、そんな初心者丸出しの書き込み。しかし、メール欄には彼のホットメールアドレスが記されていた。

有志はそのアドレスマイクロソフトに照会、ホットメールの管理者が彼のアドレスメールボックスを調べる事に

メール内容に彼の居場所を記すものは無かったが、アドレス宛に届いているニコニコ動画日経ビジネスオンラインラグナロクオンラインの各種ネットサービスの登録メール

そのユーザIDパスワードを各社に照会するに、彼のパスワードすべからく付けられている「1213」という数字。「nakayama」という文字列キャラクター名の「sintarou」。

そっから先もそんな調子で個人情報を辿って彼は一命を取り留めた

しかし訴訟を起こして大勝利。

訴訟の是非を巡ってはてな炎上

そんな話。

2008-11-10

「理解できない馬鹿」を可視化してみた。

http://anond.hatelabo.jp/20081109215457

書評がなってない、という問題のコメントがほとんどならわかるが、かなりの割合で書評の内容で元の本を想像してコメントする、という例がある。現時点でそれに該当すると思われるのを俺視点で全部あげると、

id:repon あのですね、日本人から見た「英語」だから普遍語に見えるだけで、日本語という「国語」は国家統合の鍵ですよ。英語は道具としてはこれから普及するけれど、国家統合の要は国語たる「美しい日本語」です。全然違う。

id:jujubea j「英語のできる俺大勝利!皆は俺の英語力を全肯定するこの本を読むべき」

id:shields-pikes 読まずにコメントブログ掲示板漫画アニメで、世界の全コンテンツにおける日本語の比率は20年前より増えてるんじゃないかなあと予想。あとは、現代中国語をまた漢語として日本語に引き入れようぜ!

id:sbiaco ラテン語中南米言葉だと思っている人がいっぱいいる国に英語を普及させるなんて夢の夢。植民地にされたら別かもしれないが

id:hobbling 今どき源氏物語を「読む」人間がいないように、漱石三四郎だって「読む」人間がいなくなるのは当然だと思う。言葉だって文学だっていつかは死にます。ラテン語が死んだように英語だって死ぬでしょう。

id:kkobayashi バカだのアホだの言われると逆に読みたくなってくるな。/英語の必要性なんて、本読んで勉強するもんじゃないと思うけど。実際必要としてない人には不要だし、実感として伝わるわけがない

id:TiTo インテリ層は今後日本語よりも英語に重きをおくのでは?私自身の体験からしても、ある分野で日本語で十分満足のいくコンテンツがない現状に気付いた時点で英語コンテンツアクセスするようになりましたから。

id:noiehoie なぜこの人はいつも真面目に語ろうとすればするほど底の浅さを露呈させてしまうのだろう?そもそも19世紀以降知的世界において英語普遍語でなかった瞬間があるのかと問いつめたい。小一時間(ry

id:JuliusCaesar アメリカが没落しても英語の優位が続くかどうか。日本国が続く限りは、日本語が亡びることはないだろう。

id:nekoluna うーん・・英語で書けるならそのほうがいいと思うけど。 マーケットが大きいので、日本語では微妙才能でも小説家としてやっていけるよ。 暴力的かもしれないけど。

id:dekaino 古代中世中華帝国東アジアの中心だった時代、日本公文書漢文だったが、和文の文章も当然書かれていたし和歌も詠まれていたわけで。

id:mihalita 日本語理想化しすぎ。かなりハイブリッド言語なので、これからも政治的に強い言語と混じりながら変化していくんですよ。「田中克彦」を読んだほうがいいと思う。

id:panna-cotta 関係しそうなのは上流層だけかな。世界共通言語を操る以前に、世界規模の競争で勝ち残れない大多数の人たちは結局母国と母国語依存せざるを得ない。 * 2008年11月08id:Meat_eating_orchid こんなのもう50年以上前から言われてることだけど、それで「自然英語で書」いてる人って何人いましたっけ?

id:islecape 英語が「普遍語」に。すでに学術論文なんか全部英語人口が減っているので日本語を使う人も当然減っていく。文化的に保存されず消滅する言語がかなりあるが、日本語データとしては残る。それで問題あるだろうか?

id:yuki-esupure こういうの100年くらい前からいわれてるよねwww

id:ticky 英語ったって、英語を学ぶことと、英語教養を見につけることは別。

id:nosem よくあるタイプの本の予感,そもそも普遍語たるラテン語も衰退しちゃったじゃんかよ

id:pontanta 50年前に出版されても同じことを行っていると思う。戦後ベストセラーが「日米会話手帳」ですからね。/「貯蓄から投資へ」みたいにいつになれば本格的にそういう時代になるの?という感はある

id:lizy 言葉までフラット化するかなぁ

id:yamatedolphin 都会で働く人には標準語は必須だが、イナカで隔絶した暮らしをしてやってけるという人は方言で充分。それと同じで知的分野で相手にされなくてもよい人には関係ない/ コメントみると日本は「亡び」からも遅れるのかも

id:citron_908 人類2.0 タイトル書評だけ読んで想像すると、これってなんてワンワールド化?っていう / フラット化する世界のなれの果て

id:Mihukaeru 標準語は浸透しましたが、方言は滅びましたか?(変化はしてるけど)

id:yo-net 日本語で物を考えなくなったら、日本人が終了するだけですよ。

id:georgew 英語に関しては異論ないけど、中国語の台頭というのも考えねばならんと思う。いずれにせよ日本語用済みってのは大筋そうだろう。

id:insistent シルクロードの終着点で中東から欧州から中国朝鮮から洪水のように情報が入ってくるので異文化摂取能力限界まで高めた言語として発生した日本語。また独自の変質を遂げた日本語になるだけだと思う。

id:aiaki 生物の変化を滅びとしているの?

id:plummet 実感はサパーリ湧かない。|ちうか、本を紹介するだけのエントリにけっこうスターがついてるのに驚く

id:naotoj 一部の限られたエリートしか情報を残せなかった昔とは違い、今は個々人全てがデータの発信元。それが全て英語に置き換わるなどとは到底思えないのだけれど。

id:ore_de_work 滅びるんじゃなくて、それ生き物だから.....

id:kimtetsu 日本 単一の言語民族アイデンティティに結びつけるのは、国民国家の特徴だからそんなに歴史が古くない筈、日本語だとせいぜい150年ぐらい?

id:hummer_and_anvil 江戸時代以前は漢文が公用文の時代だったし。ヨーロッパではラテン語の時代が長く続いた。日常語と公用語が別の言語という国は現在でもたくさん存在する。これはごく普通のことじゃなかろうか。

id:ustar そもそも日本語は何千年も知識と論理を漢語に任せてたじゃないですか

id:ghostbass言葉 OK,まずは「ら抜き言葉」なる珍妙な用語を滅ぼそう。/フレーズ意味を成す用語を単語に分割して訳すバカどもを追放しよう

id:TOM2005 そのときには自動翻訳が実用的なレベルになっていて、むしろ「母国語でない英語を覚える」などというナンセンスなことは誰もしなくなったりして。

id:temtex 今まで数え切れないほど日本語の危機なんてあっただろうに。

という感じ。そういうコメントのほとんどになぜかid:F-name氏のスターがあることが気になる。

その他梅田さんに何かいいたいだけのエントリとかは除いた。

2008-11-07

はじめてSEOを専門業者に発注した。

まとめ


はじめは特に本気じゃなかったんだけど、一括見積もりみたいなサイトを利用してみた。予算は10万円以下にしといた。

その結果、3つの業者から連絡が来た。そのなかに、よくweb担とかに出てくる業者があって、ほかの業者に比べて見積もりが安かったから、そこにしてみた。

んで、担当の人と30回くらいメールやりとりをした。当初、見積もりの段階ではトップページビッグキーワード1つで上位表示してほしいって書いておいたけど、担当の人が予算が10万円あるなら、トップページだけじゃなくサブページもSEOを施してみてはどうかと提案してくれたから、そういうことにした。

結果、トップページビッグキーワードを含む5キーワードSEO(このうち4キーワード業者に考えてもらった)、サブページ4ページを複合キーワード計5つでSEOということになった。サービスの内容はページのHTMLをチェックし「ページ改善書」というのを作ってくれるというものと、外部リンクの増殖。

どのくらいで効果が出てくるのか?と聞いたところ、キーワードによって異なるけど、ほとんどの場合は11から15日で上位表示しているビッグキーワードに関してはもう少し遅くなるかもしれないが、そうでなければこのくらいとのこと。

サービスの開始は毎月1日か15日からで、1日からはじめるのなら今すぐに発注所をFAXせよとのことで、すぐに発注書を送った。ちなみに料金は翌月末払いだった。

発注書を送ると、すぐに確認のメールが来た。また外部リンクに使うキーワードリストもきて、わからないことがあったら気軽に質問してくださいといったことが書かれていた。

外部リンクに使うキーワードリストを見て、さっそく疑問がわいてきた。例えばトップページキーワード1、キーワード2、キーワード3、キーワード4、キーワード5の5キーワード上位表示ということだったけど、設置する外部リンクに使われるテキストは「キーワード1キーワード2」というもの。(リンクに使うテキストには字数制限があるそうだ)

キーワード345はリンクに使われていないがそれでも上位表示は可能なのか。すべてのリンクを「キーワード1キーワード2」とせずに、リンクの何割かを「キーワード1キーワード2」とし、残りの何割かを「キーワード3キーワード4キーワード5」としないのはなぜか。といったことを質問した。

一週間経つけど、これについての回答はこない。回答きた。システムの問題らしい。

システムの都合上、多くのアンカーテキストを扱うことができないが、検索エンジンは関連する語句を見分ける能力があるからキーワード1キーワード2を使ってもキーワード3,4,5で上位表示を行うことができると考えている。

改善書にてキーワード3,4,5は無理やりサイトタイトルに入れるように指示された。

無理やりってのは、「はてな匿名ダイアリー」→「はてな無料ブログ 匿名ダイアリー」みたいな感じ。

また、今日になって発注後はじめてのメールがきた。外部リンク設置作業1段階目が終了したとのこと。メールには「これから20から25日ほど経ったら、効果が出始めると思います」といったことが書かれていた。さて、ここでまた疑問がわいてきた。

発注前の話では15日ほどで上位表示されている場合がほとんどと言われていたが、発注後では20日ほどで効果が出始めるとなっている。となると15日の時点ではまだ効果が出始めていないということだから、15日ほどで上位表示されている場合がほとんどであるということと矛盾している。これについても質問をしたが、まだ返信はこない。回答きた。

平均して11日だが、発注されたキーワードは難易度が高いため20日ほど要すると考えている。

キーワード2,3,4,5については業者に決めてもらったのだが、業者はそのときに「ビッグキーワードは難しいが、ターゲットをしぼったこれらのキーワードなら短期間で上位表示できることが多い」と言っていた。「短期間」なのに「平均」の倍近くの期間を要するなんて、これまた腑に落ちない。

また「ページ改善書はいつ送られてくるのか」と質問したところ、「ページ改善書は今回のみ特別に無料で作成します。のちほどお送りいたします。」といった内容の返信がきた。発注前では契約内容としてページ改善書というのが入っていたが、発注後では「特別無料サービス」のような「おまけ」のような言われ方をしている。ここもどうも腑に落ちない。

ちなみに外部リンクを設置したサイトリストももらった。外部リンクは500ページに設置したそうだが、500ページというのは5つのサイトRSS自動取得してページを量産するタイプブログ、独自ドメインで構築されている)のそれぞれ100ページ(いちおうインデックスされているみたい)からということみたいだ。さっそくだがAdSense違反報告に出しといた。

web担の記事で、今回発注した業者の代表が「リンク元ページとリンク先ページとの内容が関連しているほどSEO効果が高い」「リンク元ページが多くのページからリンクされているほどSEO効果が高い」といったことを書いていた。しかしながら今回設置された外部リンクは関連性の低いページからのリンクで、また被リンク数の指標を示すGooglePRがなしか0のページからのリンクだった。言っていることとやっていることが違うが、どういうことなのか、と質問のメールを出しておいた。返信きた

外部リンクについては情報開示できません。

発注前は良質なリンクといわれていたが、どうもこれが良質なリンクだとは考えづらい。私が知識不足なだけなのだろうか。

補足:11/7

ちなみに料金は月額4万円ほど。契約期間は最短の6ヶ月で発注した。担当の人は韓国人日本人ハーフみたいな名前だった。

見積もりがきた残りの2つの業者はどちらも初期費用10万の月間費用数十万で、予算10万?笑わせんなwみたいな感じの内容だった。

まぁ、1ヶ月くらいたって順位がどう変わったか等を報告するよ。

補足:11/8

ブクマがたくさんついてたからもう少し具体的なことを補足しておく。

はじめに発注したのはYahoo!の月間検索回数20000回ほどのキーワード担当に提案されたのはこのキーワード+1単語の複合キーワード4つで、それぞれ2000回ほど。さらにサブページ4ページに対して計5キーワード、それぞれ2000回ほど。

また発注前の時点で私のサイトGoogleとLiveSearchで担当に提案されたキーワード+1単語の複合キーワードでは上位に表示されているが、発注したキーワードではGoogleもLiveSearchも80位ほど。Yahoo!はここ1年で100位以内に入ったことはない。セッション数はGoogle:LiveSearch:Yahoo!=90:8:2くらい。サイトの内容としてはYahoo!からのセッションのほうが成果をあげやすい。今回発注したのは上記の10キーワードGoogle・LiveSearch・Yahoo!の3検索エンジン目標10位以内というもの。

サイトスペックは、GooglePR4、Yahoo!リンク8000、Googleリンク100、Yahoo!/Googleインデックス数260、はてブ7件、Jエントリーに登録されてる。ブログCMS代わりに使ってる個人運営のサイト

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440

えらいタイムリータイミングメールの返事が来とるw

リンクの増殖はスパムと評価されないように、何回かにわけ、1週間単位で設置していくそうだ。開始から7日たった11/7にメールの返信がきたというのも納得できなくもないかもしれない

http://anond.hatelabo.jp/20081108163851(抜粋)

SBMで多くのブクマを集めた方がよっぽど上位表示されるような気がする。

サイト診断をしてもらったのだが、今考えると、金返せ、と言いたくなる内容だった。

サイトのヘッダー部分の画像を変えた方が良いですよ」

Googleページランクを確認した方が良いですよ」

こんなもんだぞ。これってSEO業者のコンサルティングなの?

悪い事は言わんから、効果なかったらあきらめた方が良いかも。追加で金払ったりするのはやめた方が良いよ。

6ヶ月の契約で発注書を送っちゃったから、多分これから6ヶ月分は効果があろうとなかろうと料金を払わなければいけないと思う。もしかしたら「発注前後で言ってることが違うぞ!金返せ!」みたいに訴えれば払わなくて済むかもしれないのかもしれないけど、そういう面倒なのは嫌だ。

もちろん、効果がなかったら契約期間の延長をすることはない。これは担当の人にも言ってある。

実際に、担当の人とのメールやりとりでしつこく「検索エンジンは外部サイトからのリンク重要視している」と言われたし、「タイトルタグメタタグキーワードを入れることで上位表示云々」とも言われた。多分だけど、少なくともこの担当の人は回答テンプレみたいなのを打ち込んでるだけでSEOについて大した知識はないんだと思う。もしかしたら改善書というのも、このレベルのものなのかもしれない。

私のサイトはどちらかというとWEB初級者が好むような内容。だからはてブdeliciousにはあまりブクマが付かず、Yahoo!ブクマが多い。けどYahoo!ブクマはてブと違って直リンクじゃないからたくさんブクマされてもあまり意味ないんだよね。もちろんゼロではないと思うけど。

検索エンジンの中の人が「被リンクは少なくともtitleタグより重要だ」と言っているように、やっぱりSEO業者ってのは料金が高かろうが安かろうが、外部リンクの設置がメインなんだと思う。

今は上位に表示されなければ金は取らないというところにしか頼む気にはなれないなあ。

そういうところはトラックバックスパムとか掲示板スパムをやりまくって、たまたま順位アップしたときだけ料金請求をし、順位アップしなかったら放置って感じが多いらしい。

金がたまったらSEO塾を受講してみたい。

補足:11/9

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440

koichi22

5キーワードくらいの順位取得ならGRC使っておけばいいんじゃないかな。

http://seopro.jp/grc/

紹介ありがとうございます、さっそくインストールしました。いい感じですが、無料版だと5キーワードまでしか設定できないんですね。残念。トップページの順位チェックに使わせていただきます。現時点でのトップページの順位は

 GoogleYahoo!LiveSearch
キーワード--51
キーワード67-35
キーワード--84
キーワード---
キーワード2-1

http://anond.hatelabo.jp/20081109222125

その程度の予算しかないのに、SEOをしよう、という考えを改めるべき。

他の会社はもっとSEO予算使ってます。

私がSEOを発注したのは企業サイトではなく、私個人が運営しているサイトだよ。確かに「もっと資金を用意してから」っていう意見はそのとおりだと思うけど、今年中にまとまった金が必要になってしまってね。個人相手だから業者も適当にあしらってる可能性もなくもないか。

補足11/10

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード---LiveSearh↓49以上
キーワード68-36Google↓1・LiveSearh↓1
キーワード--83LiveSearch↑1
キーワード----
キーワード2-1-

※まだサブページにキーワード6,7でリンクを設置しただけのはずだから、サブページの被リンクトップページに多少の影響を与えているかもしれないけど、恐らく自然と落ちたのだと思われる。

メール着た。

サイトを拝見したところ、非常に良く出来たつくりになっております。

ただ、少し改善した方がよいと思われる所がございました。

お世辞か?以前までは「改善書」となっていたが、今回のメールからは「改善指示書」と名称が変わったそうだ。メール中にはtitleタグ、metaタグ(keywordsとdescription)、キーワード出現率に関する説明がそれぞれ2行ずつくらい書いてあった。

それと、添付されていた改善書をこれから見てみようと思う。ちょまって、なんかこれひどい。一番最初に書いてあったのが「<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">を入れるな」。普段からXHTMLを使っているからか、全部大文字だと初心者っぽく見えるな。

メタディスクリプションタグとは、HTMLソースコード<description> xxx </description>タグとして記述されているタグことです

説明間違ってる・・。

ごめん、なんか誤読してた。titleタグとmetaタグの具体例はちゃんと書かれていた。もっとも、キーワードを繰り返しすぎでおかしな文章になっていたけど。下記ページの悪い例のほうみたいな感じ。

http://www.suzukikenichi.com/blog/write-rich-keyword-content/

補足:11/11

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード----
キーワード--36Google↓32以上
キーワード--88LiveSearch↓5
キーワード----
キーワード2-1-

昨日今日と、Googleが大きくランクダウンしてる件。まぁランクダウンしてるといっても、下位から超下位でトラフィックに大した影響はないのだけども。

補足:11/12

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード--55LiveSearch↑55以上
キーワード33-36Google↑67以上
キーワード76-91Google↑24以上・LiveSearch↓3
キーワード----
キーワード2-1-

急降下したり、急上昇したり、もう少し穏やかにしてくれないものかね。LiveSearchなんか結構上がってるように見せかけて、11/9と比較すると実際には下がってるという。

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440

sozesoze

SEOスコープはどう? ttp://search.submit.ne.jp/seoscope.html

紹介ありがとうございました。さっそく使ってみましたが、微妙です。

いちいちログインしなきゃいけないのが面倒なのと、登録した3サイト(というか3ページ)の順位チェックも一括ではなく、サイトごとにいちいち「診断結果レポートを見る」をクリックしなければいけないのが面倒です。(先日紹介したGRCというのは、「実行」をクリックすると登録されているページ・キーワードを一括にチェックできます)

それと、LiveSearchには対応していないみたいですね。

今、順位をチェックしてみたところ、サブページ(キーワード6,7,8,9,10)はすべて「圏外」と出てました。サブページのうち2ページに関しては、11/7の時点で外部リンクの設置がすべて完了しているとのことだったけど…

補足:11/13

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード--53LiveSearch↑2
キーワード32-36Google↑1
キーワード17-91Google↑59
キーワード----
キーワード2-1-

補足:11/13

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード--53-
キーワード80-36Google↓48
キーワード91-91Google↓74
キーワード----
キーワード2-1-

順位変動しすぎだろ・・

補足:11/15

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード--53-
キーワード81-39Google↓1・LiveSearch↓3
キーワード89-91Google↑2
キーワード----
キーワード2-1-
担当者ではなく企業に直接問い合わせてみた。

すごく悩んだのだけど、やっぱりひどすぎる気がする。担当者は話が通じなそうだから、業者のお問い合わせフォームから直接問い合わせてみた。「必ず2営業日以内にご連絡」と書かれていたから、17日までには返信がくるはず。

問い合わせた内容は担当者の説明が矛盾していること、担当者の説明が誤っていること、担当者が糞だから違う人に代わって説明してほしいということ。

11/16:担当者から返信きた。下記はそのコピペである(タイプミス担当者のもの)

お世話になります。(企業名)の(名前)でsう。

弊社のサービスのご説明に関して、行き違いがり申し訳ございませんでした。

改めて現在の状況を確認し、資料をまとめ、再度ご連絡させていただきますので今しばらくお待ちください。

補足:11/16

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード--54LiveSearch↓1
キーワード34-40Google↑47・LiveSearch↓1
キーワード18-90Google↑71・LiveSearch↑1
キーワード----
キーワード2-1-

補足:11/17

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード---LiveSearch↓46以上
キーワード28-40Google↑6
キーワード17-90Google↑1
キーワード97--Google↑3以上
キーワード3-1Google↓1

キーワード5がここ1年くらい2位をキープしてたけど、3位に下がってた。ちなみに2位はついこの間まで3位だったページで、1位のサイトサブページ。

補足:11/18

 GoogleYahoo!LiveSearch変化(↑:ランクアップ・↓:ランクダウン)
キーワード----
キーワード28-40-
キーワード18-90Google↓1
キーワード---Google↓3以上
キーワード3-1-


順位チェックツールでちゃんと動いてくれるものを探しています。

複数のURLを複数のキーワードで一括チェックでき、(短期間でも)ログを保

存できるツールを探しています。オンラインのものでも、ダウンロードインストールが必要なものでもいいのでオススメがあれば教えていただけるとうれしいです。

ダウンロードツール名説明その他
不要FC2 SEO対策 -
検索エンジンランキングチェッカー
正常に動かない-
不要RankingChecker全く動かない-
不要BROADENTRY RankingChecker動くけどログが残らない-
GoomaniキーワードURLに制限なし、ログを保存できるフリーソフト配布停止中
GRCキーワード5つまで一括チェック。ログを保存可のフリーソフトb:id:koichi22さんに紹介していただきました
GRC PROGRCのキーワードURL数無制限バージョン、有料ソフト年間9600円
不要SEOスコープ会員登録必要で3URL/5キーワードまで。
チェックは自動で行われる(時間不定)
b:id:sozesozeさんに紹介していただきました

2008-10-18

http://anond.hatelabo.jp/20081018072817 の続きだよ

これでおしまいだよ

elisp

sangels.el
(require 'cl)				; for cl-seq

(defvar sangels-movies-dir nil)
(defvar sangels-player "c:/Program Files/GRETECH/GomPlayer/GOM.exe")
(defvar sangels-sort-by 'sangels-sort-by-rate)
(defvar sangels-rate-file "~/.emacs.d/.sangels/rate")
(defvar sangels-buffer "*sangels*")
(defvar sangels-thumbnail "00_thumbnail.jpg")
(defvar sangels-m3u "00_movies.m3u")
(defface sangels-name '((t (:family "fixed" :weight bold :height 3.0)))
  "")
(defface sangels-rate '((t (:family "fixed" :weight bold :height 1.5)))
  "")
(defvar sangels-mode-map
  (let ((map (make-sparse-keymap)))
    (define-key map "n" 'next-line)
    (define-key map "p" 'previous-line)
    (define-key map (kbd "RET") 'sangels-select)
    (define-key map (kbd "SPC") 'sangels-select)
    (define-key map "q" 'sangels-quit)
    (define-key map "+" 'sangels-rate-plus)
    (define-key map "-" 'sangels-rate-minus)
    map))
(defvar sangels-mode-hook nil)
(defvar sangels-highlight-overlay nil)
(defvar sangels-rate-alist nil)

(defconst sangels-rate-max 6)

(defun sangels-insert-movies ()
  (save-excursion
    (let* ((inhibit-read-only t)
           (files (remove-if-not
                   (lambda (x)
                     (and (not (member (file-name-nondirectory x) '("." "..")))
                          (file-directory-p x)
                          (member sangels-thumbnail (directory-files x))))
                   (directory-files sangels-movies-dir t)))
           (ids (mapcar 'file-name-nondirectory files)))
      (erase-buffer)
      (setq ids (sangels-sort-ids ids))
      (dolist (id ids)
        (let ((file (expand-file-name id sangels-movies-dir))
              (pos (point)))
          (insert-image-file (expand-file-name sangels-thumbnail file))
          (end-of-line)
          (insert (propertize (format "%-15s " id)
                              'face 'sangels-name))
          (sangels-insert-rate id)
          (insert "\n")
          (put-text-property pos (point) 'sangels-id id))))))

(defun sangels-sort-by-name (a b)
  (string< a b))

(defun sangels-sort-by-rate (a b)
  (or (> (sangels-rate a) (sangels-rate b))
      (sangels-sort-by-name a b)))

(defun sangels-sort-ids (ids)
  (sort ids
        (or sangels-sort-by
            'sangels-sort-by-name)))
(defun sangels-insert-rate (id)
  (let ((rate (sangels-rate id)))
    (insert (propertize (concat
                         (make-string rate ?★)
                         (make-string (- sangels-rate-max rate) ?☆))
                        'sangels-rate t
                        'face 'sangels-rate))))

(defun sangels-current-id ()
  (get-text-property (point) 'sangels-id))

(defun sangels-play-movie (movie)
  (let ((explicit-shell-file-name "cmdproxy")
        (shell-file-name "cmdproxy"))
    (apply
     'call-process-shell-command
     "start" nil "*tmp*" nil
     (mapcar (lambda (x) (concat "\"" x "\""))
             (list sangels-player
                   (unix-to-dos-filename movie))))))

(defun sangels-select ()
  (interactive)
  (let ((id (sangels-current-id)))
    (when id
      (sangels-play-movie (expand-file-name
                           sangels-m3u
                           (expand-file-name id sangels-movies-dir))))))

(defun sangels-quit ()
  (interactive)
  (kill-buffer sangels-buffer))

(defun sangels-rate (id)
  (or (cdr (assoc id sangels-rate-alist)) (/ sangels-rate-max 2)))

(defun sangels-rate-save ()
  (interactive)
  (let ((dir (file-name-directory sangels-rate-file)))
    (unless (file-exists-p dir)
      (make-directory dir t)))
  (with-temp-file sangels-rate-file
    (insert (pp-to-string sangels-rate-alist))))

(defun sangels-rate-load ()
  (interactive)
  (when (file-exists-p sangels-rate-file)
    (with-temp-buffer
      (insert-file-contents sangels-rate-file)
      (goto-char (point-min))
      (setq sangels-rate-alist (read (current-buffer))))))

(defun sangels-rate-plus (&amp;optional n)
  (interactive "p")
  (setq n (or n 1))
  (let* ((id (sangels-current-id))
         (cell (assoc id sangels-rate-alist)))
    (unless cell
      (setq cell (cons id (sangels-rate id)))
      (setq sangels-rate-alist (cons cell sangels-rate-alist)))
    (setcdr cell (+ (cdr cell) n))
    (save-excursion
      (let ((inhibit-read-only t))
        (beginning-of-line)
        (goto-char (next-single-property-change (point) 'sangels-rate))
        (delete-region (point)
                       (next-single-property-change (point) 'sangels-rate))
        (sangels-insert-rate id)))
    (sangels-rate-save)))

(defun sangels-rate-minus (&amp;optional n)
  (interactive "p")
  (setq n (or n -1))
  (sangels-rate-plus (- n)))

(defun sangels-post-command-hook ()
  (save-excursion
    (move-overlay
     sangels-highlight-overlay
     (progn
       (move-beginning-of-line 1)
       (point))
     (progn
       (move-end-of-line 1)
       (forward-line)
       (point))
     (current-buffer))))

(defun sangels-mode ()
  (interactive)
  (kill-all-local-variables)
  (use-local-map sangels-mode-map)
  (setq sangels-highlight-overlay (make-overlay 0 0))
  (overlay-put sangels-highlight-overlay 'face 'highlight)
  (overlay-put sangels-highlight-overlay 'evaporate t)
  (make-local-variable 'post-command-hook)
  (add-hook 'post-command-hook 'sangels-post-command-hook nil t)
  (setq major-mode 'sangels-mode)
  (setq mode-name "Sangels")
  (run-mode-hooks 'sangels-mode-hook)
  (set-buffer-modified-p nil)
  (setq buffer-read-only t))

(defun sangels (&amp;optional arg)
  (interactive "P")
  (when (or arg (not sangels-movies-dir))
    (setq sangels-movies-dir (read-directory-name "movies dir: ")))
  (sangels-rate-load)
  (switch-to-buffer (get-buffer-create sangels-buffer))
  (sangels-insert-movies)
  (sangels-mode))

(provide 'sangels)

real street angels から mechanize を使って動画を取ってきてEmacsで見てみるよ

せっかく書いたから匿名でのせてみるよ

使い方は

  • 動画を取ってきたいよ
    • config.yamlユーザとかを設定するよ
    • ids.txt に取ってきたいIDを書くよ
    • sangels.bat を実行するよ
  • Emacs動画を見たいよ
    • sangels.el を load するよ
    • M-x sangels だよ

必要なものを gem で取ってくるにはこうすればいいよ

  • gem install -r log4r
  • gem install -r -v 0.6 hpricot
  • gem install -r mechanize

長すぎてelispが消えたから続きがあるよ

sangels.bat - 起動用バッチファイル

@echo off
setlocal
set WD=%~dp0
cd /d %WD%

ruby get_movies.rb
ruby get_images.rb
ruby create_m3u.rb

ruby

config.yaml - 設定ファイル
user: ユーザID
password: パスワード
ids_file: ids.txt
done_file: ids_done.txt
movies_dir: movies

log4r_config:
  pre_config:
    global: INFO
  loggers:
    - name: app
      type: Log4r::Logger
      level: INFO
      outputters:
        - STDOUT
        - FILE
  outputters:
    - name: STDOUT
      type: Log4r::StdoutOutputter
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%H:%M:%S"
    - name: FILE
      type: Log4r::FileOutputter 
      filename: "#{LOGDIR}/sangels.log"
      formatter:
        type: Log4r::PatternFormatter
        pattern: "%d [%l] %C - %M"
        date_pattern: "%Y-%m-%d %H:%M:%S"
get_movies.rb
require 'fileutils'
require 'logger'
require 'mechanize'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_movies")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

class IDFile
  def initialize(file)
    @file = file
    unless File.exist?(@file)
      Fileutils.touch(@file)
    end
  end

  def ids(contains_comment = nil)
    File.open(@file) {|io|
      io.to_a.map {|x|
        x.chomp
      }.select {|x|
        if x.empty?
          nil
        elsif contains_comment
          true
        else
          not /^\s*\#/ =~ x
        end
      }
    }
  end

  def add(id)
    ids = ids(true)
    unless ids.any? {|x| x == id}
      write(ids + [id])
    end
  end

  def delete(id)
    ids = ids(true)
    if ids.any? {|x| x == id}
      write(ids - [id])
    end
  end

  def write(ids)
    File.open(@file, "w") {|io|
      ids.each {|x| io.puts x}
    }
  end
end


$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  ids_file = IDFile.new($config.ids_file)
  done_file = IDFile.new($config.done_file)
  movies_dir = $config.movies_dir
  wget = WGet.new

  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  ids_file.ids.each {|id|
    begin
      movies = sangels.movies(id)
    rescue SAngels::Movies::InvalidMoviesError
      $log.warn("invalid movie id: #{id}")
      next
    end
    dir = File.expand_path(id, movies_dir)
    movies.each {|link|
      wget.retrieve(link.href, dir)
    }
    expected = movies.movie_links.map{|x| File.basename(x.href)}
    actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)}
    if (expected - actual).empty?
      done_file.add(id)
      ids_file.delete(id)
    end
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
get_images.rb
require 'fileutils'
require 'logger'
require 'mechanize'
require 'ostruct'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"
require "#{BASEDIR}/sangels"

$config = load_config(BASEDIR)
prepare_logger(BASEDIR)
$log = new_logger("get_images")
WWW::Mechanize.log = new_logger("mechanize")
WGet.log = $log

$log.info("BEGIN #{$0} ================")
exit_code = 0
begin
  movies_dir = $config.movies_dir
  sangels = SAngels.new
  sangels.login($config.user, $config.password)
  thumbnails = sangels.thumbnails

  Dir.glob("#{movies_dir}/*").each {|dir|
    next unless File.directory? dir
    id = File.basename(dir)

    url = thumbnails.url(id)
    unless url
      $log.warn("#{id} is not found")
      next
    end
    path = File.expand_path("00_thumbnail#{File.extname(url)}", dir)
    next if File.exist? path

    $log.info("retrieving #{url}")
    thumbnail = thumbnails.get_file(id)
    File.open(path, "wb") {|io| io.write(thumbnail)}
  }
rescue => e
  $log.error(e)
  exit_code = 1
end

$log.info("END #{$0} (#{exit_code}) ================")
exit exit_code
create_m3u.rb
BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

$config = load_config(BASEDIR)
movies_dir = $config.movies_dir
Dir.glob("#{movies_dir}/*") {|dir|
  next unless File.directory? dir
  name = File.basename(dir)
  files = Dir.glob("#{dir}/*.wmv").sort

  File.open("#{movies_dir}/#{name}.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{name}/#{File.basename(file)}"
    }
  }

  File.open("#{dir}/00_movies.m3u", "w") {|io|
    files.each {|file|
      io.puts "#{File.basename(file)}"
    }
  }
}
sangels.rb
require 'mechanize'
require 'hpricot'

BASEDIR = File.dirname($0)
require "#{BASEDIR}/util"

class SAngels
  HOST = "real2.s-angels.com"
  LOGIN_URL = "http://#{HOST}/member/"
  INFO_URL = "http://#{HOST}/teigaku/item.php"
  THUMBNAILS_URL = "http://#{HOST}/teigaku/"
  THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/"

  def initialize()
    @agent = WWW::Mechanize.new
  end

  def login(user, password)
    login_form = @agent.get(LOGIN_URL).forms.find {|form|
      form.fields.any? {|field| field.name == "frmLoginid"}
    }
    login_form.frmLoginid = user
    login_form.frmPw = password
    @agent.submit(login_form)
  end

  def movies(id, no_validate = nil)
    Movies.new(@agent, id, !no_validate)
  end

  def thumbnails
    Thumbnails.new(@agent)
  end

  class Thumbnails
    def initialize(agent)
      @agent = agent
      doc = Hpricot(@agent.get_file(THUMBNAILS_URL))
      elems = doc.search("div[@class=realthum]/a")
      @links = Hash(
        elems.map {|elem|
          href = elem["href"]
          id = $1 if /ID=(.+)/ =~ href
          url = elem.search("img")[0]["src"]
          [id, url]
        })
    end

    def get_file(id)
      @agent.get_file(url(id))
    end

    def url(id)
      @links[id]
    end

    def exist?(id)
      url(id)
    end
  end

  class Movies
    class InvalidMoviesError < StandardError
    end

    def initialize(agent, id, no_validate)
      @agent = agent
      @id = id
      if !no_validate &amp;&amp; !valid?
        raise InvalidMoviesError
      end
    end

    def info_page_url
      "#{INFO_URL}?ID=#{@id}"
    end

    def info_page
      @agent.get(info_page_url)
    end

    def movies_page
      @agent.click(info_page.links.find {|link| /P=10/ =~ link.href})
    end

    def movie_links
      movies_page.links.select {|link|
        /wmv$/ =~ link.href
      }.sort {|a, b|
        File.basename(a.href) <=> File.basename(b.href)
      }
    end

    def valid?
      info_page.uri.to_s == info_page_url
    end

    def each(&amp;block)
      orig_links = movie_links
      orig_links.each {|orig_link|
        link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)}
        block.call(link)
      }
    end
  end
end
util.rb
require 'log4r'
require 'log4r/yamlconfigurator'
require 'singleton'
require 'fileutils'
require 'ostruct'

def Hash(a)
  Hash[*a.flatten]
end

def load_config(basedir)
  OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)})
end

def new_logger(name)
  Log4r::Logger.new("app::#{name}")
end

def prepare_logger(basedir, logdir = nil)
  logdir ||= basedir
  Log4r::YamlConfigurator["LOGDIR"] = logdir
  Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml")
end

class NullObject
  include Singleton
  def method_missing(message, *arg)
    NullObject.singleton
  end
end

class WGet
  class << self
    attr_accessor :log
    def initialize
      super
      @log = NullObject.singleton
    end
  end
  
  def log
    self.class.log
  end

  def retrieve(url, dir)
    FileUtils.mkdir_p(dir)
    file = File.expand_path(File.basename(url), dir)
    if File.exist?(file)
      log.info("already retrieved #{url}")
      return true
    end

    tmp = "#{file}.part"
    log.info("retrieving #{url}")
    ret = system("wget", "-c", "-O", tmp, url)
    if ret
      log.info("retrieving succeeded #{url}")
      File.rename(tmp, file)
    else
      if $? == 0x020000 # Ctrl-C
        exit($?)
      else
        log.error("retrieving failure #{url} (#{$?})")
      end
    end
    return ret
  end
end

2008-10-02

Classic Texts in Computer Science

リブログです。

    http://www.zafar.se/bkz/Articles/ClassicCompScienceTexts

    http://www.zafar.se/bkz/wiki/view/43bafac8c8570f4f

    にあったけど、無くなっていたので

    http://web.archive.org/web/20060823143349/www.zafar.se/bkz/home/classictextsincomputersc.html

    から拾ってきた。

    でも書いてる途中に↓を見つけてしまったのでした。

    Classical Computer Science Texts

    2008-09-28

    みんないじめてるけど、はてなキーワードはすごいんだよ!

    例えば「 はてなキーワードが嫌いになった理由 - 将来が不安」とか、最近はてなキーワードがだめとか何とか、そういう話題がかまびすしかったわけですが、いやいや、今更言うのもなんですが、はてなキーワードはすごいんですよ?

    キーワードページからそのキーワード含む日記が解る。こういう機能、なかなか無いです。

    でも、そのキーワードを使っているはてな以外の日記も見たい時があるかもしれません。

    テクノラティなら、はてなに限らず、色々なブログサービスの、そのキーワードを含む記事を探すことができます。

    でも、日記キーワードリンクからダイレクトに飛べないと、いちいち見る気になりません。なので、そういうGreasemonkeyスクリプトを書いてみました。はてダの記事中のキーワードリンクの、リンク先をテクノラティにします。

    // ==UserScript==
    // @name           Keyword to Technorati
    // @namespace      http://anond.hatelabo.jp/
    // @include        http://d.hatena.ne.jp/*
    // ==/UserScript==
    var keywords = document.getElementsByClassName("keyword");
    for(var i=0; i<keywords.length; i++){
        keywords.item(i).href = "http://www.technorati.jp/search/" + keywords.item(i).textContent;
    }
    

    これではてダ以外の記事も見れて、ちょっと世界が広がるかも!

    でも、これもちょっと不便です。キーワードリンクで、そのキーワード意味を知りたい時もあるからです。

    はてなキーワードの素晴らしいところは、キーワード含む日記キーワード意味、どちらも一つのページで確認できる事です!まぁキーワードの説明とWikipedia、どっちか片方でも良いような気もしますがf(^ ^;)

    そこで、テクノラティキーワード検索結果ページにも、そのキーワード意味が表示されれば便利です。

    (余談ですけど、Wikipediaの記事があるなら、Wikipediaの記事だけ表示すれば十分かなぁとか思っちゃったり?概してWikipedia記述の方が優れてるし…)

    というわけで、これもユーザースクリプトで実現してみます。

    // ==UserScript==
    // @name           Technorati with Wikipedia or ?keyword
    // @namespace      http://anond.hatelabo.jp/
    // @description    Add Wikipedia in Technorati search page
    // @include        http://www.technorati.jp/search/*
    // ==/UserScript==
    
    var keyword = (decodeURIComponent(document.URL).split("?")[0]+" ").slice("http://www.technorati.jp/search/".length, -1);
    
    function appendKeyword(title,body,url){
        var div = document.createElement("div");
        div.style.border = "inset gray thin";
        div.style.padding = "5px 14px";
        
        var h2 = document.createElement("h2");
        h2.innerHTML = title.link(url);
        h2.style.fontSize = "2em";
        div.appendChild(h2);
        
        var content = document.createElement("div");
        content.innerHTML = body;
        div.appendChild(content);
        
        div.appendChild(document.createElement("hr"));
        
        var foot = document.createElement("div");
        foot.innerHTML = "["+decodeURIComponent(url).link(url)+"]";
        foot.style.textAlign = "right";
        div.appendChild(foot);
        
        //document.getElementById("main").insertBefore(div, document.getElementById("main").firstChild);
        document.getElementById("extra").insertBefore(div, document.getElementById("extra").firstChild);
    }
    
    GM_xmlhttpRequest({
        method: "GET",
        url: "http://wikipedia.simpleapi.net/api?output=json&amp;keyword="+keyword,
        onload: function(response){
            var wp = eval(response.responseText);
            if(wp){
                appendKeyword(wp[0].title, wp[0].body, "http://ja.wikipedia.org/wiki/"+encodeURIComponent(wp[0].title));
            }else{
                GM_xmlhttpRequest({
                    method: "GET",
                    url: "http://d.hatena.ne.jp/keyword?mode=rss&amp;ie=utf8&amp;word="+encodeURIComponent(keyword),
                    onload: function(response){
                        var hk = (new DOMParser).parseFromString(response.responseText, "text/xml");
                        appendKeyword(keyword,
                            hk.getElementsByTagName("description").item(1).textContent,
                            "http://d.hatena.ne.jp/keyword/"+keyword
                        );
                    }
                });
            }
        }
    });
    

    これで、はてダキーワードリンクで飛んだ先に、その単語の説明とはてな以外も含めたブログ記事が表示されます。やったね\(^o^)/

    追記

    用語の説明は、検索結果の上に表示するより、サイドバー広告が表示されてる)にあった方が便利かなーとか思ったので、コードをちょぴっと変更しました。既にインスコしちゃってた人、ごめんね!

    ところでテクノラティ検索結果のAutopagerize、なんか1頁目ばっかり継ぎ足される気がするけど、ボクだけかな?

    2008-09-18

    地下生活者の手遊び から「にゃ」ほかを除去するGreasemonkey

    地下生活者の手遊び(tikani_nemuru_Mのダイアリー) が「にゃ」が目に付いて読みづらいので除去するUser Scriptを書いた。

    前同様ブックマークレットを見たけど、Greasemonkeyのほうがいいと思ったので。

    カタカナ化された語が多用されてるのも目につくのでそれも除去するようにした。

    「にゃ」のみ除去版

    // ==UserScript==
    // @name           No Flavour tikani_nemuru_M
    // @namespace      http://anond.hatelabo.jp/20080918103850/gm/tikani_nemuru_M/nya
    // @include        http://*.hatena.ne.jp/tikani_nemuru_M/*
    // ==/UserScript==
    
    document.body.innerHTML = document.body.innerHTML.replace(/にゃん([ねな])/g, 'なの$1')
    .replace(/個にゃん/g, '個人')
    .replace(/にゃんからね/g, 'なんだからね')
    .replace(/にゃ。/g, '。')
    .replace(/にゃー/g, 'ない')
    .replace(/にゃ/g, 'な');
    

    にゃ+カタカナ語除去版

    // ==UserScript==
    // @name           No Flavour tikani_nemuru_M
    // @namespace      http://anond.hatelabo.jp/20080918103850/gm/tikani_nemuru_M/nya_katakana
    // @include        http://*.hatena.ne.jp/tikani_nemuru_M/*
    // ==/UserScript==
    
    document.body.innerHTML = document.body.innerHTML.replace(/にゃん([ねな])/g, 'なの$1')
    .replace(/個にゃん/g, '個人')
    .replace(/にゃんからね/g, 'なんだからね')
    .replace(/にゃ。/g, '。')
    .replace(/にゃー/g, 'ない')
    .replace(/にゃ/g, 'な')
    .replace(/オモチロイ/g, '面白い')
    .replace(/スバラチイ/g, '素晴らしい')
    .replace(/ジンケン/g, '人権')
    .replace(/ニンゲン/g, '人間')
    .replace(/ニッポンジン/g, '日本人')
    .replace(/カガク/g, '科学')
    .replace(/シヤワセ/g, '幸せ')
    .replace(/キョウダイ/g, '兄弟')
    .replace(/ウサンクセエ/g, '胡散臭い')
    .replace(/メンドクセエ/g, '面倒臭い')
    .replace(/ワリイ/g, '悪い')
    .replace(/ソノトオリ/g, 'その通り')
    .replace(/ケコーン/g, '結婚')
    .replace(/ガクモン/g, '学問')
    .replace(/アッ?タリマエ/g, '当たり前')
    .replace(/アリガチ/g, '有りがち')
    .replace(/カンタン/g, '簡単')
    .replace(/ムツカシイ/g, '難しい')
    .replace(/イイカゲン/g, 'いい加減')
    .replace(/メリケン/g, 'アメリカ')
    .replace(/シャカイ/g, '社会')
    .replace(/キョーサン/g, '共産')
    .replace(/漢(オトコ)/g, '漢')
    .replace(/怖気(オゾケ)/g, '怖気')
    .replace(/ちかれた/g, '疲れた');
    

    エスケープしてないので文字コードUTF-8で。

    2008-09-14

    MIAUは結局、何がしたいのか?

    池田先生の「造反」でしっちゃかめっちゃかになったようなMIAU、今さらだけど、その趣旨をちょっと見てみた。ココね。

    コレを見ると、MIAUがいったいぜんたい何を目指しているのかがわからなくなってくるのね。いや、ページにはいちおうソレっぽいことは書いてある。じゃあ、具体的にどういう方面に働き掛けていくのかをそろそろby nameで示さないといけないんじゃないかなあ。

    寄付を集めたり、会員を募ったり、ラジバンダリという行為が必要なのはまあ理解できなくもない。そりゃこういう活動はえてしてカネの掛かるものだから。でも、カネを集められたとしてその使途をどう考えているか、そしてその中長期の計画はどうなのか、といったあたりがクリアにならないとねえ。

    津田さんとか小寺さんとか、主要メンバー子供っぽさも気になる。いや、個人的には津田さんは嫌いじゃないよ。でもね、いいかげん人を食ったみたいな振る舞いはやめようよ。実は、音楽著作権について彼が制度側と反対側の立場でそれぞれ一人二役を演じたあたりから、彼は信用ならないと思ってる。つーかソレってずいぶん前なんだけどw

    それと、お墨付きが欲しかったときに池田先生しか思いつかなかったってのもなんか貧相だなあと思ってさ。これじゃ自業自得、身から出たサビと言われてもしゃあない。上武大学なんていう駅弁じゃなくそれ相応の大学のセンセなんかでも、著作権行政に積極的にコミットすることを表明してる法学者はけっこういるんだよ。ググればすぐ出てくる。

    そういう人たちが「インターネット先進ユーザ」ってさ、なんか笑わせるんよ。Macをハック(笑)してるから俺って先進的じゃん、みたいな非社会性を感じる。

    誰がハッピーになるのか、誰がケーザイ的に得をするのか、そういうあたりの目標をそろそろ具体的な形で見せてくれないとね。

    2008-08-31

    http://anond.hatelabo.jp/20080831195737

    <meta name="Hatena::Bookmark" content="nocomment" />←できなくね

    にっきの はてぶのところ を ひひょうじにするんだ

    くさいもの には ふたをするんだ

    みたくないもの には めをつぶるん

    http://anond.hatelabo.jp/20080831165936

    リアリティがない、修正しておいたお。

    GirlFriend *honey;
    
    honey = new GirlFriend;
    while(me){
      if (me->searchOtherGirl() > honey) {
        break;
      }
    
      if(honey->acceptRequirement(me)){
        me->getMarried(honey);
        break;
      }
      Sleep(7*60*60);
    }
    
    me->save(id,name,haney);
    delete honey;
    
    
    function getMarried(wife){
    	if(me->acceptRequirement(wife)){
    		while(true){
    			Sleep(4*60*60);
    			if (dead or me->money > 3000*10000) {
    				break;
    			}
    		}
    //	  goto normalend;
    	}else{
    	  goto badend;
    	}
    //	goto happyend;
    	return true;
    }
    

    24時間テレビ2008年走行ルート8/30 2:30

    http://42.195km.net/jogsim/

    <kml xmlns="http://earth.google.com/kml/2.1"><Document><name>Jogging simulator</name><open>1</open><Style id="linestylered"><LineStyle><color>7f0000ff</color><width>4</width></LineStyle></Style><Placemark>

    <name>2008/8/31</name>

    <styleUrl>#linestylered</styleUrl><LineString><extrude>1</extrude><tessellate>1</tessellate>

    <dist_elev>

    0,0

    94,0

    85,0

    100,0

    502,0

    204,0

    227,0

    247,0

    147,0

    54,0

    56,0

    208,0

    81,0

    114,0

    121,0

    19,0

    45,0

    46,0

    136,0

    144,0

    37,0

    149,0

    100,0

    65,0

    51,0

    94,0

    52,0

    134,0

    153,0

    148,0

    104,0

    378,0

    144,0

    108,0

    47,0

    392,0

    337,0

    69,0

    109,0

    28,0

    144,0

    63,0

    103,0

    82,0

    41,0

    77,0

    71,0

    192,0

    120,0

    78,0

    70,0

    41,0

    185,0

    57,0

    85,0

    133,0

    173,0

    115,0

    21,0

    34,0

    167,0

    90,0

    92,0

    98,0

    251,0

    126,0

    107,0

    114,0

    142,0

    26,0

    189,0

    210,0

    366,0

    100,0

    153,0

    217,0

    171,0

    424,0

    205,0

    163,0

    108,0

    87,0

    62,0

    33,0

    98,0

    80,0

    89,0

    71,0

    27,0

    434,0

    199,0

    205,0

    290,0

    105,0

    235,0

    159,0

    110,0

    210,0

    162,0

    450,0

    63,0

    96,0

    154,0

    97,0

    491,0

    374,0

    53,0

    61,0

    95,0

    201,0

    73,0

    76,0

    33,0

    35,0

    175,0

    43,0

    36,0

    68,0

    24,0

    55,0

    24,0

    35,0

    13,0

    95,0

    20,0

    101,0

    54,0

    97,0

    23,0

    65,0

    24,0

    40,0

    39,0

    61,0

    41,0

    23,0

    37,0

    40,0

    101,0

    153,0

    136,0

    116,0

    132,0

    103,0

    41,0

    44,0

    88,0

    74,0

    48,0

    38,0

    265,0

    98,0

    152,0

    86,0

    140,0

    84,0

    23,0

    110,0

    26,0

    69,0

    113,0

    137,0

    150,0

    143,0

    93,0

    194,0

    103,0

    67,0

    136,0

    104,0

    116,0

    201,0

    178,0

    199,0

    116,0

    89,0

    71,0

    60,0

    254,0

    64,0

    127,0

    114,0

    149,0

    32,0

    55,0

    88,0

    95,0

    126,0

    70,0

    396,0

    283,0

    178,0

    335,0

    100,0

    242,0

    376,0

    717,0

    259,0

    211,0

    80,0

    36,0

    32,0

    38,0

    30,0

    28,0

    489,0

    278,0

    46,0

    254,0

    81,0

    68,0

    220,0

    64,0

    431,0

    93,0

    148,0

    126,0

    222,0

    222,0

    227,0

    152,0

    172,0

    138,0

    219,0

    180,0

    177,0

    110,0

    538,0

    161,0

    117,0

    120,0

    777,0

    189,0

    269,0

    182,0

    92,0

    168,0

    158,0

    42,0

    53,0

    59,0

    35,0

    111,0

    78,0

    82,0

    54,0

    18,0

    64,0

    518,0

    119,0

    529,0

    95,0

    121,0

    113,0

    107,0

    111,0

    480,0

    88,0

    241,0

    209,0

    232,0

    151,0

    275,0

    76,0

    61,0

    51,0

    37,0

    45,0

    77,0

    52,0

    157,0

    25,0

    238,0

    413,0

    268,0

    227,0,

    63,0,

    141,0,

    </dist_elev>

    <visited_place>

    ,,

    ,,

    ,,

    </visited_place>

    <coordinates>

    139.63037252426147,35.18771434049862

    139.6301257610321,35.186898880828714

    139.6309196949005,35.18730222749469

    139.63167071342468,35.18795985363517

    139.63409543037415,35.19201071329039

    139.63593006134033,35.19307161935013

    139.63775396347046,35.194465681456606

    139.64007139205933,35.19562299786218

    139.64163780212402,35.19595440818654

    139.64189529418945,35.19639277951902

    139.64178800582886,35.196883752602936

    139.64200258255005,35.198742409538866

    139.64230298995972,35.199426244312825

    139.6424102783203,35.20044321871356

    139.6435260772705,35.201039370200796

    139.64359045028687,35.20119717427379

    139.64335441589355,35.20154784889382

    139.64371919631958,35.201828387499695

    139.64401960372925,35.203020665763816

    139.64534997940063,35.20372199774286

    139.64539289474487,35.20405512831116

    139.6465301513672,35.205019445937246

    139.6470022201538,35.20582595733999

    139.64708805084229,35.20640453667283

    139.64764595031738,35.20647466722091

    139.6473240852356,35.20728116417065

    139.6468734741211,35.20756168297117

    139.645414352417,35.20742142369205

    139.64423418045044,35.20840323355815

    139.64389085769653,35.20970060695813

    139.6442985534668,35.21057719887122

    139.64728116989136,35.212943949762256

    139.6478819847107,35.21413606482221

    139.6479892730713,35.21510026272678

    139.64771032333374,35.21545087730718

    139.6439015865326,35.217091733388784

    139.64099407196045,35.21896745775251

    139.6406614780426,35.21952841362797

    139.64028596878052,35.22045748826842

    139.64056491851807,35.22056792472205

    139.64037716388702,35.22185633906688

    139.64052200317383,35.222408510381754

    139.6403932571411,35.22332878755783

    139.64070439338684,35.22401679748617

    139.64039862155914,35.22428411187213

    139.64077413082123,35.22490638129421

    139.64128375053406,35.22538403557113

    139.6426409482956,35.226707429981815

    139.64331686496735,35.227636422435864

    139.6432203054428,35.22832877781907

    139.64323103427887,35.22895539816757

    139.64289844036102,35.22920516856592

    139.64419662952423,35.23048906391726

    139.64443266391754,35.23096230349543

    139.64511930942535,35.23147497658997

    139.6465677022934,35.23165024869969

    139.64845061302185,35.23140048582869

    139.64967906475067,35.23116211492625

    139.6494671702385,35.231225651354805

    139.64964419603348,35.231497323798344

    139.6512696146965,35.232189646234715

    139.65178191661835,35.232881962762875

    139.65204745531082,35.2336772431284

    139.65270459651947,35.23437173778668

    139.6551775932312,35.23337578241781

    139.65656161308289,35.233314438527294

    139.65765595436096,35.232972664573865

    139.65810656547546,35.23392787534491

    139.658203125,35.23519855113892

    139.65833187103271,35.23540886797109

    139.65907216072083,35.2369949898497

    139.6603488922119,35.23857231786453

    139.66199040412903,35.24157791910687

    139.66269850730896,35.242261393057

    139.66373920440674,35.243339167197576

    139.66395378112793,35.24528438182719

    139.6650266647339,35.246546117717116

    139.66514468193054,35.25035749231099

    139.66588497161865,35.25210102693307

    139.66530561447144,35.25348531414836

    139.66552019119263,35.254440283321436

    139.66533780097961,35.25520775496638

    139.66469943523407,35.25541363939197

    139.66435611248016,35.25551439115435

    139.6632832288742,35.25550124962722

    139.66244101524353,35.25569837231032

    139.6625965833664,35.25648685824873

    139.66287553310394,35.25708697851668

    139.66305255889893,35.25728409734326

    139.65897023677826,35.25930344259883

    139.65691030025482,35.25990792228293

    139.65496838092804,35.2608365344634

    139.65259194374084,35.262579843685224

    139.65155124664307,35.262995954663744

    139.6489655971527,35.263105457197696

    139.64743673801422,35.26379750978935

    139.64679837226868,35.2646384771354

    139.64592933654785,35.266381704564445

    139.64587569236755,35.26783494943115

    139.64685201644897,35.271794230515624

    139.64729189872742,35.27223219220043

    139.6482789516449,35.27253000479355

    139.6491265296936,35.27373000326553

    139.64948058128357,35.27455334959795

    139.65195894241333,35.27846850965091

    139.65227007865906,35.281822959319406

    139.6517014503479,35.281920174966054

    139.65117037296295,35.28225736351309

    139.65034425258636,35.28172749516593

    139.64833796024323,35.28096552964672

    139.64753329753876,35.280974287911825

    139.64679300785065,35.281289584824215

    139.64642822742462,35.281289584824215

    139.64605808258057,35.28118886511065

    139.64541971683502,35.282668994381474

    139.64511394500732,35.28237559812567

    139.6449476480484,35.282086579879035

    139.644513130188,35.28159174321329

    139.64425027370453,35.28159612231207

    139.64376747608185,35.28130272216894

    139.6435958147049,35.28146912835075

    139.643252491951,35.28161801780251

    139.64311838150024,35.281644292383234

    139.64330077171326,35.28248507446485

    139.6431827545166,35.28263396204861

    139.64356362819672,35.28348392974092

    139.6432739496231,35.2839108807827

    139.64257925748825,35.28325184258908

    139.64232712984085,35.28327373763183

    139.6418336033821,35.283694121304364

    139.64205890893936,35.28379921688149

    139.64225471019745,35.28412545019985

    139.64259535074234,35.28434220852351

    139.6428018808365,35.284867680839

    139.6426945924759,35.28522237272412

    139.64259535074234,35.28541066531569

    139.6425873041153,35.28574564989031

    139.6428206562996,35.28604560222215

    139.64264899492264,35.286938884335825

    139.6430405974388,35.28827222092029

    139.64410811662674,35.28913482763547

    139.6445855498314,35.29010470187369

    139.64542508125305,35.29107675378499

    139.64553773403168,35.29199406233845

    139.64569866657257,35.29233777670865

    139.6456155180931,35.29272308535028

    139.64639872312546,35.293193772395284

    139.6465301513672,35.293845286365624

    139.64622974395752,35.294195560500974

    139.64582204818726,35.29424810149053

    139.6429681777954,35.29374020382943

    139.64189529418945,35.2938628001084

    139.64028596878052,35.29423058783114

    139.6393847465515,35.29447577871785

    139.63788270950317,35.294178046830204

    139.63728189468384,35.29360009356897

    139.6370244026184,35.29360009356897

    139.6359086036682,35.29398539620167

    139.63569402694702,35.29382777261908

    139.63526487350464,35.29331987232042

    139.63402032852173,35.29340744156481

    139.63268995285034,35.29398539620167

    139.6315312385559,35.294948644758904

    139.63088750839233,35.29612204114941

    139.6307373046875,35.29694515980801

    139.62977170944214,35.29850380837487

    139.6297287940979,35.29943197809182

    139.6290421485901,35.29965964073617

    139.62880611419678,35.30086974447647

    139.6297287940979,35.3014301337228

    139.63011503219604,35.30241956151048

    139.63161706924438,35.303750454142175

    139.6329179406166,35.30494473650507

    139.63504761457443,35.305380329980835

    139.63613122701645,35.30592317685907

    139.6368795633316,35.30643318693823

    139.6370592713356,35.307057014637834

    139.63687419891357,35.307574897464406

    139.63496446609497,35.30923840383023

    139.6350073814392,35.309816245404804

    139.63571548461914,35.310796815600966

    139.6355438232422,35.31181239363021

    139.6360158920288,35.313090603025756

    139.6363377571106,35.313213169988664

    139.63650941848755,35.31368592653426

    139.63706731796265,35.31433377360878

    139.63760375976562,35.31506916129673

    139.63820457458496,35.31608468568258

    139.63822603225708,35.31671500474969

    139.633891582489,35.31713521473183

    139.63078022003174,35.317312052419815

    139.6289563179016,35.31673426439491

    139.62537288665771,35.31601640079532

    139.62493300437927,35.31683931707012

    139.62274432182312,35.318082430031566

    139.6206521987915,35.32100104417254

    139.62007820606232,35.32742617587357

    139.62111622095108,35.329590384931535

    139.6212449669838,35.33148319975148

    139.62037861347198,35.331378166102226

    139.6199843287468,35.3314175537367

    139.61993604898453,35.33170420760937

    139.61999773979187,35.33203900054002

    139.61999505758286,35.33231252314687

    139.61986631155014,35.33254446959218

    139.61979389190674,35.336935134045376

    139.62048053741455,35.33936821123701

    139.6203088760376,35.33975329587599

    139.61902141571045,35.34178371180497

    139.61829721927643,35.34220204112146

    139.61866199970245,35.342731513456684

    139.61660206317902,35.34376419331703

    139.61593687534332,35.343956725390434

    139.61129128932953,35.344731224777654

    139.61041688919067,35.345163540994

    139.6093225479126,35.34614368252144

    139.6084749698639,35.347036301065934

    139.60789561271667,35.34897027407597

    139.6069622039795,35.350816693787074

    139.6068549156189,35.352855582153644

    139.606693983078,35.35421189569119

    139.6068549156189,35.35575194022067

    139.60676908493042,35.356985704705835

    139.60623264312744,35.358901939828456

    139.6061897277832,35.36052064182823

    139.60673689842224,35.362043067067724

    139.60736989974976,35.362883013532

    139.61206912994385,35.365822757339565

    139.61312055587769,35.36698637635618

    139.6134102344513,35.368009997262035

    139.61307764053345,35.36904935292668

    139.61015939712524,35.37561063259531

    139.60919380187988,35.37711527753762

    139.60623264312744,35.37704529467405

    139.60445165634155,35.3762947246194

    139.60386157035828,35.375621130188655

    139.60379719734192,35.37411645738611

    139.60410833358765,35.37271673656808

    139.60407614707947,35.37234055745931

    139.60367918014526,35.37199062183042

    139.60302472114563,35.37200811864791

    139.60278868675232,35.37226182207509

    139.60188746452332,35.37158819398145

    139.60111498832703,35.37127324904777

    139.60028886795044,35.3709845484456

    139.59980607032776,35.370704595360294

    139.5996129512787,35.37065210404869

    139.59943056106567,35.37120326111783

    139.5940661430359,35.369628516649065

    139.59286451339722,35.36919983088999

    139.58793997764587,35.36666266447924

    139.58701729774475,35.36625146103402

    139.58571910858154,35.366015236830954

    139.58447456359863,35.366050233052796

    139.58334803581238,35.36633895130417

    139.58226442337036,35.36680264815291

    139.57830548286438,35.36965476264197

    139.5775008201599,35.37009219460078

    139.5751190185547,35.371054536565204

    139.5730483531952,35.371885640845875

    139.57077383995056,35.37283921310886

    139.56947565078735,35.373687795464576

    139.56740498542786,35.37548990983999

    139.56669688224792,35.37513123979827

    139.5662248134613,35.37473757572232

    139.56590294837952,35.37436140603325

    139.5657742023468,35.37404997117641

    139.56576079130173,35.3736497406537

    139.56597536802292,35.372978311220415

    139.56588953733444,35.372516836937635

    139.5649641752243,35.37132049084614

    139.56483274698257,35.37112802400542

    139.56393957138062,35.369119342724375

    139.56031322479248,35.36687963909665

    139.55790996551514,35.365479792771474

    139.55679953098297,35.3636538316989

    139.55610752105713,35.363592586482675

    139.5546966791153,35.36306325089201

    </coordinates>

    <jogsiminfo>

    18,139.5536881685257,35.36369407851664,1,1,0,0,1.4,0,0,0

    </jogsiminfo>

    </LineString></Placemark></Document></kml>

    ログイン ユーザー登録
    ようこそ ゲスト さん