はてなキーワード: Nameとは
// ==UserScript== // @name anond // @namespace http://anond.hatelabo.jp/ // @include http://anond.hatelabo.jp/?page=* // ==/UserScript== function anond(doc) { $X(".//div[@class='section'][.//h3/a[2][starts-with(@href, 'http://anond.hatelabo.jp')]]", doc, Array).forEach(function(node){ node.style.display = "none"; }); $X(".//h3/a[1]", doc, Array).forEach(function(node){ var a = document.createElement("a"); a.name = node.pathname; a.href = "#" + node.pathname + "/footer"; a.innerHTML = "V"; node.parentNode.insertBefore(a, node); }); $X(".//p[@class = 'sectionfooter']/a[1]", doc, Array).forEach(function(node){ var a = document.createElement("a"); a.name = node.pathname + "/footer"; a.href = "#" + node.pathname; a.innerHTML = "^"; node.parentNode.insertBefore(a, node); node.parentNode.insertBefore(document.createTextNode(" | "), node); }); } anond(document); if (AutoPagerize.addDocumentFilter) AutoPagerize.addDocumentFilter(anond); // by http://lowreal.net/blog/2007/11/17/1 // $X(exp); // $X(exp, context); // $X(exp, type); // $X(exp, context, type); function $X (exp, context, type /* want type */) { if (typeof context == "function") { type = context; context = null; } if (!context) context = document; var exp = (context.ownerDocument || context).createExpression(exp, function (prefix) { var o = document.createNSResolver(context).lookupNamespaceURI(prefix); if (o) return o; return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : ""; }); switch (type) { case String: return exp.evaluate( context, XPathResult.STRING_TYPE, null ).stringValue; case Number: return exp.evaluate( context, XPathResult.NUMBER_TYPE, null ).numberValue; case Boolean: return exp.evaluate( context, XPathResult.BOOLEAN_TYPE, null ).booleanValue; case Array: var result = exp.evaluate( context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var ret = []; for (var i = 0, len = result.snapshotLength; i < len; i++) { ret.push(result.snapshotItem(i)); } return ret; case undefined: var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { // not ensure the order. var ret = []; var i = null; while (i = result.iterateNext()) { ret.push(i); } return ret; } } return null; default: throw(TypeError("$X: specified type is not valid type.")); } }
うごメモはてな - ゆうたさんの作品のスター/コメントを集計してみた。スターの方はentry.jsonを適当に処理して、コメントの方はHTMLを適当に処理した。
スクリプトはこんな感じ。
HTMLを正規表現でごにょごにょして['hoge', 'piyo', 'fuga', 'piyo']みたいな配列にして、でもこれだけだとコメントした回数がカウントできずに何回も同じユーザーが出てきてしまうから
a = ['hoge', 'piyo', 'fuga', 'piyo'] l = [] for i in a: l.append([i, a.count(i)]) l = list(set(map(lambda x: tuple(x), l))) l.sort(lambda x, y: cmp(y[1], x[1])) for i in l: print i[0], i[1]
とする。
import urllib, json h = urllib.urlopen('http://s.hatena.ne.jp/entry.json?uri=http%3A%2F%2Fugomemo.hatena.ne.jp%2F0B3D19604CE04B2F%40DSi%2Fmovie%2FE04B2F_08720FF94B42A_002') a = json.load(h) f=open('stars.txt', 'w') sys.stdout=f for i in a[u'entries'][0][u'stars']: print i[u'name'], i[u'count']
javascript:(function(j){j.src='http://jqueryjs.googlecode.com/files/jquery-1.2.6.min.js';document.body.appendChild(j);setTimeout(function(){$.ready();$('<script src=%22http://query.yahooapis.com/v1/public/yql?q=select%2520content%2520from%2520html%2520where%2520url%253D%2522http%253A%252F%252Fugomemo.hatena.ne.jp%252Fchannels%2522%2520and%2520xpath%253D\'%252F%252Fh3%252Fa\'&format=json&callback=makeSelect%22>').appendTo('body')},1000)})(document.createElement('script'));function makeSelect(o){var s=$('<select name=%22channel-name%22>');$.each(o.query.results.a,function(i,v){$('<option>').text(v).appendTo(s);});$('input.txt').replaceWith(s)}
修正:いい加減&が変換されるのを何とかしてほしい
解説:Hatena::Bookmark::24H(http://hatebu24h.ashitano.in/)に、トップエントリの獲得したブックマーク数の推移のチャートを加えます。
// ==UserScript== // @name chart of Hatena::Bookmark::24H // @namespace http://anond.hatelabo.jp/ // @include http://hatebu24h.ashitano.in/* // ==/UserScript== var url = unescape("http://chart.apis.google.com/chart?chs=160x60%26cht=ls%26chd=t:"); url = url + $X("//div[@class='clocktxt']", Array).map(function(s){return s.firstChild.nodeValue}).join(","); //var id = $X("//h3/a/@href")[0].nodeValue; //url = url + $X("//div[@class='entrytitle' or @class='entrytitle2'][.//a[@href='"+id+"']]/../preceding-sibling::div[1]", Array).map(function(s){return s.textContent.match(/\d+/)}).join(","); var before = makeElements({ nodeName: "div", className: "sidebox", childNodes: [{ nodeName: "div", className: "sidetitle", innerHTML: "Recent top entry chart" },{ nodeName: "div", className: "sidetitle", childNodes: { nodeName: "img", src: url } }] }); var after = $X("//div[@class='sidebox']", Array)[0]; after.parentNode.insertBefore(before, after); // util // var 0.01 function makeElements(obj) { if (typeof obj != "object") return document.createTextNode(obj); if (obj instanceof Array) return obj.map(makeElements); var node = document.createElement(obj.nodeName); delete obj.nodeName; if (obj.childNodes) { [].concat(makeElements(obj.childNodes)).forEach(node.appendChild, node); delete obj.childNodes; } function extend(dst, src) { for (var i in src) { if (typeof src[i] == "object" && dst[i] && typeof dst[i] == "object") extend(dst[i], src[i]); else node[i]=obj[i]; } } extend(node, obj); return node; } // by http://lowreal.net/blog/2007/11/17/1 // $X(exp); // $X(exp, context); // $X(exp, type); // $X(exp, context, type); function $X (exp, context, type /* want type */) { if (typeof context == "function") { type = context; context = null; } if (!context) context = document; var exp = (context.ownerDocument || context).createExpression(exp, function (prefix) { var o = document.createNSResolver(context).lookupNamespaceURI(prefix); if (o) return o; return (document.contentType == "application/xhtml+xml") ? "http://www.w3.org/1999/xhtml" : ""; }); switch (type) { case String: return exp.evaluate( context, XPathResult.STRING_TYPE, null ).stringValue; case Number: return exp.evaluate( context, XPathResult.NUMBER_TYPE, null ).numberValue; case Boolean: return exp.evaluate( context, XPathResult.BOOLEAN_TYPE, null ).booleanValue; case Array: var result = exp.evaluate( context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var ret = []; for (var i = 0, len = result.snapshotLength; i < len; i++) { ret.push(result.snapshotItem(i)); } return ret; case undefined: var result = exp.evaluate(context, XPathResult.ANY_TYPE, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.UNORDERED_NODE_ITERATOR_TYPE: { // not ensure the order. var ret = []; var i = null; while (i = result.iterateNext()) { ret.push(i); } return ret; } } return null; default: throw(TypeError("$X: specified type is not valid type.")); } }
SP用
javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.sp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.sp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[0]+"|"+m.music_list[i].diff[1]+"|"+m.music_list[i].diff[2]+"],"+x.level[0]+","+x.score[0]+","+t[x.flag[0]]+","+x.level[1]+","+x.score[1]+","+t[x.flag[1]]+","+x.level[2]+","+x.score[2]+","+t[x.flag[2]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();
(たぶん)DP用
javascript:(function(){var t={0:"No Play",1:"Failed",2:"Assist Clear",3:"Easy Clear",4:"Clear",5:"Hard Clear",6:"Full Combo"};var f={0:"f0",1:"f1",2:"f2",3:"f3",4:"f4",5:"f5",6:"f6"};var l={AAA:"aaa",AA:"aa",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f"};new frames[0].Ajax.Request('../data/getMusicList.do?'+frames[0].Music.tags,{method:'get',onComplete:function(r){eval("var m="+r.responseText);new frames[0].Ajax.Request('../data/getMusicData.do?'+frames[0].MusicScore.tags,{method:'get',onComplete:function(r){eval("var s="+r.responseText);var h=window.open("about:blank");var d=h.document;d.open();d.write("<title>csv</title><pre>Ver,Title,Difficulty,NRank,NScore,NClear,HRank,HScore,HClear,ARank,AScore,AClear");var r=s.rivalsscore.score.dp;for(var i=0;i<r.length;i++){d.write(","+s.rivalsscore.name.dp[i]+",N/H/A,Score(Clear),,,");}d.write("\n");for(var i in m.music_list){var x=s.myscore[m.music_list[i].mid];d.write(m.version[m.music_list[i].version].name+",\""+m.music_list[i].name+"\",["+m.music_list[i].diff[3]+"|"+m.music_list[i].diff[4]+"|"+m.music_list[i].diff[5]+"],"+x.level[3]+","+x.score[3]+","+t[x.flag[3]]+","+x.level[4]+","+x.score[4]+","+t[x.flag[4]]+","+x.level[5]+","+x.score[5]+","+t[x.flag[5]]);for(var j=0;j<r.length;j++){var z=r[j][m.music_list[i].mid];if(!z){continue;}d.write(","+z.score[0]+","+t[z.flag[0]]+","+z.score[1]+","+t[z.flag[1]]+","+z.score[2]+","+t[z.flag[2]]);}d.write("\n");}d.write("</pre>");d.close();}});}});})();
ふと思い立って昼休みに作った。経過時間別に背景色もつきます。
グループ分けとかしてるとうまく動かないかも。
// ==UserScript== // @name order_home_mymixi // @namespace http://anond.hatelabo.jp/ // @include http://mixi.jp/ // @include http://mixi.jp/home.pl // ==/UserScript== (function() { if (window != window.parent) return; var homeTds = document.evaluate('//div[@id="mymixiList"]//td', document.body, null, 7, null); for (var i = 0; i < homeTds.snapshotLength; i++) homeTds.snapshotItem(i).innerHTML = 'loading...'; GM_xmlhttpRequest({ method: 'GET', url: 'http://mixi.jp/list_friend_simple.pl', onload: function(res) { var friends = []; var bgColor = { '01': '#ffffff', '02': '#fee7c6', '03': '#ffd8a7' }; var div = document.createElement('div'); div.innerHTML = res.responseText; var tds = document.evaluate('//div[@id="friendList"]//td', div, null, 7, null); for (var i = 0; i < tds.snapshotLength; i++) { var td = tds.snapshotItem(i); var klass = td.getAttribute('class'); if (!klass || klass.search(/^iconState(01|02|03)/) == -1) continue; friends.push({ color: bgColor[RegExp.$1], anchor: td.getElementsByTagName('a')[0], name: td.getElementsByTagName('p')[0].innerHTML.replace(/^(.+)\(/, '$1 (') }); } for (var i = 0; i < homeTds.snapshotLength; i++) { var td = homeTds.snapshotItem(i); td.innerHTML = ''; td.style.background = friends[i].color; td.appendChild(friends[i].anchor); var span = document.createElement('span'); span.innerHTML = friends[i].name; td.appendChild(span); } } }); })();
http://ja.wikipedia.org/wiki/%E4%BA%BA%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99
http://en.wikipedia.org/wiki/How_to_Win_Friends_and_Influence_People
Seven Rules For Making your Home Life Happier(幸福な家庭を作る七原則)は日本語訳無し。
Remember that a person's name is to that person the sweetest and most important sound in any language.
意識不明になる前に、彼は2chに「発作で動けない。助けてくれ」と書き込んだ
事態の異常さを察知した有志が動き、男の身元の洗い出しが始まった
常にコテハンはつけていた彼だったが、過去ログを漁れど個人情報など書かれているわけも無い。
しかし、彼がコテハンを付けだす前日の書き込みに、name欄にコテハンと同じ名前のハンドルネームが記されたレスがあった
書き込み即座に半年ROMれの嵐、そんな初心者丸出しの書き込み。しかし、メール欄には彼のホットメールのアドレスが記されていた。
有志はそのアドレスをマイクロソフトに照会、ホットメールの管理者が彼のアドレスのメールボックスを調べる事に
メール内容に彼の居場所を記すものは無かったが、アドレス宛に届いているニコニコ動画、日経ビジネスオンライン、ラグナロクオンラインの各種ネットサービスの登録メール
そのユーザIDとパスワードを各社に照会するに、彼のパスワードにすべからく付けられている「1213」という数字。「nakayama」という文字列。キャラクター名の「sintarou」。
そっから先もそんな調子で個人情報を辿って彼は一命を取り留めた
しかし訴訟を起こして大勝利。
そんな話。
はてなアイデア - 長いタイトルだと途中で切れてしまうので、title要素にタイトル全文を含めて、マウスオーバーでポップアップするようにしてほしい。
を受けて、
[Patterns] Name = "[hatena bookmark] title attribute -> midashi" Active = TRUE URL = "b.hatena.ne.jp/" Limit = 1024 Match = "<a\1title=$AV(([^\"]+)\2)([^>]+)\3>[^<]++\.\.\.</a>" Replace = "<a\1\3>\2</a>"
http://anond.hatelabo.jp/20081109215457
書評がなってない、という問題のコメントがほとんどならわかるが、かなりの割合で書評の内容で元の本を想像してコメントする、という例がある。現時点でそれに該当すると思われるのを俺視点で全部あげると、
id:repon あのですね、日本人から見た「英語」だから普遍語に見えるだけで、日本語という「国語」は国家統合の鍵ですよ。英語は道具としてはこれから普及するけれど、国家統合の要は国語たる「美しい日本語」です。全然違う。
id:jujubea j「英語のできる俺大勝利!皆は俺の英語力を全肯定するこの本を読むべき」
id:shields-pikes 読まずにコメント。ブログと掲示板と漫画とアニメで、世界の全コンテンツにおける日本語の比率は20年前より増えてるんじゃないかなあと予想。あとは、現代中国語をまた漢語として日本語に引き入れようぜ!
id:sbiaco ラテン語を中南米の言葉だと思っている人がいっぱいいる国に英語を普及させるなんて夢の夢。植民地にされたら別かもしれないが
id:hobbling 今どき源氏物語を「読む」人間がいないように、漱石の三四郎だって「読む」人間がいなくなるのは当然だと思う。言葉だって文学だっていつかは死にます。ラテン語が死んだように英語だって死ぬでしょう。
id:kkobayashi バカだのアホだの言われると逆に読みたくなってくるな。/英語の必要性なんて、本読んで勉強するもんじゃないと思うけど。実際必要としてない人には不要だし、実感として伝わるわけがない
id:TiTo インテリ層は今後日本語よりも英語に重きをおくのでは?私自身の体験からしても、ある分野で日本語で十分満足のいくコンテンツがない現状に気付いた時点で英語のコンテンツにアクセスするようになりましたから。
id:noiehoie なぜこの人はいつも真面目に語ろうとすればするほど底の浅さを露呈させてしまうのだろう?そもそも19世紀以降知的世界において英語が普遍語でなかった瞬間があるのかと問いつめたい。小一時間(ry
id:JuliusCaesar アメリカが没落しても英語の優位が続くかどうか。日本国が続く限りは、日本語が亡びることはないだろう。
id:nekoluna うーん・・英語で書けるならそのほうがいいと思うけど。 マーケットが大きいので、日本語では微妙な才能でも小説家としてやっていけるよ。 暴力的かもしれないけど。
id:dekaino 古代・中世と中華帝国が東アジアの中心だった時代、日本の公文書は漢文だったが、和文の文章も当然書かれていたし和歌も詠まれていたわけで。
id:mihalita 日本語を理想化しすぎ。かなりハイブリッドな言語なので、これからも政治的に強い言語と混じりながら変化していくんですよ。「田中克彦」を読んだほうがいいと思う。
id:panna-cotta 関係しそうなのは上流層だけかな。世界共通言語を操る以前に、世界規模の競争で勝ち残れない大多数の人たちは結局母国と母国語に依存せざるを得ない。 * 2008年11月08id:Meat_eating_orchid こんなのもう50年以上前から言われてることだけど、それで「自然に英語で書」いてる人って何人いましたっけ?
id:islecape 英語が「普遍語」に。すでに学術論文なんか全部英語。人口が減っているので日本語を使う人も当然減っていく。文化的に保存されず消滅する言語がかなりあるが、日本語はデータとしては残る。それで問題あるだろうか?
id:yuki-esupure こういうの100年くらい前からいわれてるよねwww
id:ticky 英語ったって、英語を学ぶことと、英語の教養を見につけることは別。
id:nosem よくあるタイプの本の予感,そもそも普遍語たるラテン語も衰退しちゃったじゃんかよ
id:pontanta 50年前に出版されても同じことを行っていると思う。戦後のベストセラーが「日米会話手帳」ですからね。/「貯蓄から投資へ」みたいにいつになれば本格的にそういう時代になるの?という感はある
id:yamatedolphin 都会で働く人には標準語は必須だが、イナカで隔絶した暮らしをしてやってけるという人は方言で充分。それと同じで知的分野で相手にされなくてもよい人には関係ない/ コメントみると日本は「亡び」からも遅れるのかも
id:citron_908 人類2.0 タイトルと書評だけ読んで想像すると、これってなんてワンワールド化?っていう / フラット化する世界のなれの果て
id:Mihukaeru 標準語は浸透しましたが、方言は滅びましたか?(変化はしてるけど)
id:yo-net 日本語で物を考えなくなったら、日本人が終了するだけですよ。
id:georgew 英語に関しては異論ないけど、中国語の台頭というのも考えねばならんと思う。いずれにせよ日本語用済みってのは大筋そうだろう。
id:insistent シルクロードの終着点で中東から欧州から中国朝鮮から洪水のように情報が入ってくるので異文化摂取能力を限界まで高めた言語として発生した日本語。また独自の変質を遂げた日本語になるだけだと思う。
id:plummet 実感はサパーリ湧かない。|ちうか、本を紹介するだけのエントリにけっこうスターがついてるのに驚く
id:naotoj 一部の限られたエリートしか情報を残せなかった昔とは違い、今は個々人全てがデータの発信元。それが全て英語に置き換わるなどとは到底思えないのだけれど。
id:ore_de_work 滅びるんじゃなくて、それ生き物だから.....
id:kimtetsu 日本 単一の言語を民族のアイデンティティに結びつけるのは、国民国家の特徴だからそんなに歴史が古くない筈、日本語だとせいぜい150年ぐらい?
id:hummer_and_anvil 江戸時代以前は漢文が公用文の時代だったし。ヨーロッパではラテン語の時代が長く続いた。日常語と公用語が別の言語という国は現在でもたくさん存在する。これはごく普通のことじゃなかろうか。
id:ustar そもそも日本語は何千年も知識と論理を漢語に任せてたじゃないですか
id:ghostbass言葉 OK,まずは「ら抜き言葉」なる珍妙な用語を滅ぼそう。/フレーズで意味を成す用語を単語に分割して訳すバカどもを追放しよう
id:TOM2005 そのときには自動翻訳が実用的なレベルになっていて、むしろ「母国語でない英語を覚える」などというナンセンスなことは誰もしなくなったりして。
id:temtex 今まで数え切れないほど日本語の危機なんてあっただろうに。
はじめは特に本気じゃなかったんだけど、一括見積もりみたいなサイトを利用してみた。予算は10万円以下にしといた。
その結果、3つの業者から連絡が来た。そのなかに、よくweb担とかに出てくる業者があって、ほかの業者に比べて見積もりが安かったから、そこにしてみた。
んで、担当の人と30回くらいメールのやりとりをした。当初、見積もりの段階ではトップページをビッグキーワード1つで上位表示してほしいって書いておいたけど、担当の人が予算が10万円あるなら、トップページだけじゃなくサブページもSEOを施してみてはどうかと提案してくれたから、そういうことにした。
結果、トップページをビッグキーワードを含む5キーワードでSEO(このうち4キーワードは業者に考えてもらった)、サブページ4ページを複合キーワード計5つでSEOということになった。サービスの内容はページのHTMLをチェックし「ページ改善書」というのを作ってくれるというものと、外部リンクの増殖。
どのくらいで効果が出てくるのか?と聞いたところ、キーワードによって異なるけど、ほとんどの場合は11から15日で上位表示している。ビッグキーワードに関してはもう少し遅くなるかもしれないが、そうでなければこのくらいとのこと。
サービスの開始は毎月1日か15日からで、1日からはじめるのなら今すぐに発注所をFAXせよとのことで、すぐに発注書を送った。ちなみに料金は翌月末払いだった。
発注書を送ると、すぐに確認のメールが来た。また外部リンクに使うキーワードのリストもきて、わからないことがあったら気軽に質問してくださいといったことが書かれていた。
外部リンクに使うキーワードのリストを見て、さっそく疑問がわいてきた。例えばトップページはキーワード1、キーワード2、キーワード3、キーワード4、キーワード5の5キーワードで上位表示ということだったけど、設置する外部リンクに使われるテキストは「キーワード1キーワード2」というもの。(リンクに使うテキストには字数制限があるそうだ)
キーワード345はリンクに使われていないがそれでも上位表示は可能なのか。すべてのリンクを「キーワード1キーワード2」とせずに、リンクの何割かを「キーワード1キーワード2」とし、残りの何割かを「キーワード3キーワード4キーワード5」としないのはなぜか。といったことを質問した。
一週間経つけど、これについての回答はこない。回答きた。システムの問題らしい。
システムの都合上、多くのアンカーテキストを扱うことができないが、検索エンジンは関連する語句を見分ける能力があるからキーワード1キーワード2を使ってもキーワード3,4,5で上位表示を行うことができると考えている。
また、今日になって発注後はじめてのメールがきた。外部リンク設置作業1段階目が終了したとのこと。メールには「これから20から25日ほど経ったら、効果が出始めると思います」といったことが書かれていた。さて、ここでまた疑問がわいてきた。
発注前の話では15日ほどで上位表示されている場合がほとんどと言われていたが、発注後では20日ほどで効果が出始めるとなっている。となると15日の時点ではまだ効果が出始めていないということだから、15日ほどで上位表示されている場合がほとんどであるということと矛盾している。これについても質問をしたが、まだ返信はこない。回答きた。
平均して11日だが、発注されたキーワードは難易度が高いため20日ほど要すると考えている。
キーワード2,3,4,5については業者に決めてもらったのだが、業者はそのときに「ビッグキーワードは難しいが、ターゲットをしぼったこれらのキーワードなら短期間で上位表示できることが多い」と言っていた。「短期間」なのに「平均」の倍近くの期間を要するなんて、これまた腑に落ちない。
また「ページ改善書はいつ送られてくるのか」と質問したところ、「ページ改善書は今回のみ特別に無料で作成します。のちほどお送りいたします。」といった内容の返信がきた。発注前では契約内容としてページ改善書というのが入っていたが、発注後では「特別無料サービス」のような「おまけ」のような言われ方をしている。ここもどうも腑に落ちない。
ちなみに外部リンクを設置したサイトのリストももらった。外部リンクは500ページに設置したそうだが、500ページというのは5つのサイト(RSSを自動取得してページを量産するタイプのブログ、独自ドメインで構築されている)のそれぞれ100ページ(いちおうインデックスされているみたい)からということみたいだ。さっそくだがAdSense違反報告に出しといた。
web担の記事で、今回発注した業者の代表が「リンク元ページとリンク先ページとの内容が関連しているほどSEO効果が高い」「リンク元ページが多くのページからリンクされているほどSEO効果が高い」といったことを書いていた。しかしながら今回設置された外部リンクは関連性の低いページからのリンクで、また被リンク数の指標を示すGooglePRがなしか0のページからのリンクだった。言っていることとやっていることが違うが、どういうことなのか、と質問のメールを出しておいた。返信きた
発注前は良質なリンクといわれていたが、どうもこれが良質なリンクだとは考えづらい。私が知識不足なだけなのだろうか。
ちなみに料金は月額4万円ほど。契約期間は最短の6ヶ月で発注した。担当の人は韓国人と日本人のハーフみたいな名前だった。
見積もりがきた残りの2つの業者はどちらも初期費用10万の月間費用数十万で、予算10万?笑わせんなwみたいな感じの内容だった。
まぁ、1ヶ月くらいたって順位がどう変わったか等を報告するよ。
ブクマがたくさんついてたからもう少し具体的なことを補足しておく。
はじめに発注したのはYahoo!の月間検索回数20000回ほどのキーワード。担当に提案されたのはこのキーワード+1単語の複合キーワード4つで、それぞれ2000回ほど。さらにサブページ4ページに対して計5キーワード、それぞれ2000回ほど。
また発注前の時点で私のサイトはGoogleとLiveSearchで担当に提案されたキーワード+1単語の複合キーワードでは上位に表示されているが、発注したキーワードではGoogleもLiveSearchも80位ほど。Yahoo!はここ1年で100位以内に入ったことはない。セッション数はGoogle:LiveSearch:Yahoo!=90:8:2くらい。サイトの内容としてはYahoo!からのセッションのほうが成果をあげやすい。今回発注したのは上記の10キーワードでGoogle・LiveSearch・Yahoo!の3検索エンジンで目標10位以内というもの。
サイトのスペックは、GooglePR4、Yahoo!被リンク8000、Google被リンク100、Yahoo!/Googleインデックス数260、はてブ7件、Jエントリーに登録されてる。ブログをCMS代わりに使ってる個人運営のサイト。
http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440
被リンクの増殖はスパムと評価されないように、何回かにわけ、1週間単位で設置していくそうだ。開始から7日たった11/7にメールの返信がきたというのも納得できなくもないかもしれない。
http://anond.hatelabo.jp/20081108163851(抜粋)
SBMで多くのブクマを集めた方がよっぽど上位表示されるような気がする。
サイト診断をしてもらったのだが、今考えると、金返せ、と言いたくなる内容だった。
悪い事は言わんから、効果なかったらあきらめた方が良いかも。追加で金払ったりするのはやめた方が良いよ。
6ヶ月の契約で発注書を送っちゃったから、多分これから6ヶ月分は効果があろうとなかろうと料金を払わなければいけないと思う。もしかしたら「発注前後で言ってることが違うぞ!金返せ!」みたいに訴えれば払わなくて済むかもしれないのかもしれないけど、そういう面倒なのは嫌だ。
もちろん、効果がなかったら契約期間の延長をすることはない。これは担当の人にも言ってある。
実際に、担当の人とのメールのやりとりでしつこく「検索エンジンは外部サイトからのリンクを重要視している」と言われたし、「タイトルタグやメタタグにキーワードを入れることで上位表示云々」とも言われた。多分だけど、少なくともこの担当の人は回答テンプレみたいなのを打ち込んでるだけでSEOについて大した知識はないんだと思う。もしかしたら改善書というのも、このレベルのものなのかもしれない。
私のサイトはどちらかというとWEB初級者が好むような内容。だからはてブやdeliciousにはあまりブクマが付かず、Yahoo!ブクマが多い。けどYahoo!ブクマははてブと違って直リンクじゃないからたくさんブクマされてもあまり意味ないんだよね。もちろんゼロではないと思うけど。
検索エンジンの中の人が「被リンクは少なくともtitleタグより重要だ」と言っているように、やっぱりSEO業者ってのは料金が高かろうが安かろうが、外部リンクの設置がメインなんだと思う。
今は上位に表示されなければ金は取らないというところにしか頼む気にはなれないなあ。
そういうところはトラックバックスパムとか掲示板スパムをやりまくって、たまたま順位アップしたときだけ料金請求をし、順位アップしなかったら放置って感じが多いらしい。
金がたまったらSEO塾を受講してみたい。
http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440
koichi22
5キーワードくらいの順位取得ならGRC使っておけばいいんじゃないかな。
紹介ありがとうございます、さっそくインストールしました。いい感じですが、無料版だと5キーワードまでしか設定できないんですね。残念。トップページの順位チェックに使わせていただきます。現時点でのトップページの順位は
Yahoo! | LiveSearch | ||
---|---|---|---|
キーワード1 | - | - | 51 |
キーワード2 | 67 | - | 35 |
キーワード3 | - | - | 84 |
キーワード4 | - | - | - |
キーワード5 | 2 | - | 1 |
http://anond.hatelabo.jp/20081109222125
私がSEOを発注したのは企業サイトではなく、私個人が運営しているサイトだよ。確かに「もっと資金を用意してから」っていう意見はそのとおりだと思うけど、今年中にまとまった金が必要になってしまってね。個人相手だから業者も適当にあしらってる可能性もなくもないか。
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | - | LiveSearh↓49以上 |
キーワード2 | 68 | - | 36 | Google↓1・LiveSearh↓1 |
キーワード3 | - | - | 83 | LiveSearch↑1 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
※まだサブページにキーワード6,7でリンクを設置しただけのはずだから、サブページの被リンクがトップページに多少の影響を与えているかもしれないけど、恐らく自然と落ちたのだと思われる。
メール着た。
サイトを拝見したところ、非常に良く出来たつくりになっております。
ただ、少し改善した方がよいと思われる所がございました。
お世辞か?以前までは「改善書」となっていたが、今回のメールからは「改善指示書」と名称が変わったそうだ。メール中にはtitleタグ、metaタグ(keywordsとdescription)、キーワード出現率に関する説明がそれぞれ2行ずつくらい書いてあった。
それと、添付されていた改善書をこれから見てみようと思う。ちょまって、なんかこれひどい。一番最初に書いてあったのが「<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">を入れるな」。普段からXHTMLを使っているからか、全部大文字だと初心者っぽく見えるな。
メタディスクリプションタグとは、HTMLのソースコードに
<description> xxx </description>
タグとして記述されているタグことです
説明間違ってる・・。
ごめん、なんか誤読してた。titleタグとmetaタグの具体例はちゃんと書かれていた。もっとも、キーワードを繰り返しすぎでおかしな文章になっていたけど。下記ページの悪い例のほうみたいな感じ。
http://www.suzukikenichi.com/blog/write-rich-keyword-content/
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | - | - |
キーワード2 | - | - | 36 | Google↓32以上 |
キーワード3 | - | - | 88 | LiveSearch↓5 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
昨日今日と、Googleが大きくランクダウンしてる件。まぁランクダウンしてるといっても、下位から超下位でトラフィックに大した影響はないのだけども。
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | 55 | LiveSearch↑55以上 |
キーワード2 | 33 | - | 36 | Google↑67以上 |
キーワード3 | 76 | - | 91 | Google↑24以上・LiveSearch↓3 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
急降下したり、急上昇したり、もう少し穏やかにしてくれないものかね。LiveSearchなんか結構上がってるように見せかけて、11/9と比較すると実際には下がってるという。
http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20081107171440
sozesoze
紹介ありがとうございました。さっそく使ってみましたが、微妙です。
いちいちログインしなきゃいけないのが面倒なのと、登録した3サイト(というか3ページ)の順位チェックも一括ではなく、サイトごとにいちいち「診断結果レポートを見る」をクリックしなければいけないのが面倒です。(先日紹介したGRCというのは、「実行」をクリックすると登録されているページ・キーワードを一括にチェックできます)
それと、LiveSearchには対応していないみたいですね。
今、順位をチェックしてみたところ、サブページ(キーワード6,7,8,9,10)はすべて「圏外」と出てました。サブページのうち2ページに関しては、11/7の時点で外部リンクの設置がすべて完了しているとのことだったけど…
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | 53 | LiveSearch↑2 |
キーワード2 | 32 | - | 36 | Google↑1 |
キーワード3 | 17 | - | 91 | Google↑59 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | 53 | - |
キーワード2 | 80 | - | 36 | Google↓48 |
キーワード3 | 91 | - | 91 | Google↓74 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
順位変動しすぎだろ・・
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | 53 | - |
キーワード2 | 81 | - | 39 | Google↓1・LiveSearch↓3 |
キーワード3 | 89 | - | 91 | Google↑2 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
すごく悩んだのだけど、やっぱりひどすぎる気がする。担当者は話が通じなそうだから、業者のお問い合わせフォームから直接問い合わせてみた。「必ず2営業日以内にご連絡」と書かれていたから、17日までには返信がくるはず。
問い合わせた内容は担当者の説明が矛盾していること、担当者の説明が誤っていること、担当者が糞だから違う人に代わって説明してほしいということ。
11/16:担当者から返信きた。下記はそのコピペである(タイプミスは担当者のもの)
弊社のサービスのご説明に関して、行き違いがり申し訳ございませんでした。
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | 54 | LiveSearch↓1 |
キーワード2 | 34 | - | 40 | Google↑47・LiveSearch↓1 |
キーワード3 | 18 | - | 90 | Google↑71・LiveSearch↑1 |
キーワード4 | - | - | - | - |
キーワード5 | 2 | - | 1 | - |
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | - | LiveSearch↓46以上 |
キーワード2 | 28 | - | 40 | Google↑6 |
キーワード3 | 17 | - | 90 | Google↑1 |
キーワード4 | 97 | - | - | Google↑3以上 |
キーワード5 | 3 | - | 1 | Google↓1 |
キーワード5がここ1年くらい2位をキープしてたけど、3位に下がってた。ちなみに2位はついこの間まで3位だったページで、1位のサイトのサブページ。
Yahoo! | LiveSearch | 変化(↑:ランクアップ・↓:ランクダウン) | ||
---|---|---|---|---|
キーワード1 | - | - | - | - |
キーワード2 | 28 | - | 40 | - |
キーワード3 | 18 | - | 90 | Google↓1 |
キーワード4 | - | - | - | Google↓3以上 |
キーワード5 | 3 | - | 1 | - |
複数のURLを複数のキーワードで一括チェックでき、(短期間でも)ログを保
存できるツールを探しています。オンラインのものでも、ダウンロード・インストールが必要なものでもいいのでオススメがあれば教えていただけるとうれしいです。
ダウンロード | ツール名 | 説明 | その他 |
---|---|---|---|
不要 | FC2 SEO対策 - 検索エンジンランキングチェッカー | 正常に動かない | - |
不要 | RankingChecker | 全く動かない | - |
不要 | BROADENTRY RankingChecker | 動くけどログが残らない | - |
要 | Goomani | キーワード・URLに制限なし、ログを保存できるフリーソフト | 配布停止中 |
要 | GRC | キーワード5つまで一括チェック。ログを保存可のフリーソフト | b:id:koichi22さんに紹介していただきました |
要 | GRC PRO | GRCのキーワード・URL数無制限バージョン、有料ソフト | 年間9600円 |
不要 | SEOスコープ | 会員登録必要で3URL/5キーワードまで。 チェックは自動で行われる(時間不定) | b:id:sozesozeさんに紹介していただきました |
これでおしまいだよ
(require 'cl) ; for cl-seq (defvar sangels-movies-dir nil) (defvar sangels-player "c:/Program Files/GRETECH/GomPlayer/GOM.exe") (defvar sangels-sort-by 'sangels-sort-by-rate) (defvar sangels-rate-file "~/.emacs.d/.sangels/rate") (defvar sangels-buffer "*sangels*") (defvar sangels-thumbnail "00_thumbnail.jpg") (defvar sangels-m3u "00_movies.m3u") (defface sangels-name '((t (:family "fixed" :weight bold :height 3.0))) "") (defface sangels-rate '((t (:family "fixed" :weight bold :height 1.5))) "") (defvar sangels-mode-map (let ((map (make-sparse-keymap))) (define-key map "n" 'next-line) (define-key map "p" 'previous-line) (define-key map (kbd "RET") 'sangels-select) (define-key map (kbd "SPC") 'sangels-select) (define-key map "q" 'sangels-quit) (define-key map "+" 'sangels-rate-plus) (define-key map "-" 'sangels-rate-minus) map)) (defvar sangels-mode-hook nil) (defvar sangels-highlight-overlay nil) (defvar sangels-rate-alist nil) (defconst sangels-rate-max 6) (defun sangels-insert-movies () (save-excursion (let* ((inhibit-read-only t) (files (remove-if-not (lambda (x) (and (not (member (file-name-nondirectory x) '("." ".."))) (file-directory-p x) (member sangels-thumbnail (directory-files x)))) (directory-files sangels-movies-dir t))) (ids (mapcar 'file-name-nondirectory files))) (erase-buffer) (setq ids (sangels-sort-ids ids)) (dolist (id ids) (let ((file (expand-file-name id sangels-movies-dir)) (pos (point))) (insert-image-file (expand-file-name sangels-thumbnail file)) (end-of-line) (insert (propertize (format "%-15s " id) 'face 'sangels-name)) (sangels-insert-rate id) (insert "\n") (put-text-property pos (point) 'sangels-id id)))))) (defun sangels-sort-by-name (a b) (string< a b)) (defun sangels-sort-by-rate (a b) (or (> (sangels-rate a) (sangels-rate b)) (sangels-sort-by-name a b))) (defun sangels-sort-ids (ids) (sort ids (or sangels-sort-by 'sangels-sort-by-name))) (defun sangels-insert-rate (id) (let ((rate (sangels-rate id))) (insert (propertize (concat (make-string rate ?★) (make-string (- sangels-rate-max rate) ?☆)) 'sangels-rate t 'face 'sangels-rate)))) (defun sangels-current-id () (get-text-property (point) 'sangels-id)) (defun sangels-play-movie (movie) (let ((explicit-shell-file-name "cmdproxy") (shell-file-name "cmdproxy")) (apply 'call-process-shell-command "start" nil "*tmp*" nil (mapcar (lambda (x) (concat "\"" x "\"")) (list sangels-player (unix-to-dos-filename movie)))))) (defun sangels-select () (interactive) (let ((id (sangels-current-id))) (when id (sangels-play-movie (expand-file-name sangels-m3u (expand-file-name id sangels-movies-dir)))))) (defun sangels-quit () (interactive) (kill-buffer sangels-buffer)) (defun sangels-rate (id) (or (cdr (assoc id sangels-rate-alist)) (/ sangels-rate-max 2))) (defun sangels-rate-save () (interactive) (let ((dir (file-name-directory sangels-rate-file))) (unless (file-exists-p dir) (make-directory dir t))) (with-temp-file sangels-rate-file (insert (pp-to-string sangels-rate-alist)))) (defun sangels-rate-load () (interactive) (when (file-exists-p sangels-rate-file) (with-temp-buffer (insert-file-contents sangels-rate-file) (goto-char (point-min)) (setq sangels-rate-alist (read (current-buffer)))))) (defun sangels-rate-plus (&optional n) (interactive "p") (setq n (or n 1)) (let* ((id (sangels-current-id)) (cell (assoc id sangels-rate-alist))) (unless cell (setq cell (cons id (sangels-rate id))) (setq sangels-rate-alist (cons cell sangels-rate-alist))) (setcdr cell (+ (cdr cell) n)) (save-excursion (let ((inhibit-read-only t)) (beginning-of-line) (goto-char (next-single-property-change (point) 'sangels-rate)) (delete-region (point) (next-single-property-change (point) 'sangels-rate)) (sangels-insert-rate id))) (sangels-rate-save))) (defun sangels-rate-minus (&optional n) (interactive "p") (setq n (or n -1)) (sangels-rate-plus (- n))) (defun sangels-post-command-hook () (save-excursion (move-overlay sangels-highlight-overlay (progn (move-beginning-of-line 1) (point)) (progn (move-end-of-line 1) (forward-line) (point)) (current-buffer)))) (defun sangels-mode () (interactive) (kill-all-local-variables) (use-local-map sangels-mode-map) (setq sangels-highlight-overlay (make-overlay 0 0)) (overlay-put sangels-highlight-overlay 'face 'highlight) (overlay-put sangels-highlight-overlay 'evaporate t) (make-local-variable 'post-command-hook) (add-hook 'post-command-hook 'sangels-post-command-hook nil t) (setq major-mode 'sangels-mode) (setq mode-name "Sangels") (run-mode-hooks 'sangels-mode-hook) (set-buffer-modified-p nil) (setq buffer-read-only t)) (defun sangels (&optional arg) (interactive "P") (when (or arg (not sangels-movies-dir)) (setq sangels-movies-dir (read-directory-name "movies dir: "))) (sangels-rate-load) (switch-to-buffer (get-buffer-create sangels-buffer)) (sangels-insert-movies) (sangels-mode)) (provide 'sangels)
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを gem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo off setlocal set WD=%~dp0 cd /d %WD% ruby get_movies.rb ruby get_images.rb ruby create_m3u.rb
user: ユーザID password: パスワード ids_file: ids.txt done_file: ids_done.txt movies_dir: movies log4r_config: pre_config: global: INFO loggers: - name: app type: Log4r::Logger level: INFO outputters: - STDOUT - FILE outputters: - name: STDOUT type: Log4r::StdoutOutputter formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%H:%M:%S" - name: FILE type: Log4r::FileOutputter filename: "#{LOGDIR}/sangels.log" formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%Y-%m-%d %H:%M:%S"
require 'fileutils' require 'logger' require 'mechanize' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_movies") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log class IDFile def initialize(file) @file = file unless File.exist?(@file) Fileutils.touch(@file) end end def ids(contains_comment = nil) File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty? nil elsif contains_comment true else not /^\s*\#/ =~ x end } } end def add(id) ids = ids(true) unless ids.any? {|x| x == id} write(ids + [id]) end end def delete(id) ids = ids(true) if ids.any? {|x| x == id} write(ids - [id]) end end def write(ids) File.open(@file, "w") {|io| ids.each {|x| io.puts x} } end end $log.info("BEGIN #{$0} ================") exit_code = 0 begin ids_file = IDFile.new($config.ids_file) done_file = IDFile.new($config.done_file) movies_dir = $config.movies_dir wget = WGet.new sangels = SAngels.new sangels.login($config.user, $config.password) ids_file.ids.each {|id| begin movies = sangels.movies(id) rescue SAngels::Movies::InvalidMoviesError $log.warn("invalid movie id: #{id}") next end dir = File.expand_path(id, movies_dir) movies.each {|link| wget.retrieve(link.href, dir) } expected = movies.movie_links.map{|x| File.basename(x.href)} actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)} if (expected - actual).empty? done_file.add(id) ids_file.delete(id) end } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
require 'fileutils' require 'logger' require 'mechanize' require 'ostruct' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_images") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log $log.info("BEGIN #{$0} ================") exit_code = 0 begin movies_dir = $config.movies_dir sangels = SAngels.new sangels.login($config.user, $config.password) thumbnails = sangels.thumbnails Dir.glob("#{movies_dir}/*").each {|dir| next unless File.directory? dir id = File.basename(dir) url = thumbnails.url(id) unless url $log.warn("#{id} is not found") next end path = File.expand_path("00_thumbnail#{File.extname(url)}", dir) next if File.exist? path $log.info("retrieving #{url}") thumbnail = thumbnails.get_file(id) File.open(path, "wb") {|io| io.write(thumbnail)} } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
BASEDIR = File.dirname($0) require "#{BASEDIR}/util" $config = load_config(BASEDIR) movies_dir = $config.movies_dir Dir.glob("#{movies_dir}/*") {|dir| next unless File.directory? dir name = File.basename(dir) files = Dir.glob("#{dir}/*.wmv").sort File.open("#{movies_dir}/#{name}.m3u", "w") {|io| files.each {|file| io.puts "#{name}/#{File.basename(file)}" } } File.open("#{dir}/00_movies.m3u", "w") {|io| files.each {|file| io.puts "#{File.basename(file)}" } } }
require 'mechanize' require 'hpricot' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" class SAngels HOST = "real2.s-angels.com" LOGIN_URL = "http://#{HOST}/member/" INFO_URL = "http://#{HOST}/teigaku/item.php" THUMBNAILS_URL = "http://#{HOST}/teigaku/" THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/" def initialize() @agent = WWW::Mechanize.new end def login(user, password) login_form = @agent.get(LOGIN_URL).forms.find {|form| form.fields.any? {|field| field.name == "frmLoginid"} } login_form.frmLoginid = user login_form.frmPw = password @agent.submit(login_form) end def movies(id, no_validate = nil) Movies.new(@agent, id, !no_validate) end def thumbnails Thumbnails.new(@agent) end class Thumbnails def initialize(agent) @agent = agent doc = Hpricot(@agent.get_file(THUMBNAILS_URL)) elems = doc.search("div[@class=realthum]/a") @links = Hash( elems.map {|elem| href = elem["href"] id = $1 if /ID=(.+)/ =~ href url = elem.search("img")[0]["src"] [id, url] }) end def get_file(id) @agent.get_file(url(id)) end def url(id) @links[id] end def exist?(id) url(id) end end class Movies class InvalidMoviesError < StandardError end def initialize(agent, id, no_validate) @agent = agent @id = id if !no_validate && !valid? raise InvalidMoviesError end end def info_page_url "#{INFO_URL}?ID=#{@id}" end def info_page @agent.get(info_page_url) end def movies_page @agent.click(info_page.links.find {|link| /P=10/ =~ link.href}) end def movie_links movies_page.links.select {|link| /wmv$/ =~ link.href }.sort {|a, b| File.basename(a.href) <=> File.basename(b.href) } end def valid? info_page.uri.to_s == info_page_url end def each(&block) orig_links = movie_links orig_links.each {|orig_link| link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)} block.call(link) } end end end
require 'log4r' require 'log4r/yamlconfigurator' require 'singleton' require 'fileutils' require 'ostruct' def Hash(a) Hash[*a.flatten] end def load_config(basedir) OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)}) end def new_logger(name) Log4r::Logger.new("app::#{name}") end def prepare_logger(basedir, logdir = nil) logdir ||= basedir Log4r::YamlConfigurator["LOGDIR"] = logdir Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml") end class NullObject include Singleton def method_missing(message, *arg) NullObject.singleton end end class WGet class << self attr_accessor :log def initialize super @log = NullObject.singleton end end def log self.class.log end def retrieve(url, dir) FileUtils.mkdir_p(dir) file = File.expand_path(File.basename(url), dir) if File.exist?(file) log.info("already retrieved #{url}") return true end tmp = "#{file}.part" log.info("retrieving #{url}") ret = system("wget", "-c", "-O", tmp, url) if ret log.info("retrieving succeeded #{url}") File.rename(tmp, file) else if $? == 0x020000 # Ctrl-C exit($?) else log.error("retrieving failure #{url} (#{$?})") end end return ret end end
リブログです。
An axiomatic basis for computer programming
C. A. R. Hoare
Communicating Sequential Processes (CSP)
C. A. R. Hoare
Call-by-name, call-by-value, and the lambda calculus
Gordon Plotkin
Towards a theory of type structure
John C. Reynolds
Definitional interpreters for higher-order programming languages
John C. Reynolds
Philip S. Abrams
The Anatomy of a Large-Scale Hypertextual Web Search Engin
Sergey Brin and Lawrence Page
A Mathematical Theory of Communication
Claude Shannon
Communication Theory of Secrecy Systems
Claude Shannon
Bayesian Networks without Tears
Eugene Charniak
A Universal Algorithm for Sequential Data Compression
Jacob Ziv and Abraham Lempel
Let's Build a Compiler 1988-1995
Jack Crenshaw
Gauging Similarity via N-Grams: Language-Independent Sorting, Categorization, and Retrieval of Text
Marc Damashek
Richard P. Gabriel
Hints on Programming Language Design
C.A.R. Hoare
Why Functional Programming Matters
John Hughes
Kenneth E. Iverson
The next 700 programming languages
Peter J. Landin
Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) 1960
John McCarthy
Teach Yourself Programming in Ten Years 2001
Peter Norvig
Alan J. Perlis
The Complexity of Theorem Proving Procedures
Stephen A. Cook
Guy Steele and Gerald Sussman
A Method for Obtaining Digital Signatures and Public-Key Cryptosystems
R.L. Rivest, A. Shamir, and L. Adleman
http://www.zafar.se/bkz/Articles/ClassicCompScienceTexts
http://www.zafar.se/bkz/wiki/view/43bafac8c8570f4f
にあったけど、無くなっていたので
http://web.archive.org/web/20060823143349/www.zafar.se/bkz/home/classictextsincomputersc.html
から拾ってきた。
でも書いてる途中に↓を見つけてしまったのでした。
例えば「 はてなキーワードが嫌いになった理由 - 将来が不安」とか、最近、はてなキーワードがだめとか何とか、そういう話題がかまびすしかったわけですが、いやいや、今更言うのもなんですが、はてなキーワードはすごいんですよ?
キーワードページからそのキーワードを含む日記が解る。こういう機能、なかなか無いです。
でも、そのキーワードを使っているはてな以外の日記も見たい時があるかもしれません。
テクノラティなら、はてなに限らず、色々なブログサービスの、そのキーワードを含む記事を探すことができます。
でも、日記のキーワードリンクからダイレクトに飛べないと、いちいち見る気になりません。なので、そういうGreasemonkeyスクリプトを書いてみました。はてダの記事中のキーワードリンクの、リンク先をテクノラティにします。
// ==UserScript== // @name Keyword to Technorati // @namespace http://anond.hatelabo.jp/ // @include http://d.hatena.ne.jp/* // ==/UserScript== var keywords = document.getElementsByClassName("keyword"); for(var i=0; i<keywords.length; i++){ keywords.item(i).href = "http://www.technorati.jp/search/" + keywords.item(i).textContent; }
でも、これもちょっと不便です。キーワードリンクで、そのキーワードの意味を知りたい時もあるからです。
はてなキーワードの素晴らしいところは、キーワードを含む日記とキーワードの意味、どちらも一つのページで確認できる事です!まぁキーワードの説明とWikipedia、どっちか片方でも良いような気もしますがf(^ ^;)
そこで、テクノラティのキーワード検索結果ページにも、そのキーワードの意味が表示されれば便利です。
(余談ですけど、Wikipediaの記事があるなら、Wikipediaの記事だけ表示すれば十分かなぁとか思っちゃったり?概してWikipediaの記述の方が優れてるし…)
// ==UserScript== // @name Technorati with Wikipedia or ?keyword // @namespace http://anond.hatelabo.jp/ // @description Add Wikipedia in Technorati search page // @include http://www.technorati.jp/search/* // ==/UserScript== var keyword = (decodeURIComponent(document.URL).split("?")[0]+" ").slice("http://www.technorati.jp/search/".length, -1); function appendKeyword(title,body,url){ var div = document.createElement("div"); div.style.border = "inset gray thin"; div.style.padding = "5px 14px"; var h2 = document.createElement("h2"); h2.innerHTML = title.link(url); h2.style.fontSize = "2em"; div.appendChild(h2); var content = document.createElement("div"); content.innerHTML = body; div.appendChild(content); div.appendChild(document.createElement("hr")); var foot = document.createElement("div"); foot.innerHTML = "["+decodeURIComponent(url).link(url)+"]"; foot.style.textAlign = "right"; div.appendChild(foot); //document.getElementById("main").insertBefore(div, document.getElementById("main").firstChild); document.getElementById("extra").insertBefore(div, document.getElementById("extra").firstChild); } GM_xmlhttpRequest({ method: "GET", url: "http://wikipedia.simpleapi.net/api?output=json&keyword="+keyword, onload: function(response){ var wp = eval(response.responseText); if(wp){ appendKeyword(wp[0].title, wp[0].body, "http://ja.wikipedia.org/wiki/"+encodeURIComponent(wp[0].title)); }else{ GM_xmlhttpRequest({ method: "GET", url: "http://d.hatena.ne.jp/keyword?mode=rss&ie=utf8&word="+encodeURIComponent(keyword), onload: function(response){ var hk = (new DOMParser).parseFromString(response.responseText, "text/xml"); appendKeyword(keyword, hk.getElementsByTagName("description").item(1).textContent, "http://d.hatena.ne.jp/keyword/"+keyword ); } }); } } });
これで、はてダのキーワードリンクで飛んだ先に、その単語の説明とはてな以外も含めたブログ記事が表示されます。やったね\(^o^)/
追記
用語の説明は、検索結果の上に表示するより、サイドバー(広告が表示されてる)にあった方が便利かなーとか思ったので、コードをちょぴっと変更しました。既にインスコしちゃってた人、ごめんね!
ところでテクノラティ検索結果のAutopagerize、なんか1頁目ばっかり継ぎ足される気がするけど、ボクだけかな?
存在しないキーワードへのリンクに nofollow 属性を追加しました - はてなダイアリー日記
「ウィキペディア - Wikipedia」における未作成キーワード「善意の独裁者」へのリンクでrel="nofollow"はしておらず、リンク先では、
を記述している。
ちなみにgoogle:善意の独裁者
地下生活者の手遊び(tikani_nemuru_Mのダイアリー) が「にゃ」が目に付いて読みづらいので除去するUser Scriptを書いた。
前同様ブックマークレットを見たけど、Greasemonkeyのほうがいいと思ったので。
カタカナ化された語が多用されてるのも目につくのでそれも除去するようにした。
// ==UserScript== // @name No Flavour tikani_nemuru_M // @namespace http://anond.hatelabo.jp/20080918103850/gm/tikani_nemuru_M/nya // @include http://*.hatena.ne.jp/tikani_nemuru_M/* // ==/UserScript== document.body.innerHTML = document.body.innerHTML.replace(/にゃん([ねな])/g, 'なの$1') .replace(/個にゃん/g, '個人') .replace(/にゃんからね/g, 'なんだからね') .replace(/にゃ。/g, '。') .replace(/にゃー/g, 'ない') .replace(/にゃ/g, 'な');
// ==UserScript== // @name No Flavour tikani_nemuru_M // @namespace http://anond.hatelabo.jp/20080918103850/gm/tikani_nemuru_M/nya_katakana // @include http://*.hatena.ne.jp/tikani_nemuru_M/* // ==/UserScript== document.body.innerHTML = document.body.innerHTML.replace(/にゃん([ねな])/g, 'なの$1') .replace(/個にゃん/g, '個人') .replace(/にゃんからね/g, 'なんだからね') .replace(/にゃ。/g, '。') .replace(/にゃー/g, 'ない') .replace(/にゃ/g, 'な') .replace(/オモチロイ/g, '面白い') .replace(/スバラチイ/g, '素晴らしい') .replace(/ジンケン/g, '人権') .replace(/ニンゲン/g, '人間') .replace(/ニッポンジン/g, '日本人') .replace(/カガク/g, '科学') .replace(/シヤワセ/g, '幸せ') .replace(/キョウダイ/g, '兄弟') .replace(/ウサンクセエ/g, '胡散臭い') .replace(/メンドクセエ/g, '面倒臭い') .replace(/ワリイ/g, '悪い') .replace(/ソノトオリ/g, 'その通り') .replace(/ケコーン/g, '結婚') .replace(/ガクモン/g, '学問') .replace(/アッ?タリマエ/g, '当たり前') .replace(/アリガチ/g, '有りがち') .replace(/カンタン/g, '簡単') .replace(/ムツカシイ/g, '難しい') .replace(/イイカゲン/g, 'いい加減') .replace(/メリケン/g, 'アメリカ') .replace(/シャカイ/g, '社会') .replace(/キョーサン/g, '共産') .replace(/漢(オトコ)/g, '漢') .replace(/怖気(オゾケ)/g, '怖気') .replace(/ちかれた/g, '疲れた');
池田先生の「造反」でしっちゃかめっちゃかになったようなMIAU、今さらだけど、その趣旨をちょっと見てみた。ココね。
コレを見ると、MIAUがいったいぜんたい何を目指しているのかがわからなくなってくるのね。いや、ページにはいちおうソレっぽいことは書いてある。じゃあ、具体的にどういう方面に働き掛けていくのかをそろそろby nameで示さないといけないんじゃないかなあ。
寄付を集めたり、会員を募ったり、ラジバンダリという行為が必要なのはまあ理解できなくもない。そりゃこういう活動はえてしてカネの掛かるものだから。でも、カネを集められたとしてその使途をどう考えているか、そしてその中長期の計画はどうなのか、といったあたりがクリアにならないとねえ。
津田さんとか小寺さんとか、主要メンバーの子供っぽさも気になる。いや、個人的には津田さんは嫌いじゃないよ。でもね、いいかげん人を食ったみたいな振る舞いはやめようよ。実は、音楽著作権について彼が制度側と反対側の立場でそれぞれ一人二役を演じたあたりから、彼は信用ならないと思ってる。つーかソレってずいぶん前なんだけどw
それと、お墨付きが欲しかったときに池田先生しか思いつかなかったってのもなんか貧相だなあと思ってさ。これじゃ自業自得、身から出たサビと言われてもしゃあない。上武大学なんていう駅弁じゃなくそれ相応の大学のセンセなんかでも、著作権行政に積極的にコミットすることを表明してる法学者はけっこういるんだよ。ググればすぐ出てくる。
そういう人たちが「インターネット先進ユーザ」ってさ、なんか笑わせるんよ。Macをハック(笑)してるから俺って先進的じゃん、みたいな非社会性を感じる。
<meta name="Hatena::Bookmark" content="nocomment" />←できなくね
にっきの はてぶのところ を ひひょうじにするんだ
くさいもの には ふたをするんだ
みたくないもの には めをつぶるんだ
リアリティがない、修正しておいたお。
GirlFriend *honey; honey = new GirlFriend; while(me){ if (me->searchOtherGirl() > honey) { break; } if(honey->acceptRequirement(me)){ me->getMarried(honey); break; } Sleep(7*60*60); } me->save(id,name,haney); delete honey; function getMarried(wife){ if(me->acceptRequirement(wife)){ while(true){ Sleep(4*60*60); if (dead or me->money > 3000*10000) { break; } } // goto normalend; }else{ goto badend; } // goto happyend; return true; }
<kml xmlns="http://earth.google.com/kml/2.1"><Document><name>Jogging simulator</name><open>1</open><Style id="linestylered"><LineStyle><color>7f0000ff</color><width>4</width></LineStyle></Style><Placemark>
<styleUrl>#linestylered</styleUrl><LineString><extrude>1</extrude><tessellate>1</tessellate>
<dist_elev>
0,0
94,0
85,0
100,0
502,0
204,0
227,0
247,0
147,0
54,0
56,0
208,0
81,0
114,0
121,0
19,0
45,0
46,0
136,0
144,0
37,0
149,0
100,0
65,0
51,0
94,0
52,0
134,0
153,0
148,0
104,0
378,0
144,0
108,0
47,0
392,0
337,0
69,0
109,0
28,0
144,0
63,0
103,0
82,0
41,0
77,0
71,0
192,0
120,0
78,0
70,0
41,0
185,0
57,0
85,0
133,0
173,0
115,0
21,0
34,0
167,0
90,0
92,0
98,0
251,0
126,0
107,0
114,0
142,0
26,0
189,0
210,0
366,0
100,0
153,0
217,0
171,0
424,0
205,0
163,0
108,0
87,0
62,0
33,0
98,0
80,0
89,0
71,0
27,0
434,0
199,0
205,0
290,0
105,0
235,0
159,0
110,0
210,0
162,0
450,0
63,0
96,0
154,0
97,0
491,0
374,0
53,0
61,0
95,0
201,0
73,0
76,0
33,0
35,0
175,0
43,0
36,0
68,0
24,0
55,0
24,0
35,0
13,0
95,0
20,0
101,0
54,0
97,0
23,0
65,0
24,0
40,0
39,0
61,0
41,0
23,0
37,0
40,0
101,0
153,0
136,0
116,0
132,0
103,0
41,0
44,0
88,0
74,0
48,0
38,0
265,0
98,0
152,0
86,0
140,0
84,0
23,0
110,0
26,0
69,0
113,0
137,0
150,0
143,0
93,0
194,0
103,0
67,0
136,0
104,0
116,0
201,0
178,0
199,0
116,0
89,0
71,0
60,0
254,0
64,0
127,0
114,0
149,0
32,0
55,0
88,0
95,0
126,0
70,0
396,0
283,0
178,0
335,0
100,0
242,0
376,0
717,0
259,0
211,0
80,0
36,0
32,0
38,0
30,0
28,0
489,0
278,0
46,0
254,0
81,0
68,0
220,0
64,0
431,0
93,0
148,0
126,0
222,0
222,0
227,0
152,0
172,0
138,0
219,0
180,0
177,0
110,0
538,0
161,0
117,0
120,0
777,0
189,0
269,0
182,0
92,0
168,0
158,0
42,0
53,0
59,0
35,0
111,0
78,0
82,0
54,0
18,0
64,0
518,0
119,0
529,0
95,0
121,0
113,0
107,0
111,0
480,0
88,0
241,0
209,0
232,0
151,0
275,0
76,0
61,0
51,0
37,0
45,0
77,0
52,0
157,0
25,0
238,0
413,0
268,0
227,0,
63,0,
141,0,
</dist_elev>
<visited_place>
,,
,,
,,
</visited_place>
<coordinates>
139.63037252426147,35.18771434049862
139.6301257610321,35.186898880828714
139.6309196949005,35.18730222749469
139.63167071342468,35.18795985363517
139.63409543037415,35.19201071329039
139.63593006134033,35.19307161935013
139.63775396347046,35.194465681456606
139.64007139205933,35.19562299786218
139.64163780212402,35.19595440818654
139.64189529418945,35.19639277951902
139.64178800582886,35.196883752602936
139.64200258255005,35.198742409538866
139.64230298995972,35.199426244312825
139.6424102783203,35.20044321871356
139.6435260772705,35.201039370200796
139.64359045028687,35.20119717427379
139.64335441589355,35.20154784889382
139.64371919631958,35.201828387499695
139.64401960372925,35.203020665763816
139.64534997940063,35.20372199774286
139.64539289474487,35.20405512831116
139.6465301513672,35.205019445937246
139.6470022201538,35.20582595733999
139.64708805084229,35.20640453667283
139.64764595031738,35.20647466722091
139.6473240852356,35.20728116417065
139.6468734741211,35.20756168297117
139.645414352417,35.20742142369205
139.64423418045044,35.20840323355815
139.64389085769653,35.20970060695813
139.6442985534668,35.21057719887122
139.64728116989136,35.212943949762256
139.6478819847107,35.21413606482221
139.6479892730713,35.21510026272678
139.64771032333374,35.21545087730718
139.6439015865326,35.217091733388784
139.64099407196045,35.21896745775251
139.6406614780426,35.21952841362797
139.64028596878052,35.22045748826842
139.64056491851807,35.22056792472205
139.64037716388702,35.22185633906688
139.64052200317383,35.222408510381754
139.6403932571411,35.22332878755783
139.64070439338684,35.22401679748617
139.64039862155914,35.22428411187213
139.64077413082123,35.22490638129421
139.64128375053406,35.22538403557113
139.6426409482956,35.226707429981815
139.64331686496735,35.227636422435864
139.6432203054428,35.22832877781907
139.64323103427887,35.22895539816757
139.64289844036102,35.22920516856592
139.64419662952423,35.23048906391726
139.64443266391754,35.23096230349543
139.64511930942535,35.23147497658997
139.6465677022934,35.23165024869969
139.64845061302185,35.23140048582869
139.64967906475067,35.23116211492625
139.6494671702385,35.231225651354805
139.64964419603348,35.231497323798344
139.6512696146965,35.232189646234715
139.65178191661835,35.232881962762875
139.65204745531082,35.2336772431284
139.65270459651947,35.23437173778668
139.6551775932312,35.23337578241781
139.65656161308289,35.233314438527294
139.65765595436096,35.232972664573865
139.65810656547546,35.23392787534491
139.658203125,35.23519855113892
139.65833187103271,35.23540886797109
139.65907216072083,35.2369949898497
139.6603488922119,35.23857231786453
139.66199040412903,35.24157791910687
139.66269850730896,35.242261393057
139.66373920440674,35.243339167197576
139.66395378112793,35.24528438182719
139.6650266647339,35.246546117717116
139.66514468193054,35.25035749231099
139.66588497161865,35.25210102693307
139.66530561447144,35.25348531414836
139.66552019119263,35.254440283321436
139.66533780097961,35.25520775496638
139.66469943523407,35.25541363939197
139.66435611248016,35.25551439115435
139.6632832288742,35.25550124962722
139.66244101524353,35.25569837231032
139.6625965833664,35.25648685824873
139.66287553310394,35.25708697851668
139.66305255889893,35.25728409734326
139.65897023677826,35.25930344259883
139.65691030025482,35.25990792228293
139.65496838092804,35.2608365344634
139.65259194374084,35.262579843685224
139.65155124664307,35.262995954663744
139.6489655971527,35.263105457197696
139.64743673801422,35.26379750978935
139.64679837226868,35.2646384771354
139.64592933654785,35.266381704564445
139.64587569236755,35.26783494943115
139.64685201644897,35.271794230515624
139.64729189872742,35.27223219220043
139.6482789516449,35.27253000479355
139.6491265296936,35.27373000326553
139.64948058128357,35.27455334959795
139.65195894241333,35.27846850965091
139.65227007865906,35.281822959319406
139.6517014503479,35.281920174966054
139.65117037296295,35.28225736351309
139.65034425258636,35.28172749516593
139.64833796024323,35.28096552964672
139.64753329753876,35.280974287911825
139.64679300785065,35.281289584824215
139.64642822742462,35.281289584824215
139.64605808258057,35.28118886511065
139.64541971683502,35.282668994381474
139.64511394500732,35.28237559812567
139.6449476480484,35.282086579879035
139.644513130188,35.28159174321329
139.64425027370453,35.28159612231207
139.64376747608185,35.28130272216894
139.6435958147049,35.28146912835075
139.643252491951,35.28161801780251
139.64311838150024,35.281644292383234
139.64330077171326,35.28248507446485
139.6431827545166,35.28263396204861
139.64356362819672,35.28348392974092
139.6432739496231,35.2839108807827
139.64257925748825,35.28325184258908
139.64232712984085,35.28327373763183
139.6418336033821,35.283694121304364
139.64205890893936,35.28379921688149
139.64225471019745,35.28412545019985
139.64259535074234,35.28434220852351
139.6428018808365,35.284867680839
139.6426945924759,35.28522237272412
139.64259535074234,35.28541066531569
139.6425873041153,35.28574564989031
139.6428206562996,35.28604560222215
139.64264899492264,35.286938884335825
139.6430405974388,35.28827222092029
139.64410811662674,35.28913482763547
139.6445855498314,35.29010470187369
139.64542508125305,35.29107675378499
139.64553773403168,35.29199406233845
139.64569866657257,35.29233777670865
139.6456155180931,35.29272308535028
139.64639872312546,35.293193772395284
139.6465301513672,35.293845286365624
139.64622974395752,35.294195560500974
139.64582204818726,35.29424810149053
139.6429681777954,35.29374020382943
139.64189529418945,35.2938628001084
139.64028596878052,35.29423058783114
139.6393847465515,35.29447577871785
139.63788270950317,35.294178046830204
139.63728189468384,35.29360009356897
139.6370244026184,35.29360009356897
139.6359086036682,35.29398539620167
139.63569402694702,35.29382777261908
139.63526487350464,35.29331987232042
139.63402032852173,35.29340744156481
139.63268995285034,35.29398539620167
139.6315312385559,35.294948644758904
139.63088750839233,35.29612204114941
139.6307373046875,35.29694515980801
139.62977170944214,35.29850380837487
139.6297287940979,35.29943197809182
139.6290421485901,35.29965964073617
139.62880611419678,35.30086974447647
139.6297287940979,35.3014301337228
139.63011503219604,35.30241956151048
139.63161706924438,35.303750454142175
139.6329179406166,35.30494473650507
139.63504761457443,35.305380329980835
139.63613122701645,35.30592317685907
139.6368795633316,35.30643318693823
139.6370592713356,35.307057014637834
139.63687419891357,35.307574897464406
139.63496446609497,35.30923840383023
139.6350073814392,35.309816245404804
139.63571548461914,35.310796815600966
139.6355438232422,35.31181239363021
139.6360158920288,35.313090603025756
139.6363377571106,35.313213169988664
139.63650941848755,35.31368592653426
139.63706731796265,35.31433377360878
139.63760375976562,35.31506916129673
139.63820457458496,35.31608468568258
139.63822603225708,35.31671500474969
139.633891582489,35.31713521473183
139.63078022003174,35.317312052419815
139.6289563179016,35.31673426439491
139.62537288665771,35.31601640079532
139.62493300437927,35.31683931707012
139.62274432182312,35.318082430031566
139.6206521987915,35.32100104417254
139.62007820606232,35.32742617587357
139.62111622095108,35.329590384931535
139.6212449669838,35.33148319975148
139.62037861347198,35.331378166102226
139.6199843287468,35.3314175537367
139.61993604898453,35.33170420760937
139.61999773979187,35.33203900054002
139.61999505758286,35.33231252314687
139.61986631155014,35.33254446959218
139.61979389190674,35.336935134045376
139.62048053741455,35.33936821123701
139.6203088760376,35.33975329587599
139.61902141571045,35.34178371180497
139.61829721927643,35.34220204112146
139.61866199970245,35.342731513456684
139.61660206317902,35.34376419331703
139.61593687534332,35.343956725390434
139.61129128932953,35.344731224777654
139.61041688919067,35.345163540994
139.6093225479126,35.34614368252144
139.6084749698639,35.347036301065934
139.60789561271667,35.34897027407597
139.6069622039795,35.350816693787074
139.6068549156189,35.352855582153644
139.606693983078,35.35421189569119
139.6068549156189,35.35575194022067
139.60676908493042,35.356985704705835
139.60623264312744,35.358901939828456
139.6061897277832,35.36052064182823
139.60673689842224,35.362043067067724
139.60736989974976,35.362883013532
139.61206912994385,35.365822757339565
139.61312055587769,35.36698637635618
139.6134102344513,35.368009997262035
139.61307764053345,35.36904935292668
139.61015939712524,35.37561063259531
139.60919380187988,35.37711527753762
139.60623264312744,35.37704529467405
139.60445165634155,35.3762947246194
139.60386157035828,35.375621130188655
139.60379719734192,35.37411645738611
139.60410833358765,35.37271673656808
139.60407614707947,35.37234055745931
139.60367918014526,35.37199062183042
139.60302472114563,35.37200811864791
139.60278868675232,35.37226182207509
139.60188746452332,35.37158819398145
139.60111498832703,35.37127324904777
139.60028886795044,35.3709845484456
139.59980607032776,35.370704595360294
139.5996129512787,35.37065210404869
139.59943056106567,35.37120326111783
139.5940661430359,35.369628516649065
139.59286451339722,35.36919983088999
139.58793997764587,35.36666266447924
139.58701729774475,35.36625146103402
139.58571910858154,35.366015236830954
139.58447456359863,35.366050233052796
139.58334803581238,35.36633895130417
139.58226442337036,35.36680264815291
139.57830548286438,35.36965476264197
139.5775008201599,35.37009219460078
139.5751190185547,35.371054536565204
139.5730483531952,35.371885640845875
139.57077383995056,35.37283921310886
139.56947565078735,35.373687795464576
139.56740498542786,35.37548990983999
139.56669688224792,35.37513123979827
139.5662248134613,35.37473757572232
139.56590294837952,35.37436140603325
139.5657742023468,35.37404997117641
139.56576079130173,35.3736497406537
139.56597536802292,35.372978311220415
139.56588953733444,35.372516836937635
139.5649641752243,35.37132049084614
139.56483274698257,35.37112802400542
139.56393957138062,35.369119342724375
139.56031322479248,35.36687963909665
139.55790996551514,35.365479792771474
139.55679953098297,35.3636538316989
139.55610752105713,35.363592586482675
139.5546966791153,35.36306325089201
</coordinates>
<jogsiminfo>
18,139.5536881685257,35.36369407851664,1,1,0,0,1.4,0,0,0
</jogsiminfo>
</LineString></Placemark></Document></kml>