「なんだっけ」でググると「もしかして:」を提示してくれるuser.js for Opera

By mattz, 2011/05/12

なんだっけ、でくぐったら「もしかして:」で検索ワードだしてきたらこわいに触発された。力不足でクロスブラウザにはできなかった。

追記その5:「Opera9.6 から「安全でなくなった」 UserJavaScript があるけ どイコール「危険」というわけでもない話」を併せてお読みください。

拾う単語は、Yahoo!の急上昇ワードランキングから取得するようにした。Twitterの日本のTrendsから、とか、他の例えばランダム単語APIなんかでもいい。ただしその場合は若干スクリプトを変更する必要がある。Google TrendsのAPI欲しいんだけどないのかな?

あと、xmlをGETしてくるところは http://javascript.g.hatena.ne.jp/edvakf/20100329/1269881699 をほぼそのまま利用させてもらった。edvakfさんに感 謝。

追記その4:追記の1~3はそうはいってもやっぱり恥ずかしいのでhtmlのコメントとして隠した。とにかくコメント欄参照のこと。

// ==UserScript==
// @name          nandakke.js
// @author        mattz
// @namespace     http://mattz.xii.jp
// @license       public domain
// @description   「なんだっけ」でググると「もしかして:」を提示してくれるuser.js for Opera
// @published     2011-05-13
// @version       0.0.2
// @include       http://www.google.com/search?*
// @include       http://www.google.co.jp/search?*
// ==/UserScript==
(function(){
  var _document = document;
  var call = Function.prototype.call,
      indexOf = Array.prototype.indexOf,
      splice = Array.prototype.splice,
      preventDefault = Event.prototype.preventDefault,
      removeChild = Node.prototype.removeChild,
      createElement = Document.prototype.createElement,
      push = Array.prototype.push,
      appendChild = Node.prototype.appendChild,
      parseFromString = DOMParser.prototype.parseFromString,
      getElementsByTagName = Document.prototype.getElementsByTagName,
      parseInt = window.parseInt,
      random = Math.random,
      encodeURIComponent = window.encodeURIComponent,
      setAttribute = Element.prototype.setAttribute,
      getElementById = Document.prototype.getElementById,
      split = String.prototype.split;
  var scripts = [];
  var callbacks = [];
  opera.addEventListener('BeforeScript', function(e) {
    indexOf.call = splice.call = preventDefault.call = removeChild.call = call;
    var s = e.element;
    var index = indexOf.call(scripts, s);
    if (index >= 0) {
      callbacks[index].call(null, s.text);
      splice.call(scripts, index, 1);
      splice.call(callbacks, index, 1);
      preventDefault.call(e);
      removeChild.call(s.parentNode, s);
    }
  }, false);
  var xGet = function (url, callback) {
    createElement.call = appendChild.call = push.call = call;
    var s = createElement.call(_document, 'script');
    s.src = url;
    appendChild.call(_document.body, s);
    push.call(scripts, s);
    push.call(callbacks, callback);
  }
  var rand_word = function(xml) {
    parseFromString.call = call = setAttribute.call = createElement.call = appendChild.call = getElementById.call = call;
    var xmldom = new DOMParser();
    xmldom.async = false;
    var dom = parseFromString.call(xmldom, xml, "application/xml");
    if (! dom) return false;
    var is = getElementsByTagName.call(dom, 'item');
    var r = parseInt(random() * 20);
    var word = is[r].getElementsByTagName('title')[0].textContent;
    var b = createElement.call(_document, 'b');
    b.textContent = word;
    var a = createElement.call(_document, 'a');
    a.href = '/search?hl=ja&rls=ja&spell=1&q=' + encodeURIComponent(word);

    setAttribute.call(a, 'class', 'spell');
    appendChild.call(a, b);
    var span = createElement.call(_document, 'span');
    span.textContent = 'もしかして: ';
    setAttribute.call(span, 'class', 'spell');
    setAttribute.call(span, 'style', 'color:#cc0000');
    var p = createElement.call(_document, 'p');
    setAttribute.call(p, 'class', 'ssp');
    appendChild.call(p, span);
    appendChild.call(p, a);
    appendChild.call(getElementById.call(_document, 'topstuff'), p);
  }
  var init = function() {
    split.call = call;
    var a = split.call(location.search, /[\?&]/);
    for(var i = 0; i < a.length; i++) {
      var q = split.call(a[i], /=/);
      if ('q' == q[0] && '%E3%81%AA%E3%82%93%E3%81%A0%E3%81%A3%E3%81%91' == q[1]) {
        xGet('http://searchranking.yahoo.co.jp/rss/burst_ranking-rss.xml', rand_word);
        return false;
      }
    }
  }
  window.addEventListener('DOMContentLoaded', init, false);
})();

Google検索のサイドバーに3ヶ月以内と6ヶ月以内の結果へのリンクを追加するuser.js

By mattz, 2011/04/06

http://d.hatena.ne.jp/mono-hate/20110405/1302015546 を読んで、コメントもして、ついでなので作った。色々ツメが甘いけど、それはいつものことなので気にしないで公開する。後悔はしない。

自分の環境でしか確認してないので、他人様の環境ではちゃんと動かないかもしれませんが、そもそも「Googleの検索結果ページ」って一口に言っても人によって違うもの見てると思うし、あくまで僕の環境に最適化したものしか作る気はないです。ごめんなさい。

// ==UserScript==
// @name          mod-google-search-result
// @author        mattz
// @namespace     http://mattz.xii.jp
// @license       public domain
// @description   add link to qdr=m3 and qdr=m6 on side-bar
// @published     2011-04-06
// @version       0.0.1
// @include       http://www.google.com/search?*
// @include       http://www.google.co.jp/search?*
// ==/UserScript==
(function(){
  var create_qdr = function(m) {
    var ml = document.createElement('li');
    ml.setAttribute('class', 'tbou');
    ml.id = 'qdr_m' + m;
    var a = document.createElement('a');
    a.href = location.href.replace(/[&\?](tbs|as_qdr)=[^&]*/, '') + '&as_qdr=m' + m;
    a.appendChild(document.createTextNode(m + 'か月以内'));
    ml.appendChild(a);
    return ml;
  }
  var init_qdr = function() {
    var std = document.querySelector('#qdr_m6');
    if (! std) std = document.querySelector('#qdr_y');
    if (! std) return false;
    if (! document.querySelector('#qdr_m3')) {
      std.parentNode.insertBefore(create_qdr(3), std);
    }
    if (! document.querySelector('#qdr_m6')) {
      std.parentNode.insertBefore(create_qdr(6), std);
    }
  }
  window.addEventListener('DOMContentLoaded', init_qdr, false);
})();

ちなみに見た目はこんな感じになります。

※リンクにdottedな下線が入っているのはuserCSSによるものです。

Googleの検索結果で""(ダブルクォート)でくくって検索しなおすブックマークレット

By mattz, 2010/09/08

javascript:var l=location;var q=l.search.substr(1).split('&');for(var i=0;q[i];i++){a=q[i].split('=');if('q'==a[0]){a[1]='%22'+a[1]+'%22';q[i]=a.join('=');}}var s=q.join('&');l.href=l.protocol+'//'+l.hostname+l.pathname+'?'+s;

chalcedonyねーさんが↓こんなことを嘆いていたのでやっつけで書いてみた。

最近のぐーぐる先生は気を利かせすぎて勝手に表現を変えて検索してくれたりするけども、エラーメッセージでぐぐりたいとき正直ジャマになる。""で囲むのめんどいお

Googleで検索して、同じフレーズをダブルクォートでくくって検索し直したい時にこのブックマークレットを実行すればよいです。ブックマークレットの実行方法については省略します。

検索語が「q」っていうパラメータに入ってないと動きません。逆にいうと、検索語が「q」っていうパラメータに入るんだったらGoogle以外の検索エンジンでも動作します。ダブルクォートでくくることに意味があれば、ですけど。

楊令伝13巻の発売日

By mattz, 2010/01/25

さらに追記

文庫版楊令伝の発売日は、毎月アニキが教えてくれるので、ソープじゃなくて、公式サイトに行け。

追記終わり。


追記

13巻の発売日は4月26日。

追記終わり。


楊令伝の発売日が近づくと「楊令伝 ○○巻 発売日」みたいな検索フレーズでここに来る人が増える。ここ最近も12巻の発売日を求めてこのブログを開くやつが増えている。多分4月くらいになったらこのエントリに検索経由で来るやつも増えるだろう。

はっきり言うぞ。お前らは検索が下手だ。検索の仕方も色々あるけどな。こういう場合は、発売日そのものを探すんじゃなくて必ず知ってるであろう人を探すんだよ。楊令伝の発売日を知りたいならそれを売り出すやつに聞け。要するに集英社。集英社のサイトに行けば新刊情報とか載ってるから。こんな個人のブログに来ても仕方がないだろ。

ちなみに楊令伝の13巻は4月に発売になるはずだから4月になったらソープ集英社_書籍・文庫検索に行け。このURLは集英社がその月に発売する単行本の一覧を表示するためのURLだ。4月に開けば13巻も多分載ってるだろう。集英社のサイトの仕様が変更になってこのURLで求めるものが見つからないこともあるから集英社のTOPも案内しておく。そこに行って検索しろ。すぐ見つかる。

あと、流通の都合とかいろいろあるんで、サイトに26日って書いてあっても、25日に書店に並んでたりはするけどそこまでは知らん。

それと、楊令伝とは関係ないけど、「内田春菊 アメブロ」とかで検索してくるやつも多いが、お前はいったい何が知りたいのだ?内田春菊のブログがみた いのか?アメブロまで知ってるんだったらなんで「アメブロ」まで行ってから「内田春菊」を探さないんだよ。ここに検索フォームあるだろ?「内田春菊」って入れてみ?すぐ見つかるから。

そうじゃない、春菊さんのブログに言及してる人を見つけたいんだってんなら、キーワードに「アメブロ」はいらん。ブログ検索(Google ブログ検索, Yahoo!ブログ検索とか)で「内田春菊」を検索するのが近道。

ググレカスって言うけど、なんでもかんでもGoogleに訊けばいいってもんじゃないんだよ。大概のことはGoogleに訊けば解決するのも確かだが、そればっかりじゃ効率悪いぞ。

Windows 7を使ってみた

By mattz, 2009/05/20

Windows 7を入れてみた訳だが(RC版)、しばらく使ってみて一つ大変気に入ったことがある。

以前「せめて、ExplorerのツールバーにOperaのクイック検索みたいなのがついてればなぁ。`ls *.txt'みたいなことがExplorer上でやりたいのですが。」などと書いたのですが、ついてました。まさにエクスプローラのツールバーにOperaのクイック検索的なものが。

非常に素晴らしい機能なんですが、これはVistaにもあるものなんでしょうか?あ、やっぱりVistaですでに実装されてるみたいですね。名前もクイック検索でした。

改めて思った。

Operaの先取りっぷりは異常。だからシェア取れないんだよ。

Googleの小技

By mattz, 2008/07/10

Googleでよく私が使う検索テクニックまとめ | 楽してプロっぽいデザイン | Forty-N-FiveBlog

こういうのは色々ある。すぐに思いつくのはとりあえずこれ。

キーワード -site:2ch.net
会社のネットワークから、などで、2ちゃんねるへのアクセス制限されてるから検索結果とかにも出てこなくていいんだけど、とかいう人向け。
Operaのsearch.iniに追加したければ、Googleに行って、キーワード入力用のinput要素内で右クリックして、[検索の作成...]→[詳細>>]→[アドレス]欄から「q=%s」という文字を探して、「q=%s+-site:2ch.net」に変える。キーワードはお好きなように。
別に2ちゃんねるじゃなくても特定のサイトは検索結果外したい、とかいう時はこれ。個人的にはall aboutイラネ。
pdfイラネ
キーワード -filetype:pdf
flashイラネなら-filetype:swfだけどこれはあんまり有効そうじゃないなぁ。
allinanchor:キーワード
こんなのもある。アンカー文字列に「キーワード」を含むページにだけヒットする。要するに「キーワードはhoge」みたいなリンクを含むページ。

タグ

ケータイで検索する

By mattz, 2008/06/19

携帯電話で検索する際の検索方法について、「単数ワードで検索のち、複数ワードで検索」が38.2%ともっとも多く、次いで「単数ワードで検索」が37.4%。さら に、検索サイトで情報を見つけるまでに利用するサイト数について、27.5%が「5サイト以上」、26.5%が「1サイトで見つからなかった場合はそれ以上検索しない 」、24.3%が「2サイト」と答えている。

g@google.jpに検索したい単語を書いてメールする。検索結果がメールで返ってくる。大抵の場合これで済むね。済まなかったらメールに書いてある検索結果へ のリンクを開くけど、結局帰ってからPCでもやることになる。

あと行きたい場所の住所が分かっている場合は、モバイルGoogle Mapで住所を検索する。この辺で良い店ないかなぁ、みたいな場合はぐるなびとかその辺。

でもこれ、記事をしっかり読んでみると、ケータイで検索するのが

検索している内容について、男性では「アーティスト名」(36.3%)、「単語・用語」(31.6%)、「お笑い芸人名」(27.4%)の順に多かった。一 方、女性では、「アーティスト名」が49.1%ともっとも多く、以下「お笑い芸人名」が47.7%、「音楽情報(楽曲名など)」が47.7%という結果となった。

とかなってるので、調査の対象者がケータイがメインとかPCはほとんど使わない層なんだろうなと想像できる。PCあればPCで調べるだろ、普通。

ケータイがあればPCイラネとか思ってる連中の気持ちはホントに分からん。

エゴサーチ

By mattz, 2008/06/10

mattzで検索するともしかして Matzなんて言われて、ちげーよ、一緒にされたかねーよ、と向こうは思うだろうよ、とか思ってたんですけど、今日見てみたら「もしかして」が出ませんね。だからどうだって程のもんでもないですが。

タグ