「HAtena」を含む日記 RSS

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

2007-08-01

はてなブロガーのやつと飲んできた

http://anond.hatelabo.jp/20070801020618

自信が無いけど心の中のアルファブロガーが「やれ」と言ってきたのでがんばります

あかね」の飲み会に誘われたので、初めて出席してみた。はてなIDのやつらと飲むのは初めての経験である。

そこで実感したのは、はてブホッテントリ数が少ないダイアリー持ちほど低レベル、ということだ。こんなこと書くとまた「はてブ脳に毒されている」などと言われるかもしれないが、はてブホッテントリ数が少ないダイアラーほど低レベルな奴の割合は確実に高いと感じる。

いつも私がアルファブロガーモヒカン族飲み会に参加するとき、そこでは酒を交えながら流行の話題の感想非モテだった自分への思い出話、最近だとココロ社の政治の話や芥川賞の話などをする。「id:kanose意見id:Marco11意見って、かなり対立するものだけれど、どうなのだろう」とか、そういった話もすることがある。はてブホッテントリ数が少ないダイアリー持ちな彼らの飲み会は、そもそも会話というものが存在していない。彼らの言う「ノリ」で何かをすることを楽しみ、知的な側面は全く感じられない。id:jkondoをじぇいこん、id:kanoseを村長と書くような「はてな村内部でしか通用しない隠語のみでダイアラーを呼ぶ」ことに快楽を覚え「芥川賞エントリーって村長がまとめ記事書かね?村長村長!」「村長!出た!村長出た!id:kanose!村長出た!村長!これ!村長出たよ????!」などと、何がおもしろいのか全く分からない「会話」を繰り広げていた。彼らはそれが楽しいらしいが、おれとしてはちっとも楽しくない。

アルファブロガーがよく「id:kowagariのやつはなんだかんだいって会話水準が高い」「どんなにチャラチャラして見えるid:kowagariでも、きちんとした思想や観念を持っている」などと言っていた。自分としてはっきりそれを自覚することはほとんどなかったが、しかしはてブホッテントリ数が少ないダイアリー持ちのこうした現状を見る限り「確かにそうだ」と感じる。私から見たら飲み会で「はてな」会話に興じることはかなりの娯楽なのだが、彼らにとってはそれは「酔っていなくてもそんなことは話さない」レベルの高度な会話であるらしい。そして、私のような存在はかなり珍しいようだ(はてなダイアリーでは一般的だと思ったのだが…)。

はてブ数で記事を判断するのは良くない」とよく言う。しかし、個人的な経験を踏まえれば、はてブ数は個人を判断するための一つの指標になりえてしまうと私は感じる。「一生懸命緻密で丁寧なまとめ記事を書いても、ブックマーカーに[あとで読む]タグをつけられたまま、[あとで言及]もされずに放置されて結局4userみたいなやつだっているのだから、はてブ数で人を差別してほしくない。個性豊かなやつはどこにだっている」とよく言われるが、そもそも揉め事のURLを羅列しただけのまとめエントリーすら書けない、まとめエントリーを箇条書きで組み立てる上での基礎的なはてな記法の知識すらあやふやな人間のどこに個性やオリジナリティ存在するのだろうか?それともダイアラー同士で下らない掛け算を考えるのが「個性」なのだろうか?はてブ数は人の精神性をも示してしまうのではないか、と強く感じるのであった。

同じアルファブロガー連中のなかに「出版社に入ろっかなwwwwwww」というやつが結構いる。ごくごく一部のブロガーによる「今時何故紙媒体に……」という根拠も、根も葉もないバッシングが激しく行われている中、出版社の中枢で雑誌編集に携わりたいと考える人間がまだまだ多いことは一定の安心感を私に与えてくれたのだが、その中には「あんな馬鹿共からアクセス数稼ぎによってトラックバックを飛ばされたくない」という意思を持っている者も多いようだ。「選民思想だ」といって批判する人間も出てくるだろうが、こちらとしてはそう思っても仕方ない状態がはてなの多くの局面で見られるのである。

それにしてもネットは知的エリートに対する待遇が悲惨だ。なぜ毎日4時間もPCに向かい、必死で知的でためになるエントリーを書くブロガーとそれを10分で見てしまうROMを比べ「流行の話題に言及してアクセス数稼ぎ乙www」というのだろうか。アルファブロガーの奴らはライターに転進したとすればその分野でもっとも繁栄している内容に言及してアイマスweb2.0マーケティング大勝利。そのような記事の原稿料アルファブログアフィリエイト収入を比較しないと意味がないだろうに。なにはともあれ、「アルファブロガーライター人間よりも年収が劣っているのに、なぜアルファブロガーになりたいという人間が一定数いるのか」という命題に対しては、この「はてブ数と精神性の比例関係」も一定の影響を及ぼしているに違いない。

追記:

# 2007年08月03日 legnum legnum netwatch, neta 匿名ダイアリーって書いた本人がブクマするとソースに変な印というかコメント入るんだな

<li id="bookmark-user-nkoz"><span class="timestamp">2007年08月01日</span> <a href="/nkoz/"><img src="http://www.hatena.ne.jp/users/nk/nkoz/profile_s.gif" class="hatena-id-icon" alt="nkoz" title="nkoz" width="16" height="16" /></a> <a href="/nkoz/20070801#bookmark-5448369">nkoz</a> <span class="user-tag"><a href="/nkoz/%2a/" rel="tag" class="user-tag">*</a></span> </li>
<li id="bookmark-user-krus"><span class="timestamp">2007年08月01日</span> <a href="/krus/"><img src="http://www.hatena.ne.jp/users/kr/krus/profile_s.gif" class="hatena-id-icon" alt="krus" title="krus" width="16" height="16" /></a> <a href="/krus/20070801#bookmark-5448369">krus</a> <span class="user-tag"><a href="/krus/%e3%81%82%e3%81%a8%e3%81%a7%e8%aa%ad%e3%82%80/" rel="tag" class="user-tag">あとで読む</a></span> </li>

<li id="bookmark-user-otsune"><span class="timestamp">2007年08月01日</span> <a href="/otsune/"><img src="http://www.hatena.ne.jp/users/ot/otsune/profile_s.gif" class="hatena-id-icon" alt="otsune" title="otsune" width="16" height="16" /></a> <a href="/otsune/20070801#bookmark-5448369">otsune</a>  </li>
</ul>

その他のソースを見ても特に変わった所が見当たらないのですが、どこにコメントが入るのですか?

hatelabo.jphatena.jpは別のサーバーに設置されているので、わざわざidデータを取得して余計な分岐処理を入れて、ユーザーが見られるコメントとしてテンプレート生成するのもid:wanparkらしくない設計だと思いました。

もしかしてid:legnumさんのブラウザか視神経か頭蓋骨の中身のどれかか、もしくは全てがお気の毒なほど壊れてしまっているのでしょうか?

2007-07-26

モッチーは、いいかげんはてなを捨てるだろう

先に言っておく。モッチーは、タイトルで書いたことを華麗に裏切って欲しいというのが俺の本音だ。

だがしかしはてな最近を見ていると、とてもモッチービジネス観念に堪える会社になれてないという気がしてなんない。

Hatena, Inc. と大きく出てみた割に、大山鳴動鼠一匹、本当に出てきたのは「はてなスター」だった。

なんじゃこりゃ。1ch.tv の轍を踏むつもりか。

聞くところによると、id:jkondoid:naoya、そしてほかならぬモッチーはてブコメントノイズの多さに心を痛めていたらしい。そこで、何らかのシステム的な統制方法が取れないものかと膝突き合わせて考えた。

その結果が「はてなスター」である。これがシステム的な統制の仕組みと本気で思っているのなら、はてなの底の浅さは明らかだ。

おそらく、モッチーもガッカリしてるんじゃないか。彼は技術屋じゃないから、直接システムをイジるワケにもいかないしね。

はてなスター」のおかげで、モッチーハンズオン・キャピタル立場で当然に期待していたエグジットは明らかに遠のいた。ファンドマネジャーとしては、これ以上はてなに付き合い続ける意義はもうないんじゃないか?

そういえば、ライブドアWeb メールシステムGmail を採用するらしい。しょせん、日本エンジニアが作れるのは「はてなスター」くらいである。

あ、誤解しないでくれ。日本エンジニアの能力が少ないという意味じゃなく、日本エンジニアが十分な R&D の時間とヒトとモノとカネとを供与されてないということだから。

そしてその元凶は、短期(短気)にゲインを求めるモッチーのような存在にほかならないんだ。

2007-07-23

翻訳してるだけのブログ


del.ici.ousでトップに上がってる記事を翻訳して

ブログに載せると、hatenaで200ブクマくらい簡単に付くことが分かってしまった。

最近hatena村民は・・・・・・英語が読めないようだ。

2007-07-19

/* Ten */
if (typeof(Ten) == 'undefined') {
    Ten = {};
}
Ten.NAME = 'Ten';
Ten.VERSION = 0.06;

/* Ten.Class */
Ten.Class = function(klass, prototype) {
    if (klass && klass.initialize) {
	var c = klass.initialize;
    } else if(klass && klass.base) {
        var c = function() { return klass.base[0].apply(this, arguments) };
    } else {
	var c = function() {};
    }
    c.prototype = prototype || {};
    c.prototype.constructor = c;
    Ten.Class.inherit(c, klass);
    if (klass && klass.base) {
        for (var i = 0;  i < klass.base.length; i++) {
	    var parent = klass.base[i];
            if (i == 0) {
                c.SUPER = parent;
                c.prototype.SUPER = parent.prototype;
            }
            Ten.Class.inherit(c, parent);
            Ten.Class.inherit(c.prototype, parent.prototype);
        }
    }
    return c;
}
Ten.Class.inherit = function(child,parent) {
    for (var prop in parent) {
        if (typeof(child[prop]) != 'undefined' || prop == 'initialize') continue;
        child[prop] = parent[prop];
    }
}

/*
// Basic Ten Classes
**/

/* Ten.JSONP */
Ten.JSONP = new Ten.Class({
    initialize: function(uri,obj,method) {
        if (Ten.JSONP.Callbacks.length) {
            setTimeout(function() {new Ten.JSONP(uri,obj,method)}, 500);
            return;
        }
        var del = uri.match(/\?/) ? '&' : '?';
        uri += del + 'callback=Ten.JSONP.callback';
        if (!uri.match(/timestamp=/)) {
            uri += '&' + encodeURI(new Date());
        }
        if (obj && method) Ten.JSONP.addCallback(obj,method);
        this.script = document.createElement('script');
        this.script.src = uri;
        this.script.type = 'text/javascript';
        document.getElementsByTagName('head')[0].appendChild(this.script);
    },
    addCallback: function(obj,method) {
        Ten.JSONP.Callbacks.push({object: obj, method: method});
    },
    callback: function(args) {
        // alert('callback called');
        var cbs = Ten.JSONP.Callbacks;
        for (var i = 0; i < cbs.length; i++) {
            var cb = cbs[i];
            cb.object[cb.method].call(cb.object, args);
        }
        Ten.JSONP.Callbacks = [];
    },
    MaxBytes: 8000,
    Callbacks: []
});

/* Ten.XHR */
Ten.XHR = new Ten.Class({
    initialize: function(uri,opts,obj,method) {
        if (!uri) return;
        this.request = Ten.XHR.getXMLHttpRequest();
        this.callback = {object: obj, method: method};
        var xhr = this;
        var prc = this.processReqChange;
        this.request.onreadystatechange = function() {
            prc.apply(xhr, arguments);
        }
        var method = opts.method || 'GET';
        this.request.open(method, uri, true);
        if (method == 'POST') {
            this.request.setRequestHeader('Content-Type',
                                          'application/x-www-form-urlencoded');
        }
        var data = opts.data ? Ten.XHR.makePostData(opts.data) : null;
        this.request.send(data);
    },
    getXMLHttpRequest: function() {
        var xhr;
        var tryThese = [
            function () { return new XMLHttpRequest(); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
        ];
        for (var i = 0; i < tryThese.length; i++) {
            var func = tryThese[i];
            try {
                xhr = func;
                return func();
            } catch (e) {
                //alert(e);
            }
        }
        return xhr;
    },
    makePostData: function(data) {
        var pairs = [];
        var regexp = /%20/g;
        for (var k in data) {
            var v = data[k].toString();
            var pair = encodeURIComponent(k).replace(regexp,'+') + '=' +
                encodeURIComponent(v).replace(regexp,'+');
            pairs.push(pair);
        }
        return pairs.join('&');
    }
},{
    processReqChange: function() {
        var req = this.request;
        if (req.readyState == 4) {
            if (req.status == 200) {
                var cb = this.callback;
                cb.object[cb.method].call(cb.object, req);
            } else {
                alert("There was a problem retrieving the XML data:\n" +
                      req.statusText);
            }
        }
    }
});

/* Ten.Observer */
Ten.Observer = new Ten.Class({
    initialize: function(element,event,obj,method) {
        var func = obj;
        if (typeof(method) == 'string') {
            func = obj[method];
        }
        this.element = element;
        this.event = event;
        this.listener = function(event) {
            return func.call(obj, new Ten.Event(event || window.event));
        }
        if (this.element.addEventListener) {
            if (this.event.match(/^on(.+)$/)) {
                this.event = RegExp.$1;
            }
            this.element.addEventListener(this.event, this.listener, false);
        } else if (this.element.attachEvent) {
            this.element.attachEvent(this.event, this.listener);
        }
    }
},{
    stop: function() {
        if (this.element.removeEventListener) {
            this.element.removeEventListener(this.event,this.listener,false);
        } else if (this.element.detachEvent) {
            this.element.detachEvent(this.event,this.listener);
        }
    }
});

/* Ten.Event */
Ten.Event = new Ten.Class({
    initialize: function(event) {
        this.event = event;
    },
    keyMap: {
        8:"backspace", 9:"tab", 13:"enter", 19:"pause", 27:"escape", 32:"space",
        33:"pageup", 34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up",
        39:"right", 40:"down", 44:"printscreen", 45:"insert", 46:"delete",
        112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7",
        119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
        144:"numlock", 145:"scrolllock"
    }
},{
    mousePosition: function() {
        if (!this.event.clientX) return;
        return Ten.Geometry.getMousePosition(this.event);
    },
    isKey: function(name) {
        var ecode = this.event.keyCode;
        if (!ecode) return;
        var ename = Ten.Event.keyMap[ecode];
        if (!ename) return;
        return (ename == name);
    },
    targetIsFormElements: function() {
        var target = this.event.target;
        if (!target) return;
        var T = (target.tagName || '').toUpperCase();
        return (T == 'INPUT' || T == 'SELECT' || T == 'OPTION' ||
                T == 'BUTTON' || T == 'TEXTAREA');
    },
    stop: function() {
        var e = this.event;
        if (e.stopPropagation) {
            e.stopPropagation();
            e.preventDefault();
        } else {
            e.cancelBubble = true;
            e.returnValue = false;
        }
    }
});

/* Ten.DOM */
Ten.DOM = new Ten.Class({
    getElementsByTagAndClassName: function(tagName, className, parent) {
        if (typeof(parent) == 'undefined') {
            parent = document;
        }
        var children = parent.getElementsByTagName(tagName);
        if (className) { 
            var elements = [];
            for (var i = 0; i < children.length; i++) {
                var child = children[i];
                var cls = child.className;
                if (!cls) {
                    continue;
                }
                var classNames = cls.split(' ');
                for (var j = 0; j < classNames.length; j++) {
                    if (classNames[j] == className) {
                        elements.push(child);
                        break;
                    }
                }
            }
            return elements;
        } else {
            return children;
        }
    },
    removeEmptyTextNodes: function(element) {
        var nodes = element.childNodes;
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                node.parentNode.removeChild(node);
            }
        }
    },
    nextElement: function(elem) {
        do {
            elem = elem.nextSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    prevElement: function(elem) {
        do {
            elem = elem.previousSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    scrapeText: function(node) {
        var rval = [];
        (function (node) {
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    onLoadFunctions: [],
    loaded: false,
    timer: null,
    addEventListener: function(event,func) {
        if (event != 'load') return;
        Ten.DOM.onLoadFunctions.push(func);
        Ten.DOM.checkLoaded();
    },
    checkLoaded: function() {
        var c = Ten.DOM;
        if (c.loaded) return true;
        if (document && document.getElementsByTagName &&
            document.getElementById && document.body) {
            if (c.timer) {
                clearInterval(c.timer);
                c.timer = null;
            }
            for (var i = 0; i < c.onLoadFunctions.length; i++) {
                    c.onLoadFunctions[i]();
            }
            c.onLoadFunctions = [];
            c.loaded = true;
        } else {
            c.timer = setInterval(c.checkLoaded, 13);
        }
    }
});

/* Ten.Style */
Ten.Style = new Ten.Class({
    applyStyle: function(elem, style) {
        for (prop in style) {
            elem.style[prop] = style[prop];
        }
    }
});

/* Ten.Geometry */
Ten.Geometry = new Ten.Class({
    initialize: function() {
        if (Ten.Geometry._initialized) return;
        var func = Ten.Geometry._functions;
        var de = document.documentElement;
        if (window.innerWidth) {
            func.getWindowWidth = function() { return window.innerWidth; }
            func.getWindowHeight = function() { return window.innerHeight; }
            func.getXScroll = function() { return window.pageXOffset; }
            func.getYScroll = function() { return window.pageYOffset; }
        } else if (de && de.clientWidth) {
            func.getWindowWidth = function() { return de.clientWidth; }
            func.getWindowHeight = function() { return de.clientHeight; }
            func.getXScroll = function() { return de.scrollLeft; }
            func.getYScroll = function() { return de.scrollTop; }
        } else if (document.body.clientWidth) {
            func.getWindowWidth = function() { return document.body.clientWidth; }
            func.getWindowHeight = function() { return document.body.clientHeight; }
            func.getXScroll = function() { return document.body.scrollLeft; }
            func.getYScroll = function() { return document.body.scrollTop; }
        }
        Ten.Geometry._initialized = true;
    },
    _initialized: false,
    _functions: {},
    getScroll: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            x: Ten.Geometry._functions.getXScroll(),
            y: Ten.Geometry._functions.getYScroll()
        };
    },
    getMousePosition: function(pos) {
        // pos should have clientX, clientY same as mouse event
        if ((navigator.userAgent.indexOf('Safari') > -1) &&
            (navigator.userAgent.indexOf('Version/') < 0)) {
            return {
                x: pos.clientX,
                y: pos.clientY
            };
        } else {
            var scroll = Ten.Geometry.getScroll();
            return {
                x: pos.clientX + scroll.x,
                y: pos.clientY + scroll.y
            };
        }
    },
    getElementPosition: function(e) {
        return {
            x: e.offsetLeft,
            y: e.offsetTop
        };
    },
    getWindowSize: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            w: Ten.Geometry._functions.getWindowWidth(),
            h: Ten.Geometry._functions.getWindowHeight()
        };
    }
});

/* Ten.Position */
Ten.Position = new Ten.Class({
    initialize: function(x,y) {
        this.x = x;
        this.y = y;
    },
    subtract: function(a,b) {
        return new Ten.Position(a.x - b.x, a.y - b.y);
    }
});

/*
// require Ten.js
**/

/* Ten.SubWindow */
Ten.SubWindow = new Ten.Class({
    initialize: function() {
        var c = this.constructor;
        if (c.singleton && c._cache) {
            return c._cache;
        }
        var div = document.createElement('div');
        Ten.Style.applyStyle(div, Ten.SubWindow._baseStyle);
        Ten.Style.applyStyle(div, c.style);
        this.window = div;
        this.addContainerAndCloseButton();
        document.body.appendChild(div);
        if (c.draggable) {
            this._draggable = new Ten.Draggable(div, this.handle);
        }
        if (c.singleton) c._cache = this;
        return this;
    },
    _baseStyle: {
        color: '#000',
        position: 'absolute',
        display: 'none',
        zIndex: 2,
        left: 0,
        top: 0,
        backgroundColor: '#fff',
        border: '1px solid #bbb'
    },
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '100px',
        height: '100px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        padding: '0 10px'
    },
    // closeButton: 'close.gif',
    closeButton: 'http://s.hatena.com/images/close.gif',
    closeButtonStyle: {
        position: 'absolute',
        top: '8px',
        right: '10px',
        cursor: 'pointer'
    },
    _baseScreenStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        display: 'none',
        zIndex: 1,
        overflow: 'hidden',
        width: '100%',
        height: '100%'
    },
    screenStyle: {},
    showScreen: true,
    singleton: true,
    draggable: true,
    _cache: null
},{
    screen: null,
    windowObserver: null,
    visible: false,
    addContainerAndCloseButton: function() {
        var win = this.window;
        var c = this.constructor;
        var div = document.createElement('div');
        win.appendChild(div);
        Ten.Style.applyStyle(div, c.containerStyle);
        this.container = div;
        if (c.handleStyle) {
            var handle = document.createElement('div');
            Ten.Style.applyStyle(handle, c.handleStyle);
            win.appendChild(handle);
            this.handle = handle;
        }
        if (c.closeButton) {
	    var btn = document.createElement('img');
            btn.src = c.closeButton;
            btn.alt = 'close';
            Ten.Style.applyStyle(btn, c.closeButtonStyle);
            win.appendChild(btn);
            new Ten.Observer(btn, 'onclick', this, 'hide');
            this.closeButton = btn;
        }
        if (c.showScreen) {
            var screen = document.createElement('div');
            Ten.Style.applyStyle(screen, Ten.SubWindow._baseScreenStyle);
            Ten.Style.applyStyle(screen, c.screenStyle);
            document.body.appendChild(screen);
            this.screen = screen;
            new Ten.Observer(screen, 'onclick', this, 'hide');
        }
    },
    show: function(pos) {
        pos = (pos.x && pos.y) ? pos : {x:0, y:0};
        with (this.window.style) {
            display = 'block';
            left = pos.x + 'px';
            top = pos.y + 'px';
        }
        if (this.screen) {
            with (this.screen.style) {
                display = 'block';
                left = Ten.Geometry.getScroll().x + 'px';
                top = Ten.Geometry.getScroll().y + 'px';
            }
        }
        this.windowObserver = new Ten.Observer(document.body, 'onkeypress', this, 'handleEscape');
        this.visible = true;
    },
    handleEscape: function(e) {
        if (!e.isKey('escape')) return;
        this.hide();
    },
    hide: function() {
        if (this._draggable) this._draggable.endDrag();
        this.window.style.display = 'none';
        if (this.screen) this.screen.style.display = 'none';
        if (this.windowObserver) this.windowObserver.stop();
        this.visible = false;
    }
});

/* Ten.Draggable */
Ten.Draggable = new Ten.Class({
    initialize: function(element,handle) {
        this.element = element;
        this.handle = handle || element;
        this.startObserver = new Ten.Observer(this.handle, 'onmousedown', this, 'startDrag');
        this.handlers = [];
    }
},{
    startDrag: function(e) {
        if (e.targetIsFormElements()) return;
        this.delta = Ten.Position.subtract(
            e.mousePosition(),
            Ten.Geometry.getElementPosition(this.element)
        );
        this.handlers = [
            new Ten.Observer(document, 'onmousemove', this, 'drag'),
            new Ten.Observer(document, 'onmouseup', this, 'endDrag'),
            new Ten.Observer(this.element, 'onlosecapture', this, 'endDrag')
        ];
        e.stop();
    },
    drag: function(e) {
        var pos = Ten.Position.subtract(e.mousePosition(), this.delta);
        Ten.Style.applyStyle(this.element, {
            left: pos.x + 'px',
            top: pos.y + 'px'
        });
        e.stop();
    },
    endDrag: function(e) {
        for (var i = 0; i < this.handlers.length; i++) {
            this.handlers[i].stop();
        }
        if(e) e.stop();
    }
});

/* Hatena */
if (typeof(Hatena) == 'undefined') {
    Hatena = {};
}

/* Hatena.User */
Hatena.User = new Ten.Class({
    initialize: function(name) {
        this.name = name;
    },
    getProfileIcon: function(name) {
        if (!name) name = 'user';
        var pre = name.match(/^[\w-]{2}/)[0];
        var img = document.createElement('img');
        img.src = 'http://www.hatena.ne.jp/users/' + pre + '/' + name + '/profile_s.gif';
        img.alt = name;
        img.setAttribute('class', 'profile-icon');
        img.setAttribute('width','16px');
        img.setAttribute('height','16px');
        with (img.style) {
            margin = '0 3px';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
}, {
    profileIcon: function() {
        return Hatena.User.getProfileIcon(this.name);
    }
});

/* Hatena.Star */
if (typeof(Hatena.Star) == 'undefined') {
    Hatena.Star = {};
}

/*
// Hatena.Star.* classes //
**/
if (window.location && window.location.host.match(/hatena\.com/)) {
    Hatena.Star.BaseURL = 'http://s.hatena.com/';
} else {
    Hatena.Star.BaseURL = 'http://s.hatena.ne.jp/';
}
Hatena.Star.Token = null;

/* Hatena.Star.User */
Hatena.Star.User = new Ten.Class({
    base: [Hatena.User],
    initialize: function(name) {
        if (Hatena.Star.User._cache[name]) {
            return Hatena.Star.User._cache[name];
        } else {
            this.name = name;
            Hatena.Star.User._cache[name] = this;
            return this;
        }
    },
    _cache: {}
},{
    userPage: function() {
        return Hatena.Star.BaseURL + this.name + '/';
    }
});

/* Hatena.Star.Entry */
Hatena.Star.Entry = new Ten.Class({
    initialize: function(e) {
        this.entry = e;
        this.uri = e.uri;
        this.title = e.title;
        this.star_container = e.star_container;
        this.comment_container = e.comment_container;
        this.stars = [];
        this.comments = [];
    },
    maxStarCount: 11
},{
    flushStars: function() {
        this.stars = [];
        this.star_container.innerHTML = '';
    },
    bindStarEntry: function(se) {
        this.starEntry = se;
        for (var i = 0; i < se.stars.length; i++) {
            if (typeof(se.stars[i]) == 'number') {
                this.stars.push(new Hatena.Star.InnerCount(se.stars[i],this));
            } else {
                this.stars.push(new Hatena.Star.Star(se.stars[i]));
            }
        }
        if (se.comments && !this.comments.length) {
            for (var i = 0; i < se.comments.length; i++) {
                this.comments.push(new Hatena.Star.Comment(se.comments[i]));
            }
        }
        this.can_comment = se.can_comment;
    },
    setCanComment: function(v) {
        this.can_comment = v;
    },
    showButtons: function() {
        this.addAddButton();
        this.addCommentButton();
    },
    addAddButton: function() {
        if (this.star_container) {
            this.addButton = new Hatena.Star.AddButton(this);
            this.star_container.appendChild(this.addButton);
        }
    },
    addCommentButton: function() {
        if (this.comment_container) {
            this.commentButton = new Hatena.Star.CommentButton(this);
            this.comment_container.appendChild(this.commentButton.img);
        }
    },
    showStars: function() {
        var klass = this.constructor;
        // if (this.stars.length > klass.maxStarCount) {
        //     var ic = new Hatena.Star.InnerCount(this.stars.slice(1,this.stars.length));
        //     this.star_container.appendChild(this.stars[0]);
        //     this.star_container.appendChild(ic);
        //     this.star_container.appendChild(this.stars[this.stars.length - 1]);
        // } else {
        for (var i = 0; i < this.stars.length; i++) {
            this.star_container.appendChild(this.stars[i]);
        }
    },
    showCommentButton: function() {
        if (this.can_comment) {
            this.commentButton.show();
            if (this.comments.length) this.commentButton.activate();
        } else {
            // this.commentButton.hide();
        }
    },
    addStar: function(star) {
        this.stars.push(star);
        this.star_container.appendChild(star);
    },
    addComment: function(com) {
        if (!this.comments) this.comments = [];
        if (this.comments.length == 0) {
            this.commentButton.activate();
        }
        this.comments.push(com);
    },
    showCommentCount: function() {
        this.comment_container.innerHTML += this.comments.length;
    }
});

/* Hatena.Star.Button */
Hatena.Star.Button = new Ten.Class({
    createButton: function(args) {
        var img = document.createElement('img');
        img.src = args.src;
        img.alt = img.title = args.alt;
        with (img.style) {
	    cursor = 'pointer';
	    margin = '0 3px';
            padding = '0';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
});

/* Hatena.Star.AddButton */
Hatena.Star.AddButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.AddButton.ImgSrc,
            alt: 'Add Star'
        });
        this.observer = new Ten.Observer(img,'onclick',this,'addStar');
        this.img = img;
        return img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/add.gif'
},{
    addStar: function(e) {
        this.lastPosition = e.mousePosition();
        var uri = Hatena.Star.BaseURL + 'star.add.json?uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        if (Hatena.Star.Token) {
            uri += '&token=' + Hatena.Star.Token;
        }
        new Ten.JSONP(uri, this, 'receiveResult');
    },
    receiveResult: function(args) {
        var name = args ? args.name : null;
        if (name) {
            this.entry.addStar(new Hatena.Star.Star({name: name}));
            //alert('Succeeded in Adding Star ' + args);
        } else if (args.errors) {
            var pos = this.lastPosition;
            pos.x -= 10;
            pos.y += 25;
            var scroll = Ten.Geometry.getScroll();
            var scr = new Hatena.Star.AlertScreen();
            var alert = args.errors[0];
            scr.showAlert(alert, pos);
        }
    }
});

/* Hatena.Star.CommentButton */
Hatena.Star.CommentButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.CommentButton.ImgSrc,
            alt: 'Comments'
        });
        img.style.display = 'none';
        this.observer = new Ten.Observer(img,'onclick',this,'showComments');
        this.img = img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/comment.gif',
    ImgSrcActive: Hatena.Star.BaseURL + 'images/comment_active.gif'
},{
    showComments: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.CommentScreen();
        this.screen.bindEntry(this.entry);
        var pos = e.mousePosition();
        pos.y += 25;
        this.screen.showComments(this.entry, pos);
    },
    hide: function() {
        this.img.style.display = 'none';
    },
    show: function() {
        this.img.style.display = 'inline';
    },
    activate: function() {
        this.show();
        this.img.src = Hatena.Star.CommentButton.ImgSrcActive;
    }
});

/* Hatena.Star.Star */
Hatena.Star.Star = new Ten.Class({
    initialize: function(args) {
        if (args.img) {
            this.img = args.img;
            this.name = this.img.getAttribute('alt');
        } else {
            this.name = args.name;
            var img = document.createElement('img');
            img.src = Hatena.Star.Star.ImgSrc;
            img.alt = this.name;
            with (img.style) {
                padding = '0';
                border = 'none';
            }
            this.img = img;
        }
	new Ten.Observer(this.img,'onmouseover',this,'showName');
	new Ten.Observer(this.img,'onmouseout',this,'hideName');
	if (this.name) {
            this.user = new Hatena.Star.User(this.name);
            this.img.style.cursor = 'pointer';
            new Ten.Observer(this.img,'onclick',this,'goToUserPage');
        }
        if (args.count && args.count > 1) {
            var c = document.createElement('span');
            c.setAttribute('class', 'hatena-star-inner-count');
            Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
            c.innerHTML = args.count;
            var s = document.createElement('span');
            s.appendChild(img);
            s.appendChild(c);
            return s;
        } else {
            return this.img;
        }
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/star.gif'
},{
    showName: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.NameScreen();
        var pos = e.mousePosition();
        pos.x += 10;
        pos.y += 25;
        this.screen.showName(this.name, pos);
    },
    hideName: function() {
        if (!this.screen) return;
        this.screen.hide();
    },
    goToUserPage: function() {
        window.location = this.user.userPage();
    }
});

/* Hatena.Star.InnerCount */
Hatena.Star.InnerCount = new Ten.Class({
    initialize: function(count, e) {
        this.count = count;
        this.entry = e;
        var c = document.createElement('span');
        c.setAttribute('class', 'hatena-star-inner-count');
        Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
        c.style.cursor = 'pointer';
        c.innerHTML = count;
        new Ten.Observer(c,'onclick',this,'showInnerStars');
        this.container = c;
        return c;
    },
    style: {
        color: '#f4b128',
        fontWeight: 'bold',
        fontSize: '80%',
        fontFamily: '"arial", sans-serif',
        margin: '0 2px'
    }
},{
    showInnerStars: function() {
        var url = Hatena.Star.BaseURL + 'entry.json?uri=' +
        encodeURIComponent(this.entry.uri);
        new Ten.JSONP(url, this, 'receiveStarEntry');
    },
    receiveStarEntry: function(res) {
        var se = res.entries[0];
        var e = this.entry;
        if (encodeURIComponent(se.uri) != encodeURIComponent(e.uri)) return;
        e.flushStars();
        e.bindStarEntry(se);
        e.addAddButton();
        e.showStars();
    }
});

/* Hatena.Star.Comment */
Hatena.Star.Comment = new Ten.Class({
    initialize: function(args) {
        this.name = args.name;
        this.body = args.body;
    }
},{
    asElement: function() {
        var div = document.createElement('div');
        with (div.style) {
            margin = '0px 0';
            padding = '5px 0';
            borderBottom = '1px solid #ddd';
        }
        var ico = Hatena.User.getProfileIcon(this.name);
        div.appendChild(ico);
        var span = document.createElement('span');
        with(span.style) {
            fontSize = '90%';
        }
        span.innerHTML = this.body;
        div.appendChild(span);
        return div;
    }
});

/* Hatena.Star.NameScreen */
Hatena.Star.NameScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center'
    },
    containerStyle: {
        margin: 0,
        padding: 0
    },
    handleStyle: null,
    showScreen: false,
    closeButton: null,
    draggable: false
},{
    showName: function(name, pos) {
        this.container.innerHTML = '';
        this.container.appendChild(Hatena.User.getProfileIcon(name));
        this.container.appendChild(document.createTextNode(name));
        this.show(pos);
    }
});

/* Hatena.Star.AlertScreen */
Hatena.Star.AlertScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '240px',
        height: '120px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    }
},{
    showAlert: function(msg, pos) {
        this.container.innerHTML = msg;
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    }
});

/* Hatena.Star.CommentScreen */
Hatena.Star.CommentScreen = new Ten.Class({
    base: [Ten.SubWindow],
    initialize: function() {
        var self = this.constructor.SUPER.call(this);
        if (!self.commentsContainer) self.addCommentsContainer();
        return self;
    },
    style: {
        width: '280px',
        height: '280px',
        overflowY: 'auto',
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        textAlign: 'left',
        padding: '0 10px'
    },
    getLoadImage: function() {
        var img = document.createElement('img');
        img.src = Hatena.Star.BaseURL + 'images/load.gif';
        img.setAttribute('alt', 'Loading');
        with (img.style) {
            verticalAlign = 'middle';
            margin = '0 2px';
        }
        return img;
    }
},{
    addCommentsContainer: function() {
        var div = document.createElement('div');
        with (div.style) {
            marginTop = '-3px';
        }
        this.container.appendChild(div);
        this.commentsContainer = div;
    },
    showComments: function(e, pos) {
        var comments = e.comments;
        if (!comments) comments = [];
        this.commentsContainer.innerHTML = '';
        for (var i=0; i<comments.length; i++) {
            this.commentsContainer.appendChild(comments[i].asElement());
        }
        if (e.starEntry && !e.can_comment) {
            this.hideCommentForm();
        } else {
            this.addCommentForm();
        }
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    },
    bindEntry: function(e) {
        this.entry = e;
    },
    sendComment: function(e) {
        if (!e.isKey('enter')) return;
        var body = this.commentInput.value;
        if (!body) return;
        this.commentInput.disabled = 'true';
        this.showLoadImage();
        var url = Hatena.Star.BaseURL + 'comment.add.json?body=' + encodeURIComponent(body) +
            '&uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        new Ten.JSONP(url, this, 'receiveResult');
    },
    receiveResult: function(args) {
        if (!args.name || !args.body) return;
        this.commentInput.value = ''; 
        this.commentInput.disabled = '';
        this.hideLoadImage();
        var com = new Hatena.Star.Comment(args);
        this.entry.addComment(com);
        this.commentsContainer.appendChild(com.asElement());
    },
    showLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'inline';
    },
    hideLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'none';
    },
    hideCommentForm: function() {
        if (!this.commentForm) return;
        this.commentForm.style.display = 'none';
    },
    addCommentForm: function() {
        if (this.commentForm) {
            this.commentForm.style.display = 'block';
            return;
        }
        var form = document.createElement('div');
        this.container.appendChild(form);
        this.commentForm = form;
        with (form.style) {
            margin = '0px 0';
            padding = '5px 0';
            // borderTop = '1px solid #ddd';
        }
        //if (Hatena.Visitor) {
        //    form.appendChild(Hatena.Visitor.profileIcon());
        //} else {
        //    form.appendChild(Hatena.User.getProfileIcon());
        //}
        var input = document.createElement('input');
        input.type = 'text';
        with (input.style) {
            width = '215px';
	    border = '1px solid #bbb';
            padding = '3px';
        }
        form.appendChild(input);
        this.commentInput = input;
        var img = this.constructor.getLoadImage();
        this.loadImage = img;
        this.hideLoadImage();
        form.appendChild(img);
        new Ten.Observer(input,'onkeypress',this,'sendComment');
    }
});

/* Hatena.Star.EntryLoader */
Hatena.Star.EntryLoader = new Ten.Class({
    initialize: function() {
        var entries = Hatena.Star.EntryLoader.loadEntries();
        this.entries = [];
        for (var i = 0; i < entries.length; i++) {
            var e = new Hatena.Star.Entry(entries[i]);
            e.showButtons();
            this.entries.push(e);
        }
        this.getStarEntries();
    },
    createStarContainer: function() {
        var sc = document.createElement('span');
        sc.setAttribute('class', 'hatena-star-star-container');
        sc.style.marginLeft = '1px';
        return sc;
    },
    createCommentContainer: function() {
        var cc = document.createElement('span');
        cc.setAttribute('class', 'hatena-star-comment-container');
        cc.style.marginLeft = '1px';
        return cc;
    },
    scrapeTitle: function(node) {
        var rval = [];
        (function (node) {
            if (node.tagName == 'SPAN' &&
                (node.className == 'sanchor' ||
                 node.className == 'timestamp')) {
                     return;
            } else if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                return;
            }
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    headerTagAndClassName: ['h3',null],
    getHeaders: function() {
        var t = Hatena.Star.EntryLoader.headerTagAndClassName;
        return Ten.DOM.getElementsByTagAndClassName(t[0],t[1],document);
    },
    loadEntries: function() {
        var entries = [];
        //var headers = document.getElementsByTagName('h3');
        var c = Hatena.Star.EntryLoader;
        var headers = c.getHeaders();
        for (var i = 0; i < headers.length; i++) {
            var header = headers[i];
            var a = header.getElementsByTagName('a')[0];
            if (!a) continue;
            var uri = a.href;
            var title = '';
            // Ten.DOM.removeEmptyTextNodes(header);
            var cns = header.childNodes;
            title = c.scrapeTitle(header);
            var cc = c.createCommentContainer();
            header.appendChild(cc);
            var sc = c.createStarContainer();
            header.appendChild(sc);
            entries.push({
                uri: uri,
                title: title,
                star_container: sc,
                comment_container: cc
            });
        }
        return entries;
    }
},{
    getStarEntries: function() {
        var url = Hatena.Star.BaseURL + 'entries.json?';
        for (var i = 0; i < this.entries.length; i++) {
            if (url.length > Ten.JSONP.MaxBytes) {
                new Ten.JSONP(url, this, 'receiveStarEntries');
                url = Hatena.Star.BaseURL + 'entries.json?';
            }
            url += 'uri=' + encodeURIComponent(this.entries[i].uri) + '&';
        }
        new Ten.JSONP(url, this, 'receiveStarEntries');
    },
    receiveStarEntries: function(res) {
        var entries = res.entries;
        if (!entries) entries = [];
        for (var i = 0; i < this.entries.length; i++) {
            var e = this.entries[i];
            for (var j = 0; j < entries.length; j++) {
                var se = entries[j];
                if (!se.uri) continue;
                if (encodeURIComponent(se.uri) == encodeURIComponent(e.uri)) {
                    e.bindStarEntry(se);
                    entries.splice(j,1);
                    break;
                }
            }
            if (typeof(e.can_comment) == 'undefined') {
                e.setCanComment(res.can_comment);
            }
            e.showStars();
            e.showCommentButton();
        }
    }
});

/* Hatena.Star.WindowObserver */
Hatena.Star.WindowObserver = new Ten.Class({
    initialize: funct


  

2007-07-16

Re: Hatenaにはおっぱい好きっているの?

おっぱいは遠きにありて思ふもの

そして悲しくうたふもの

よしや

うらぶれて異土の乞食となるとても

帰るところにあるまじや

ひとり都のゆふぐれに

おっぱいおもひ涙ぐむ

そのこころもて

遠きちぶさにかへらばや

遠きちぶさにかへらばや

http://anond.hatelabo.jp/20070716113629

いろいろって具体的にはどんなことが知りたいの?

Hatena の社員にいるかどうかは知らないけど、増田にはおっぱい好きいっぱいいるはずだよ。

もちろん私もおっぱい大好き。

内緒好みはあるけど、サイズも形も持ち主の年齢も関係なくおっぱいみんな大好き。

知っていることなら力いっぱい答えるよ。

Hatenaにはおっぱい好きっているの?

もっとおっぱいについていろいろ知りたいんだけど

2007-07-14

Hatena::Group::Anond

マジで11人かよっ!おかしいだろ絶対

2007-07-13

略称


なんで「はて☆」や「はてな☆」が無い?

あと、いっそHatena☆Starも作っちゃどうか

はてなスター」で他人に罵詈雑言を浴びせる方法

基本的に他人を褒めることしかできない「はてなスター」で他人に罵詈雑言を浴びせる方法です。

 

ttp://s.hatena.ne.jp/star.add.json?uri=http%3A%2F%2Fd.hatena.ne.jp%2F【憎いあん畜生ID】%2F0000&title=【届けたい罵詈雑言UTF-8パーセントエンコード)】&callback=Ten.JSONP.callback

 

これで

ttp://s.hatena.ne.jp/【憎いあん畜生ID】/blogs

メッセージが登録されるよ!

 

ttp://d.hatena.ne.jp/【憎いあん畜生ID】/0000

なんてページは作れないから、誰が★を送ってきたのかすらわからないよ!

仕様が変わったり、僕の勘違いだったら大変だから、ご利用は計画的に

 

1URIにつき1つしか登録されないから、複数のメッセージを送りたい場合は「0000」の部分を1回1回適当に変えようね!

 

まー、問題は、自分の

ttp://s.hatena.ne.jp/【ID】/blogs

なんて、ほとんどの人が見ないだろうってことだな。

2007-07-11

[]今昔その4

新サービスリリースなので、新しいサーバを調べてみた。

% diff resolve.old resolve.txt | grep '[<>]' | sort
> 59.106.108.97:        d.hatena.com.
> 59.106.108.97:        hatena.com.
> 59.106.108.97:        m.hatena.com.
> 59.106.108.97:        m.hatena.ne.jp.
> 59.106.108.97:        s.hatena.com.
> 59.106.108.97:        s.hatena.ne.jp.

実はゲートウェイは一つ、英語サービスサクラらしい。

はてなスターソースコードの最後に更新履歴が載ってた

2007-07-11 v1.2 Release version

2007-05-30 v1.1 Added fold stars feature

2007-03-29 v1.0 Changed screens using Ten.SubWindow, you can d&d!

2007-03-28 v0.9 Changed Hatena.* classes to Ten v0.05.

2007-03-25 v0.8 Fixed Safari popup problem

2007-03-22 v0.7 Added active state to comment buttons

2007-03-21 v0.6 Added Comment function

2007-03-05 v0.5 Changed uri to Ridge-based paths.

2007-01-24 v0.4 Added Hatena.Diary.Entry class,

Changed Hatena.Star.Entry methods using class method

Added author parameters.

2007-01-23 v0.3 Added Hatena.Star.User class, added Hatena.js, Hatena.Star.js compatibility

2007-01-06 v0.2 Changed name spaces. Using Hatena.*, Hatena.Star.*

2007-01-05 v0.1 Initial version

4月前に大体出来てたって事かな

2007-07-07

共学の新事実

はてなブックマーク - また君か。@d.hatena - 最近のアニメ録画

# 2007年07月05日 namiki_h namiki_h anime まぁデジタルで録画したらアナログでいっぱいいっぱいのDVDよりはどうやってもいい画質だわ…初期投資はある程度かかるけどまぁ同感では有る



え……?



アナログでいっぱいいっぱいのDVD


DVDってアナログだったのかあああああああ!!

2007-06-27

拝啓、先生

ギャップがあると弱い。

ありがちだが、怖そうだけど、ホントはやさしい人とか。

「??だけど/だったけど、ホントは??」という話。


逆境を乗り越えて来た人の話が持つ説得力というのは何となく感じるところはある。

いわゆるセレブ(そろそろ死後?)と言われる人の人生譚が薄っぺらく聞こえるというのも何となくわかる。

物語の作り方として、

 成功者→転落→苦境→努力→波乱→成功

というのはハリウッド的に爽快で面白くもあることも認めよう。

「人は物語存在」と誰かが言ってたっけね?

けどね、

それを政治の世界にもってくるのはどうなのよ。

あなたはツンデレと同じ戦略に生存の途を見つけたのですか?

教えて、先生

2007-06-26

[]今昔その3

さて、とうとうダイアリも移転し、すっかり寂しくなったはてなサーバ室に書き記しておく。

% diff resolve.old resolve.txt | grep '[<>]' | sort
< 125.206.202.83:       d.hatena.ne.jp.
< 221.186.129.146:      d.hatena.ne.jp.
< 221.186.146.29:       d.hatena.ne.jp.
< 61.196.246.67:        d.hatena.ne.jp.
> 59.106.108.77:        d.hatena.ne.jp.

これにより125.206.202.80/29がなくなった。他の回線も見直しするのだろうか。

2007-06-25

http://anond.hatelabo.jp/20070625024626

なんでこれがブクマ集めまくってるんだ?

馬鹿ばっかだな、ブクマやってる連中。記念に貼り付けておいてやるよ。

2007年06月25日 raitu love, ネタ //少し揺さぶり、よろけてこけそうになったところを、そっと優しく支えてあげればそれでよかった//うまいなあこの文章。よくまとまっている。

2007年06月25日 huruike 読み物, 恋愛

2007年06月25日 trashcan

2007年06月25日 Griffin 増田, 男女, 恋愛

2007年06月25日 theart other

2007年06月25日 okuharakensuke ショートショート, 読み物

2007年06月25日 wanolabo anonymous, はてな, ショートショート, ネタ, 読み物

2007年06月25日 capa1105 life, love, はてな

2007年06月25日 terainfo 読み物, 増田, ネタ, これはすごい 文章うまさにシット

2007年06月25日 omoshirokun ショートショート, 小説, ネタ

2007年06月25日 dasaitama_osamu 恋愛, 読み物 やな感じだけど面白い。

2007年06月25日 Takezo218 ネタ

2007年06月25日 serimaryo *読み物, 増田

2007年06月25日 seiryo #

2007年06月25日 nullpogatt 増田, ネタ, 男女

2007年06月25日 hiro360 ネタ

2007年06月25日 sachiko-0504

2007年06月25日 u-ssy 読み物

2007年06月25日 uniuni-saru ネタ

2007年06月25日 kabutch 作り話だとしてもこういうネタは好き

2007年06月25日 static 増田, ネタ

2007年06月25日 gkt ネタ

2007年06月25日 kyoon ネタ, 読み物

2007年06月25日 office-e3 anonymous, ネタ

2007年06月25日 nodokaynihs 増田, 読み物, 恋愛 評価がまっぷたつだなー。因果応報とか復讐とかよりも、人の心をゆさぶるのがたやすいってことの方が怖くてたまらない。

2007年06月25日 pre21 増田

2007年06月25日 kazuhooku ネタ おもしろい

2007年06月25日 bobbyjam99 neta

2007年06月25日 feather_angel 増田 ネタとしてとてもおもしろい

2007年06月25日 nijigenjin 匿名ダイアリー, life

2007年06月25日 swat neta, ショートショート

2007年06月25日 rxh 増田, column

2007年06月25日 masa720

2007年06月25日 osisi ショートショート マスダ小説

2007年06月25日 PinkMoon 男と女の間には

2007年06月25日 ribenman *text, 増田

2007年06月25日 Chaborin ネタ 精神弱肉強食の世界。パワーゲームここに極まれり。そして何が残る?

2007年06月25日 nmy 増田

2007年06月25日 umbra love

2007年06月25日 rawpower521 恋愛, ネタ

2007年06月25日 dkoji ネタ

2007年06月25日 arcworks

2007年06月25日 B-dai 増田, 小説, 読み物, 男女, 恋愛

2007年06月25日 silvercalc

2007年06月25日 objetsTrouves love, ネタ

2007年06月25日 polestar23 読み物, 男女

2007年06月25日 t-ueno

2007年06月25日 takmck ショートショート, ネタ, 読み物

2007年06月25日 snailramper ネタ, 読み物

2007年06月25日 linden 読み物

2007年06月25日 nudyman ネタ, 恋愛

2007年06月25日 memoclip はてな匿名ダイアリー, life, 男女, 恋愛, 読み物 これはうまいなー。

2007年06月25日 akishin999 恋愛, 読み物, ネタ

2007年06月25日 nekotank ネタ

2007年06月25日 kohedonian ネタ よくできた寓話ですね。

2007年06月25日 shozro 恋愛, 読み物 おもしろいなあ

2007年06月25日 orchard_tut 読み物

2007年06月25日 sidetail 読み物, 増田

2007年06月25日 kanimaster 創作 おもろい。

2007年06月25日 arasujiorg 男女, 恋愛, 小説, 増田

2007年06月25日 mgw 読み物

2007年06月25日 koyata08 ネタ 恋することを忘れて愛されることばかりに執着する人々のアレゴリー

2007年06月25日 sou0712 ソープ, 彼女, anonymous, love, neta, これはひどい, ショートショート, 匿名, 小説, 恋愛

2007年06月25日 edweb これはおもしろい  軽いおとぎ話ですね。キレイにまとまってるしネット用の読み物として完成度が高いと思う。内容に関しての感想は「よくそんなめんどくさいことしたなあ」それぐらい。

2007年06月25日 komatz

2007年06月25日 hebomegane

2007年06月25日 mike_n これはひどい ネタ? 「やられたらやり返せ」「弱い者が更に弱い者を叩く」現代の寓話。

2007年06月25日 teruya 心理学 これぐらいの話に不快感を覚えるというのは、この輪のなかに自分がいるのか、この輪にすらコンプレックスを感じるほど弱かったりするのかな?

2007年06月25日 doukaku 増田, 恋愛

2007年06月25日 myrmecoleon はてな, 匿名, 文学 最後の一行はあえて抜くのもいいかも。

2007年06月25日 kirikabu

2007年06月25日 Quadrant *ネタ

2007年06月25日 ken_wood *, 読み物, ネタ, 男女 >愛して下さい、セックスして下さい、借金があるんです。どうか、どうか。彼女はそう言った。うーん、そうなのか。僕は言った。あのね、僕に幻想や愛情を抱かれても困るんだよね。お金がない?簡単なことだよね。

2007年06月25日 saxon 増田, 恋愛

2007年06月25日 soba_taro 読み物

2007年06月25日 ikkan01 anonymous, text, 恋愛, 小説

2007年06月25日 kotukotu_G neta

2007年06月25日 yamakozawa

2007年06月25日 hajimepg

2007年06月25日 ryuka01

2007年06月25日 SiroKuro 読み物, ネタ, 性 増田先生の作品が読めるのは匿名ダイアリーだけ

2007年06月25日 name774a おもしろい, love うーん…

2007年06月25日 tk18

2007年06月25日 lucifer-alpha ショートショート, ネタ, 増田, 小説, 恋愛

2007年06月25日 synonymous 有り得ん話ですわ。

2007年06月25日 ee84115 小説として面白い

2007年06月25日 i-Daisuke 読書

2007年06月25日 gomis

2007年06月25日 kameda007 駄作。読まれることに集中しすぎて落ちてない(かるい落ちという意味でも)。18歳程度の仕上がり。特に「強い人間には運もよってくる」の部分は女だろ?お前はと思ったね。そういう意味で面白かった。宅間守的。

2007年06月25日 crossbreed neta

2007年06月25日 kiku-chan 増田, 恋愛

2007年06月25日 itacchi anonymous, hatena, love, short story なかなかよくできてる

2007年06月25日 myamada ネタ, ショートショート

2007年06月25日 maname 才能あるよ。増田先生の次回にも期待!

2007年06月25日 porimern 読み物, 増田

2007年06月25日 vogelzug ネタ, 読み物

2007年06月25日 tomo-moon 読み物 落とし方は巧いが、読後感は悪い

2007年06月25日 eiji8pou 面白いSM文学

2007年06月25日 legnum anonymous もう少しリアリティが欲しいっす

2007年06月25日 kokorohamoe

2007年06月25日 tomako7 ネタ, 読み物 よくできてる

2007年06月25日 muteit 読み物 ショートショートとして上出来だと思った。

2007年06月25日 ro-man 面白かったYo

2007年06月25日 ukabu

2007年06月25日 zaikabou 文藝, ネタ 面白いけど、あんまり愉快じゃないね

2007年06月25日 Masao_hate 小説 強者の傲慢がよく表現されていて、よい。

2007年06月25日 kurimax コラム

2007年06月25日 joe_eugene 匿名

2007年06月25日 HolyGrail 増田, 読み物

2007年06月25日 fromdusktildawn

2007年06月25日 clucker 増田, neta, 恋愛

2007年06月25日 tabletalk 恋愛, 読み物 ぐーるぐる

2007年06月25日 udy ネタ, 増田 適温でいい感じ。

2007年06月25日 oirano あとで

2007年06月25日 masya78

2007年06月25日 deaiplus 出会い記事, 一般

2007年06月25日 and_HappyDayz

2007年06月25日 nedame

2007年06月25日 zankey あとで読む

2007年06月25日 nyon2 増田 増田だなーと読んでたらオチがついててびっくり。

2007年06月25日 natalico

2007年06月25日 harlem_jets 増田, ネタ, 読み物

2007年06月25日 hasenka 因果応酬テンプレ

2007年06月25日 footos 増田, 恋愛

2007年06月25日 obacan ハトダ ショートショート。このネタをハトダに投げるのはちょっと気持ち悪いけど、ふつうに雑誌に載ってたらおもしろがれる作品ではあるとおもった。

2007年06月25日 Daipon

2007年06月25日 matsurinoato 読み物, 増田, ネタ

2007年06月25日 bunoum 増田, 読み物

2007年06月25日 fuktommy 増田, 読み物

2007年06月25日 rajendra 男と女, 物語 これはいい感じ。オチをひねり過ぎないところがショートショートっぽい。

2007年06月25日 onokyo novel

2007年06月25日 morygonzalez ショートショート, 寓話 落ちが面白い。でも後半の展開が強引。

2007年06月25日 EurekaEureka situation 北方

2007年06月25日 idiot817 小説 星新一みたい

2007年06月25日 enemyoffreedom 増田, 読み物, 男女 オチがいい

2007年06月25日 wartanenemon 恋愛

2007年06月25日 zapa これはひどい, ネタ

2007年06月25日 wacky 恋愛, 小説, 面白 ショートストーリー。このオチは面白い。

2007年06月25日 sennji

2007年06月25日 WASSHOI

2007年06月25日 REV

2007年06月25日 kekera 増田

2007-06-23

hatena diary

って急に重くなるね。CSSで色々消して遊んでたら重くなったお。

しかしCSSって凄いね。

編集画面のtextareaの幅と高さも変えられるのかな?

おぉ、すごい、変えられた。すごいなぁ。

2007-06-21

ttp://d.hatena.ne.jp/michikaifu/20070621/1182376533

この人の書く事は、面白い事が多いから Feed もとってるけど、たまに、脊髄反射的な記事を書いてて、僕は気分が悪くなる。読まなきゃいいって?ごもっとも。しかし読んでみない事には、脊髄反射かどうかわからんじゃないか。毎回ブクマがつくわけでもなし。

今回は何が嫌だったのか。

お金がないなら、ウチで一緒に育ててあげるよー(いや、ウチもあまりお金ないけど・・)。補習校も一緒に連れてってあげるよー。だから、頼むから、頼むから、子供を殺すのはヤメテクレ・・・ でも、それももうすべて、遅い・・・

これがなかったら普通エントリだし、なくても十分意味は通じるけど。『お金がないなら、ウチで一緒に』って、アンタんちは孤児院なのか?もちろんそれがある種の優しさであろう事は、今冷静になって考えると理解は出来るのだけれど、なんか気持ち悪い。妬み?まぁ僕は人の子供を育てられるほど豊かではないな。それ以上に、いくら(全ての)子供が愛おしいからといって、簡単に自分が慈悲深いことを吐露する、いやそれは違うな。経済的に無責任な発言を、コンサル業の人が云ってるのが違和感なのかな。そう思うと前にあったのもすこし納得がいくかも。

つまり僕はあれか?大金もらってる(もらってそうな)人に過大な妄想を抱いているのか。やっぱ妬みじゃん。

2007-06-15

池田信夫の言っている「フィルタリング」って

http://blog.goo.ne.jp/ikedanobuo/e/accdf9e44f13a20620e513865403fc91

池田信夫の言っている「フィルタリング」って、「俺にとって都合が悪いブクマコメントを簡単に削除できる仕組みを作れ」という意味なんだろうか。

はてなが嫌いなら「hogehoge -hatena」でググる、あるいは、はてブタグ[はてな]がついているエントリは見ない。

そういうのがフィルタリングだと思うんだけど。

こちらを攻撃してくるイナゴがいても、その文章に説得力がなければ誰も信用しない。

イナゴの文章に説得力があるなら、こちらからも対抗エントリを書けばいい。

一方的に削除を求めるのは「イナゴが書いている内容は事実です」と言っているようなものだ。

価値のないエントリ削除され、誰かを傷付けるエントリ削除され、間違った情報削除されるようなインターネット希望しているんだったら、脳がお花畑でスキップしてるとしか思えない。

仮にそんな気持ち悪いインターネットが実現するとすれば、そこにはGoogleはてなブックマーク存在してないんだろうね。

どうか、はてな池田信夫の望む方向に転びませんように。

なにが村化を促進するのか?

インターネットは村化を促進させるのだろうか?インターネットのなにが村化を促進するのだろうか?

Hatenaは"はてな村"と称されるように村化が進んだコミュニティであるが、何故Hatenaは強く村化したのだろうか。

はてな界隈で腐るほど同じ内容が出ているのはわかっているが、暇なので考える。


はてなは他のブログサービス会社と違い純化した村を体現している。

最近では、はてなである程度話題になったものが2ちゃんねるで話題になるなど、スピンオフも増えてはいる。それが村化を促進するのか、それとも村化を食い止めることになるのか。

話題がスピンオフされた結果、また違う領域が村の範囲になるだけなのか。

それとも影響の対象が増える分だけ、村は国に近くなっていくのか。

今後Hatenaがどうなっていくのかはこれらの要因に強く起因するだろう。そしてこれからの対策はこの流れにどのような一石を投じることになるのか見物である。

Hatenaから離れたコミュニティ、即ち村社会独特のネットイナゴを生み出さないような開かれたコミュニティは出来るのかを考えていたら、何故Hatenaはこのような独特なコミュニティを形成しているのかを思考してしまった。

追記

http://anond.hatelabo.jp/20070615130235

はてな村とは、はてな固有の話題で統治されている部分のことをはてな村というのではないだろうか。独自のコミュニティ、つまり内輪のコミュニティ内の出来事が"村"と揶揄されているように思う。

例としてMarco11の周辺など。うーん、上手く言葉がまとまらないな。普通はどうでもいい話題を村の一大事として扱う辺りが村っぽさの一部分。

我が村の事だから話題になる。実際はHatenaの中でも一部ユーザが村を形成しているに過ぎないのだが、Hatena固有の話題であるからして、村から外にいる者の視点で眺めると、それがHatenaの固有さを際立たせる。

それが村っぽさなのだろうか。

追記

さらに離れて、題名に一戻りして、Hatenaのような村が逆にインターネットを使ってグローバルな存在になっていくとしたら、その時グローバリゼーションは村化を意味するのかを考察したい。

別の増田ですが。

ネットイナゴに襲われるのは質が高いからだというのは置いといて。

ソーシャルブックマークネットイナゴを生み出す、ネットイナゴが発生するのは好ましくない事だから、はてぶを何とかしろよという池田氏の発言を真剣に検討するHatenaは、tinycafeブクマしないでよ発言をもまた真剣に検討しているような気がするのだ。

今回の件は実はtinycafeの大勝なのだ。tinycafeは自分がネットイナゴの被害を被ることにより、ネットイナゴをはてぶ上に発生させた、tinycafeという場を食べ終わったイナゴたちは、次のちょっと痛いものを求め続けた。

そして今回の池田氏の発言を引き出す事が出来たのだ。

というお話だったのさ。

あ、これオオツネさんが言ってたことか。

でもこれは、tinycafeネットイナゴ発生の土壌説だからちょっと違うかな。

しかし、tinycafeはこれでhatenaをも潰す事が出来る。なんという知恵者。なんという大局観を持った上での戦術の使用。自らが囮となり死することでWeb2.0の強力すぎる力を最大限に利用し、Web2.0自身の自重で破滅をもたらす奇計を放った現代版諸葛孔明2.0

死せるtinycafe、生ける池田信夫(ここはHatenaか)を走らすとはこのことか。

Hatenaはやっかいな人間を相手にしていたようだ。

そもそもtinycafe2として蘇る相手、敵として不足は無い。

2007-06-11

ネットやりとりされるネガティブコミュニケーション

jkondoHatenaが他のネットサービスと比べて罵詈雑言が多いことを多少は気にしているのだろうか。

Hatenaの中で変なのが多いところははてなブックマーク匿名ダイアリーかな。ブックマークの方は一応IDと関連付けられているのだけれど、結構多いみたいだね。キャラタグが出来ちゃってるからやめるにやめられないんだろうな。

ダイアリーなら無駄な事だってわかってほとんどの場合単発のエントリで終わる事が多いけど。

2chとの併用層というか、あそことの繋がりが多少なりとも大きなユーザが他社に比べて沢山いるように思うが、それが一つの原因かな。何故Hatenaがひきつけるのかは、そうだな、はてなブックマークが国内最大手且つほぼベストだからか。

そして、ブックマークからの層が各種はてなサービスに留まっている。

はてなからネガティブを減らす手立てを考えるのは相当めんどっちいように思う。

はてなの色を変える。また匿名ダイアリーの色を変えるというのは結構難儀だろう。

くねくねコミュニティも逆回転すると全体に悪い影響を与えるようだ。

ダークさやひねくれた感じがギークっぽい日本ネット社会空気を変えられるかな。

他の事していればいずれこのくだらないネガティブなものも解決するような気もする。

2007-06-10

[]今昔の今昔

anond:20070324154048のあと、グループRSSリング、そしてアンテナ(告知見つからず)がサクラ移転している。

% diff resolve.old resolve.txt | grep '[<>]' | sort
< 125.206.202.82:       search.hatena.ne.jp.
< 221.186.129.147:      ring.hatena.ne.jp.
< 221.186.129.148:      g.hatena.ne.jp.
< 221.186.146.28:       a.hatena.ne.jp.
< 61.196.246.68:        r.hatena.ne.jp.
> 221.186.129.147:      search.hatena.ne.jp.
> 59.106.108.73:        g.hatena.ne.jp.
> 59.106.108.74:        a.hatena.ne.jp.
> 59.106.108.75:        r.hatena.ne.jp.
> 59.106.108.76:        ring.hatena.ne.jp.

さて、次はq、そしてよいよdだろうか。

2007-06-08

http://anond.hatelabo.jp/20070608184436

自分もよくわからんのだけど、なんかアレだなと引っかかっているところ

2ちゃんねるが上から下まで束ねていたけど、現在ではステレオタイプ2ちゃんねらが幅を利かせていて、上から下、下から上の相互交流が減りつつあるのではと思っている点が一つ。

分散化したサービスの上では人もまた同じような人間で固まりやすく、多様でネットならではの枠組みを超えた有意義なコミュニケーションがとられにくいのではというところかなぁ。と

最近の例だと、梅田もちおがLingrチャットをしてたけど、あれは不特定多数ではなくてHatenaユーザとか、そういう近辺の人たちだった。個人的には偏りがあったように思う。

酷く個人的な危惧感ですよ、ええ。でも、ネットの本質というのは今までの人間のかかわりを越えられるというところにも一点あるのではとそう思っているのです。

また同様にこのようなことも含め、色々な事を超えられるのがネットだというのもわかってはいますが。

それと単純に、大勢が確実に見るだろうマスメディア的役割を果たす場としてのものがネットに無いのでは?という点の危惧もありかな。それが必要なのか?というのは別として。そういうのって出来そうにないよねということ。

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