はてなキーワード: stateとは
アカウントを大量に所持し、ブックマークスパムを繰り返して情報操作を行っているとの疑惑について。
同一人物が管理運用しブックマークをつけていると思われるユーザーIDは以下の通り。
id:yh4a1uj4r2ew id:kelopa id:xn--icktho51ho02a id:jk23d1sx id:kd1321ks3241 id:ldf132d11h1h id:z1sx12tfd3g1h id:juhytfsdsadgh id:udfhfkrio id:srtyukrgnyujk id:ojkhfetybjhji id:ohgtyihgdryu id:lapvnfdkxsldie id:lphybcgfn id:adeftgvmkhg id:dkfjfureydkdlcjdh id:yglpsjeyfg id:ijuyvnfjko id:yutydfre id:ueowidkei id:uloijeiss id:ieowicvkhjl id:kiebjieudls id:iueiwodjbmf id:utiuyeowos id:ioiojfibalsieu id:uurwoisoigbm id:lakaiajaigiekwl id:iuwoiunolzzxc id:uaoiuveullsiu id:hilineosilew id:hy4a654yer id:kisiritooru id:bh6s34 id:hs3s4 id:sd3gf35 id:dtbghj354 id:sfgsfg5 id:fsgs5646f id:dgsf5453 id:adf3a432aa id:af3432sss id:af34a34a id:aef4afae id:dfae324adef id:fae456ae id:fgaera4654ae id:fatre354adf id:agfa3245atae id:gafea4854s3r id:fata6541aga id:agaw32456afga id:aea453165g id:a6544a id:gae52487r id:gae284tg id:gfaefa8543ht56f id:ws21496af id:hgara354ga id:hseg5154f id:ada254f id:dae326a id:dsf6454sfd id:dfs654654sdf id:jah4785 id:anj1458 id:hajba54716 id:dafh478549 id:ajdk14785 id:dh215 id:dh21485 id:dj54ds5 id:ys65 id:nsd1485 id:bhs1th8545 id:syh5 id:sth18 id:hth51 id:hs24t8 id:h8t4hg5 id:jdydt8452s id:fa414a7yh5 id:a464ag5 id:a4189j1a45 id:hs34h654a id:s65ts54hg id:a654ya id:a68t4a8a46a id:aga56444ga id:a64a5at4r id:g23r6s2s id:sa5546y6a id:ju54a56sa id:ha56ag64a id:at568421sae id:ae5234afre id:yws35t25a56 id:ga5g24e42d id:j7j54g8 id:yjs6t581f id:ts515gt8 id:shj321js5r7 id:sjs4851s2 id:js24sh16 id:je6a15ta21 id:shj3549s id:jhs548s35 id:shs95s47 id:shs54s54 id:sys54sy54 id:sh24158hs id:stsrs547s id:str5s47 id:sts548 id:sr514h2s5 id:sg5rg5487s id:s5rtsf4578 id:htrsg548 id:srsag9544s id:hs54s87h id:hjsr51s56 id:hsfsg484s id:ggg48 id:f2r4t25f1 id:ik1gtf5y5 id:ta64a2eerr id:ya6y4a21y487a id:a654y2a34a id:ayt67a4ewe5 id:yfag56a15ewr63 id:a64a524rehgy3 id:ua327a3a id:uhwe354gt4r id:aekds34a1r54a id:h674atat id:hay64e314w id:yayuh354a31a id:a56a065syt0a id:g0a6544ae56e0 id:a655ya15ea id:dk6ldk3sdk id:dtu6fj63dhs id:druik5kdgt id:g6gd52cud id:fkuf34gk id:fogvk3fiuy5 id:jdshb25hdsjh3s id:dst6hjdsh5h id:dj5dhjs5dsh id:jdf5dj5d id:djjdsh52dj id:shs64jhs id:h56dj65sh id:jdt3jdsh id:shsth5dh id:shs5hshs id:hjsr1465s id:h3s343 id:sdjszf34sauj id:hargf8ahg id:hsaar3setat id:arg2srggarr id:jhs56dhs id:taa354ha id:gsar34sga id:hara6agar id:gafg63gha id:hsfdh3zh id:aghs6ga id:yhxd52gh id:arett3agta id:fga63rfgas id:asarg3agtg id:sg6a id:agtta52sgha id:aa6hatta id:jysrah5shsra id:ash5gfa id:gadaf2atgta id:atr4hsfda id:hsr35hggar id:jyesr35ad id:dga5ata id:ae2satf id:hga57shye id:hhy54 id:ar35454a id:ae6354sarr id:ueko22toteti id:ueko21toteti id:ueko20toteti id:ueko19toteti id:ueko18toteti id:ueko17toteti id:ueko16toteti id:ueko15toteti id:ueko14toteti id:ueko13toteti id:ueko12toteti id:ueko11toteti id:ueko10toteti id:ueko09toteti id:ueko08toteti id:ueko07toteti id:ueko06toteti id:ueko05toteti id:ueko04toteti id:ueko03toteti id:ueko02toteti id:ueko01toteti id:uttyann137 id:uttyann136 id:uttyann135 id:uttyann134 id:aea34g34 id:uethy234 id:sj684stt8dgh4 id:uttyann122 id:uttyann120 id:uttyann130 id:uttyann133 id:uttyann132 id:uttyann131 id:uttyann129 id:uttyann128 id:uttyann127 id:uttyann126 id:uttyann125 id:uttyann124 id:uttyann123 id:uttyann121 id:uttyann119 id:uttyann117 id:kye851dj4d id:asjdyj541dsu id:ijkfd48415 id:sjhty5445d id:jfsj8yx5yy4 id:hs5741a5 id:hid3543ik id:e7g3avc1h3s id:af34a354fa4 id:hsth5723 id:ghs9845s id:fsr84sg145 id:adfa18fgs2 id:da354ga id:g345ag id:hg54gj5 id:gjs354s1 id:ahotte47484 id:afa84727h id:aaa5454awg id:d4f75hgd4 id:gh75h8d4 id:s6d5c9 id:s427a8s7 id:f417f82g5 id:zz9578zgf id:f45f478z id:f454f4599 id:fdfdf8479 id:fsdfg245 id:hikken id:kuro_utopia id:yuri_hanataba id:toge_hitoki id:kuroi_maria id:syounen_boy id:spray_de_egaita id:nite_and_day id:like_a_angel id:kuro_no_postol id:sea_you id:beams_ah_beams id:yasashii_higeki id:ice_my_life id:for_dear id:mac_wo_kiwameru id:powerbook_g id:my_win_good id:my_mac_saikou id:wansegu_yoi id:selves_xxxx id:in_sairensu id:dezaia_l id:end_obu_sorrow id:ra_se_n id:g_god_g id:wizu_rabu id:fakexxxx id:civilize_luna id:feisu_to_feisu id:inoran_ken id:true_b id:call_for_love id:ueto_dakishime id:ueto_kiss id:ueto_renai id:genki_c id:hutsuka_yoi id:atama_itai id:orona_min_c id:kasaneta_kuti id:kasaneta_yubi id:queen_for_you id:mist_of_tears id:hatujouki id:more_trance id:risoukyou id:shilk_shilk id:last_eve_for id:equal_jesus id:sutekina_yume id:i_believe_y id:tsuki_wo_omou id:chess_chess id:nugget id:karatani id:cocoron20 id:kami_ga_warau id:the_slain id:kagirinaku_t id:shade_shade id:branch_road id:samdhi_taimu id:taimu_izu id:precious_xxxx id:decide_ones id:ima_ha_fate id:hurry_up_mode id:milmilmilmil id:ayapon565
多重アカウントを所持しブックマークスパムを支持していると思われる業者のドメイン(の一部)はこれ。
high.movie-connection.com
5.movie-connection.com
4.movie-connection.com
2.movie-connection.com
1.movie-connection.com
www.movie-connection.com
xn--cck0cya3lt22posxn4qgqh.movie-connection.com
www.movie-connection.com
azuqun.blog103.fc2.com
mlink.blog111.fc2.com
eroikoeroiko.eroiko-daisuki.com
ero.ero-moe.net
xn--n8j214gc5b6wwz3a.sblo.jp
xn--h9ja3mb0426g1hwa.sblo.jp
ブックマークスパムによる情報操作を発注していると思われるMOVIE-CONNECTION.COMについての情報分析。
Domain Name: MOVIE-CONNECTION.COM Registrar: KEY-SYSTEMS GMBH Whois Server: whois.rrpproxy.net Referral URL: http://www.key-systems.net Name Server: NS1.VALUE-DOMAIN.COM Name Server: NS2.VALUE-DOMAIN.COM Name Server: NS3.VALUE-DOMAIN.COM Status: ok Updated Date: 15-mar-2007 Creation Date: 15-mar-2007 Expiration Date: 15-mar-2008 DOMAIN: MOVIE-CONNECTION.COM RSP: DigiRock Inc. URL: http://www.value-domain.com created-date: 2007-03-15 updated-date: 2007-03-15 registration-expiration-date: 2008-03-15 owner-contact: P-TGK215 owner-organization: Personal owner-title: student owner-fname: takahiro owner-lname: kubo owner-street: koyama1-1-5 None owner-city: koubesinisiku owner-state: hyougo-to owner-zip: 651-2144 owner-country: JP owner-phone: 090-1005-6622 owner-email: gongongon1221@yahoo.co.jp admin-contact: P-TGK215 admin-organization: Personal admin-title: student admin-fname: takahiro admin-lname: kubo admin-street: koyama1-1-5 None admin-city: koubesinisiku admin-state: hyougo-to admin-zip: 651-2144 admin-country: JP admin-phone: 090-1005-6622 admin-email: gongongon1221@yahoo.co.jp tech-contact: P-TGK215 tech-organization: Personal tech-title: student tech-fname: takahiro tech-lname: kubo tech-street: koyama1-1-5 None tech-city: koubesinisiku tech-state: hyougo-to tech-zip: 651-2144 tech-country: JP tech-phone: 090-1005-6622 tech-email: gongongon1221@yahoo.co.jp billing-contact: P-TGK215 billing-organization: Personal billing-title: student billing-fname: takahiro billing-lname: kubo billing-street: koyama1-1-5 None billing-city: koubesinisiku billing-state: hyougo-to billing-zip: 651-2144 billing-country: JP billing-phone: 090-1005-6622 billing-email: gongongon1221@yahoo.co.jp nameserver: ns1.value-domain.com nameserver: ns2.value-domain.com nameserver: ns3.value-domain.com
<<
どうやらブックマークスパムの元締め関係者は、神戸市西区小山のクボタカヒロという人らしい。(偽名の可能性あり)
なお、登録されている電話番号は090-1005-6622だが、この電話番号でググルとこの出会い系サイトの利用規約に書いてある電話番号と完全に一致する。
http://72.14.235.104/search?q=cache:tjQsEzlAt-UJ:love-ag.com/use.html
<第1条> 目的
本規約は会員が無料コンテンツサービス[LOVEアゲイン](以下、弊社又は当サイト)を利用する上で遵守すべき規約を定める事を目的とします。 個人間で発生したトラブルには一切の責任を負いかねます。
(略)
【管理主】〒542-0067 大阪府大阪市中央区松屋町9-20
管理者:木村勇登
TEL:090-1005-6622
MAIL:info@love-ag.com
さらにこのlove-ag.comというドメインをWhois検索するとこういう情報が出てくる。
Domain Name: LOVE-AG.COM Registrar: ENOM, INC. Whois Server: whois.enom.com Referral URL: http://www.enom.com Name Server: NS1.LOVE-AG.COM Name Server: NS2.LOVE-AG.COM Status: clientTransferProhibited Updated Date: 23-oct-2007 Creation Date: 04-oct-2007 Expiration Date: 04-oct-2008 Domain name: love-ag.com Registrant Contact: personal masasi odazima (iyaiyatereruna@yahoo.co.jp) +80.52368569 Fax: - aogakidai 1-3 none nara-shi, nara-ken 631-0053 JP Administrative Contact: personal masasi odazima (iyaiyatereruna@yahoo.co.jp) +80.52368569 Fax: - aogakidai 1-3 none nara-shi, nara-ken 631-0053 JP Technical Contact: personal masasi odazima (iyaiyatereruna@yahoo.co.jp) +80.52368569 Fax: - aogakidai 1-3 none nara-shi, nara-ken 631-0053 JP Status: Locked Name Servers: ns1.love-ag.com ns2.love-ag.com
ドメインは奈良県奈良市青垣台のオダジママサシなる人物が管理しているらしい。(やはり偽名の可能性あり)
以上の情報から分析すると、数十のアダルトサイトを同時に運用している組織による情報操作であることから、前述の疑惑のはてなIDは、関西系組織暴力団関係者によって運用されている可能性は極めて高いと思われる。
/* 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
http://anond.hatelabo.jp/20070711013155
人待ちの間暇だったから作ってみたよー。
さっくり作ったから無駄が多い気がするけど、とりあえず動いた。
全体が埋まったかどうかの判定をしないでひたすらまわしまくってるし、なんか綺麗な形じゃないけど、とりあえず投稿しちゃうよ!
これ綺麗な形にするの結構難しいんじゃないかな。面白いね。
class Maze class Box WALL = 0 LOAD = 1 def initialize(state = LOAD) @state = state end def is_wall? return true if @state == WALL false end def is_load? return true if @state == LOAD false end def set_wall @state = WALL end def set_load @state = LOAD end end TOP = 10 RIGHT = 11 BOTTOM = 12 LEFT = 13 def initialize(height = 100, width = 60) @height = height @width = width @data = Array.new self.fillbox @counter = 1000 @root = Array.new end def choose_random return rand(@width-3)+1, rand(@height-3)+1 end def choose_direct t = rand(4)+10 return t end def move(x, y, t) new_x = x new_y = y case t when TOP new_y -= 1 when RIGHT new_x += 1 when BOTTOM new_y += 1 when LEFT new_x -= 1 end return new_x, new_y end def make_load?(x, y) return false if x < 0 or y < 0 or x > @width-1 or y > @height-1 return false if @data[x][y].is_load? true end def dead_end?(x, y, t) case t when TOP if make_load?(x-1, y) and \ make_load?(x-1, y-1) and\ make_load?(x, y-1) and\ make_load?(x+1, y-1) and\ make_load?(x+1, y) then return false end when RIGHT if make_load?(x, y-1) and \ make_load?(x+1, y-1) and\ make_load?(x+1, y) and\ make_load?(x+1, y+1) and\ make_load?(x, y+1) then return false end when BOTTOM if make_load?(x-1, y) and \ make_load?(x-1, y+1) and\ make_load?(x, y+1) and\ make_load?(x+1, y+1) and\ make_load?(x+1, y) then return false end when LEFT if make_load?(x, y+1) and \ make_load?(x-1, y+1) and\ make_load?(x-1, y) and\ make_load?(x-1, y-1) and\ make_load?(x, y-1) then return false end end true end def check_all?(stack) for i in TOP..LEFT do return false if !stack.include?(i) end true end def extend(x, y) @data[x][y].set_load check_stack = Array.new loop do t = choose_direct check_stack << t new_x, new_y = move(x, y, t) if enable_new_point?(new_x, new_y) if !dead_end?(new_x, new_y, t) then @root << ["ex", new_x, new_y, t] extend(new_x, new_y) break end end break if check_all?(check_stack) end end def enable_new_point?(x, y) return false if x<=0 or y <= 0 or x > @width-1 or y > @height-1 return false if @data[x][y].is_load? true end def _make x = y = 0 loop do x, y = choose_random break if @data[x][y].is_load? end @root << [x,y] extend(x, y) end def make_goal x = @width - 2 y = @height - 1 for i in 1..@width-3 if @data[x-i][y-1].is_load? then @data[x-i][y].set_load break end end end def make_start for i in 1..@width-3 if @data[i][1].is_load? then @data[i][0].set_load break end end end def make self.fill_all x, y = choose_random @root << [x,y] @data[x][y].set_load extend(x,y) while(!is_fill?) do _make end make_goal make_start self end def is_fill? @counter -= 1 return true if @counter < 0 false end def fillbox for i in 0...@width do @data[i] = Array.new for j in 0...@height do @data[i][j] = Box.new end end end def fill_all for i in 0...@width do for j in 0...@height do @data[i][j].set_wall end end end def output for i in 0...@height do for j in 0...@width do if @data[j][i].is_wall? then print "#" else print " " end end print "\n" end end end Maze.new(30, 30).make.output ## output # ############################ # ## # # ## # # ## ## ## ## # ## ### # ### # ### # # #### ### # # # ## ## ## ### # # # ## ### # # # # #### ## # ### ## ## ## ## ### # ## # # # ### # # #### # ## ## ## # ## # #### # # ### # # # ### # #### # ## # # ## ## ## # # ### ###### ###### ### ####### ### # # ## ### # # # ## # # # ####### # # # # ### ### # # # # ## ## # ## # # ### # ######## ######## # # # ## ## # # ### # ### ## ## ## ## ##### # # ## # # # ### # # # ######## # ##### ## # # ## # ## # # ##### # # # ####### # ## # ## # ## ## # ## ### ### ## ####### # # ## ## ## ## ### ## # # #### ### # # ## # ## # # # ## ## # # ### ###### ## # # # # # # ## # ### # ## ## # # # # # ## ## # # ## ## # # ## # ## # ########################### ##
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月前に大体出来てたって事かな
http://www.sitnews.us/HowardDean/060104_dean.html
Electronic Voting - Not Ready For Prime Time
By Howard Dean
June 01, 2004
Tuesday
In December 2000, five Supreme Court justices concluded that a recount in the state of Florida's presidential election was unwarranted. This, despite the desire of the Florida Supreme Court to order a statewide recount in an election that was decided by only 537 votes. In the face of well-documented voting irregularities throughout the state, the U.S.
Supreme Court's decision created enormous cynicism about whether the votes of every American would actually be counted. Although we cannot change what happened in Florida, we have a responsibility to our democracy to prevent a similar situation from happening again.
Some politicians believe a solution to this problem can be found in electronic voting. Recently, the federal government passed legislation encouraging the use of "touch screen" voting machines even though they fail to provide a verifiable record that can be used in a recount. Furthermore, this equipment cannot even verify as to whether a voter did indeed cast a ballot for their intended candidate. Unfortunately, this November, as many as 28% of Americans - 50 million people - will cast ballots using machines that could produce such unreliable and unverifiable results.
Only since 2000 have touch screen voting machines become widely used and yet they have already caused widespread controversy due to their unreliability. For instance, in Wake County, N.C. in 2002, 436 votes were lost as a result of bad software. Hinds County, Miss. had to re-run an election because the machines had so many problems that the will of the voters could not be determined. According to local election officials in Fairfax County, Va., a recent election resulted in one in 100 votes being lost. Many states, such as New Hampshire and most recently Maine, have banned paperless touch screen voting and many more are considering doing so.
Without any accountability or transparency, even if these machines work, we cannot check whether they are in fact working reliably. The American public should not tolerate the use of paperless e-voting machines until at least the 2006 election, allowing time to prevent ongoing errors and failures with the technology. One way or another, every voter should be able to check that an accurate paper record has been made of their vote before it is recorded.
Both Democrats and Republicans have a serious interest in fixing this potentially enormous blow to democracy. A bipartisan bill, sponsored by Rep. Rush Holt (D-N.J.), is one of several paper trail bills in the House and Senate and it should be passed as soon as possible. A grassroots movement for verified voting, led by organizations like VerifiedVoting.org, is gaining momentum nationwide.
There is nothing partisan about the survival of our democracy or its legitimacy. We cannot and must not put the success of one party or another above the good of our entire country and all our people. To the governments of the fifty states, Republican or Democrat, I ask you to put paperless e-voting machines on the shelf until 2006 or until they are reliable and will allow recounts. In a democracy you always count the votes no matter who wins. To abandon that principle is to abandon America.
(Electronic Voting - Not Ready For Prime Time )
2000年12月、連邦最高裁の5人の判事は、フロリダ州大統領選挙投票の数えなおしは是認できないと結論するに至った。この決定により、フロリダ州最高裁が州内全ての投票の数えなおしを要求したにもかかわらず、僅か537票差で勝敗を決定する大統領選挙を生み出すことになったのだ。州内での選挙不正に関する明確な情報に直面して、合衆国の最高司法の決定は、全てのアメリカ人の投票が実際に数えられるかどうかについて重大な不信感を作り出した。フロリダ州で起こったことを今更ひっくり返すことはできないが、同じ事態が再び起こることを防ぐために、私たちは民主主義に対する責任を負っている。
政治家の中には、この問題を解決する答えは電子投票にあると信じる者もいるようだ。最近、連邦政府は、「タッチスクリーン」投票機の利用を促進する法案を成立させたが、当の電子投票システムは票集計内容を記録する機能を持たないために、票の再集計ができない。さらに、その電子投票機は、投票者が本当に希望する候補者に投票したかどうかを確認する機能すら持たないのだ。あいにく、今年11月には、アメリカ国民の内28%、約5,000万人が、その電子投票システムを利用することになるわけで、信頼できない不確実な投票結果が生じる可能性がある。
2000年に利用されはじめたばかりのタッチスクリーン式電子投票システムは、利用が拡大するにつれ、信頼性の欠如による問題を発生させている。例えば、ノースカロライナ州ウェイク郡では、2002年に、ソフトの不具合により436票が消失している。ミシシッピー州ハインズ郡では、投票機のトラブルが多すぎて有権者が投票できず、選挙そのものをやり直すことになった。ヴァージニア州フェアファックスの選挙管理担当者によれば、最近の選挙では100人につき1人の票が消失していたそうだ。多くの州では、ニューハンプシャー州やメーン州の例のように、紙の記録を残さない(ペーパーレス)タッチスクリーン投票機の利用を禁止することになり、他の州でも同様の決定を行う計画であるという。
信頼性も透明性も欠如している状況では、いくら機械が動作しても、正しく動作しているのかどうかを検証することができない。アメリカ国民は、少なくとも進行中の不具合と技術的失敗の防止に必要な時間を確保するため、2006年度選挙までは、ペーパーレス電子投票機の利用を容認すべきではないのである。なんとしてでも、全ての有権者が、投票が集計される前に、自分の投票内容を、正確な紙の記録を残すことによって確認できるようにすべきであろう。
民主党支持者も共和党支持者も、この民主主義に対する重大な打撃となる可能性を修正することに、真剣に取り組もうとしている。ラッシュ・ホルト議員(ニュージャージ州議員/民主党)の提出した超党派の法案は、紙の記録を求める法案のひとつだが、できるだけ早く議会で承認されるべきであろう。VerifiedVoting.orgなどの組織によって活発化している、確認可能な投票システムを支持する草の根活動は、国民全体の機運に適ったものなのである。
私たちの民主主義や分別を存続することは、党派には無関係である。国民と国家全体の価値以上に、片方の党派の成功を優先するようなことはできないし、してはならない。50州をまとめる政府として、共和党員・民主党員のどちらに対しても、2006年まで、あるいは充分に信頼できる状態で再集計が可能になる日まで、ペーパーレス電子投票機を箱に収めたままにしておくことをお願いしたい。誰が勝利しようと、民主主義の下では全ての票は数えられるべきなのである。その基本原則を廃止することは、アメリカを捨てることと同じだ。
ブッシュ大統領の選挙には以前からイカサマ疑惑がささやかれています。
http://headlines.yahoo.co.jp/hl?a=20041119-00000001-wir-sci
http://tanakanews.com/e1008election.htm
http://hiddennews.cocolog-nifty.com/gloomynews/?06150300
アメリカは正義の国で悪い人は一人もいませんので、私はこんな話は信じませんが、みなさんはどう思いますか?
恥ではない。犯罪である。(髪型が) 9
どうでもいいけどたかがネットワーカーにこんなことを言われる筋合いはない。 64
http://anond.hatelabo.jp/20070107222255
・ハルヒの作中パーソナリティをみる限り、発症するなら統合失調症じゃないような気がする。それと、言っている内容はかなり妄想めいてはいるんだけど、「自分が電波を受信する」「自分に入ってくる」ような自我障害は認められない((ただし、DSM導入後、シュナイダーの一級症状としての自我障害が統合失調症に特異的な症状であるという見解に疑問符はついているが))から、統合失調症の妄想臭さを感じないんだよなぁ。彼女は、自分はまともで周りに面白い人がやってくると期待しているけれど、統合失調症の妄想なら、もっと自分にまつわる体験を妄想するような気がするんですよ。
・もうちょっと影のある性格なら、(何でも出来るのは親の自己愛を備給する為のスーパーガールとして詰め込まれたからという設定で)境界性人格障害系列のメンタリティを持っているって話になるんだけど、それにしては屈託が無さ過ぎる。
・じゃあボーダーっ気の無い自己愛パーソナリティ障害の可能性ならあるかもしれない?
→キメるべき肝心な場面では自分と対象との区別がしっかり出来ているのがなぁ。団員を自分の手足のようにコキ使う態度や「超監督」などと名乗るメンタリティはいかにも自己愛パーソナリティ障害っぽいんだけど、もっと、「私をみてみてみてみてみて!」とか「団員への心配りの無い冷淡さ」とか「私が楽しければ他の団員が楽しくなくない状況は無視」ってところがまだ弱いか。
結論:現時点では病気っぽさが無い。敢えていくなら自己愛パーソナリティ障害のケがある?
あ、そうだ。双極性障害を忘れていた。軽躁状態??軽い鬱状態の巡回するハルヒ、か。これなら無理やりこじつけられるか。脱抑制や観念奔逸を呈する手前ぐらいの、ごく軽いhypomanic stateとみるなら、一応当てはめられないことはない。でもこじつけチック過ぎるなぁ。やっぱり駄目だどれも上手く当てはまらないなぁ。
別に当てはまらなくてもいいよ、そんなの。