<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel rdf:about="https://let.hatelabo.jp/vzvu3k6k/rss">
    <link>https://let.hatelabo.jp/vzvu3k6k/rss</link>
    <description></description>
    <title>Bookmarklets from vzvu3k6k</title>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hJmc_7nH0sky"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hJmejd7t2pUC"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hJmd6MzekYd-"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/gYC-x-Tt9cbcYQ"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hLHVvJTr38Mi"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvLCk_Yb"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvSSi8Vx"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hLHU88C-6Ywx"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hLHX5r6B_7Aw"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hLHX6vr2uIQ_"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/vzvu3k6k/let/hLHX5ZrPpLVS"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hJmc_7nH0sky">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hJmc_7nH0sky</link>
    <dc:date>2014-11-21T16:46:15Z</dc:date>
    <description>GemのページでGitHubへのリンクをLINKSの先頭に移してラベルを付ける</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] RubyGems: Add GitHub link</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhJmc_7nH0sky.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;RubyGems: Add GitHub link&lt;/a&gt;&lt;pre&gt;/*
 * @title RubyGems: Add GitHub link
 * @description GemのページでGitHubへのリンクをLINKSの先頭に移してラベルを付ける
 * @include https://rubygems.org/gems/*
 * @include http://rubygems.org/gems/*
 * @license CC0
 */

var links = document.querySelectorAll(&amp;quot;.gem__aside a&amp;quot;);
for(var i = 0; i &amp;lt; links.length; i++){
    var link = links[i];
    if(/^(?:www\.)?github\.com$/.test(link.host)){
        link.textContent += &amp;quot;(GitHub)&amp;quot;;
        var parent = link.parentNode;
        parent.insertBefore(link, parent.firstChild);
        break;
    }
}&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hJmejd7t2pUC">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hJmejd7t2pUC</link>
    <dc:date>2014-10-09T14:42:24Z</dc:date>
    <description>http://mcg.herokuapp.com/の結果ページをajaxでリロード</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] mcg: ajax reload</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhJmejd7t2pUC.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;mcg: ajax reload&lt;/a&gt;&lt;pre&gt;/*
 * @title mcg: ajax reload
 * @description http://mcg.herokuapp.com/の結果ページをajaxでリロード
 * @include http://mcg.herokuapp.com/*
 * @license CC0
 */

// http://mcg.herokuapp.com/89d81b4ed5f81eb8aeaffcf66a6720d4/
// http://mcg.herokuapp.com/89d81b4ed5f81eb8aeaffcf66a6720d4/54ab700e1c40451f75f11644ca054aa2/
// 1つのソースによる結果ページと、2つのソースによる結果ページがある。いずれも末尾の / は必須。
if (/^\/\w+\//.test(location.pathname)){
  var target = document.querySelector('.twitter-share-button');
  target.insertAdjacentHTML('beforebegin', '&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btn btn-default btn-xs&amp;quot; id=&amp;quot;_mcg_ajaxify_reload&amp;quot;&amp;gt;リロード&amp;lt;/button&amp;gt;');

  var newTweetButton = (function(){
    var div = document.createElement('div');
    div.insertAdjacentHTML('afterbegin', '&amp;lt;a class=&amp;quot;btn btn-default btn-xs pull-right&amp;quot; id=&amp;quot;_mcg_ajaxify_tweet&amp;quot; style=&amp;quot;font-weight: bold&amp;quot;&amp;gt;Tweet&amp;lt;/a&amp;gt;');
    return div.firstChild;
  })();

  var button = document.getElementById('_mcg_ajaxify_reload');
  button.addEventListener('click', function(event){
    var textContainer = document.querySelector('h1');
    textContainer.style.opacity = 0.5;

    var xhr = new XMLHttpRequest();
    xhr.open('GET', location.pathname + '/json');
    xhr.onload = function(){
      var result = JSON.parse(xhr.responseText).result;

      textContainer.textContent = result;
      textContainer.style.opacity = 1;

      document.title = result;

      newTweetButton.href = 'https://twitter.com/intent/tweet?text=' +
        encodeURIComponent(
          result.replace(/[\u0000-\u001f]/g, '').replace(/\s+/g, ' ').trim()
        ) +
        '&amp;amp;url=' + encodeURIComponent(location.href);
      var tweetButton = document.querySelector('iframe.twitter-share-button');
      if (tweetButton) {
        tweetButton.parentNode.replaceChild(newTweetButton, tweetButton);
      }
    };
    xhr.send(null);
  });
}&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hJmd6MzekYd-">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hJmd6MzekYd-</link>
    <dc:date>2014-07-19T08:49:16Z</dc:date>
    <description>Counts :+1: etc. in issue threads</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] GitHub: How many thumbs-up?</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhJmd6MzekYd-.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;GitHub: How many thumbs-up?&lt;/a&gt;&lt;pre&gt;/*
 * @title          GitHub: How many thumbs-up?
 * @description    Counts :+1: etc. in issue threads
 * @version        1.0
 * @include        https://github.com/*
 * @license        CC0
 */

// Inspired by
// +1 badge · Issue #11 · azu/azu
// https://github.com/azu/azu/issues/11

(function(){
  if(!/^\/[^\/]+?\/[^\/]+\/(?:issues|pulls)\/\d+\/?$/.test(location.pathname))
    return;

  var thumb = false;

  var sum = Array.prototype.reduce.call(
    document.querySelectorAll('.discussion-timeline .js-comment-container:not(:first-of-type) img[alt]'),
    function(sum, node){
      var change = 0;
      switch(node.alt){
      case ':+1:':
      case ':thumbsup:':
        change = 1;
        break;
      case ':-1:':
      case ':thumbsdown:':
        change = -1;
        break;
      }

      if(change) thumb = true;
      return sum + change;
    }, 0);

  sum += Array.prototype.reduce.call(
    document.querySelectorAll('.discussion-timeline .js-comment-container:not(:first-of-type) .comment-body p'),
    function(sum, node){
      var change = 0;
      node.textContent.replace(/[+-]1/, function(str){
        thumb = true;
        change += parseInt(str);
      });
      return sum + change;
    }, 0);

  if(thumb){
    var firstComment = document.querySelector('.discussion-timeline .js-comment-container:first-of-type');
    var label = document.createElement('span');
    label.classList.add('timeline-comment-label');
    label.textContent = (sum &amp;gt;= 0 ? '+' : '') + sum;
    var header = firstComment.querySelector('.timeline-comment-header');
    header.insertBefore(label, header.querySelector('.timeline-comment-label + *'));
  }
})();
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/gYC-x-Tt9cbcYQ">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/gYC-x-Tt9cbcYQ</link>
    <dc:date>2014-05-14T11:53:06Z</dc:date>
    <description>Save your depth and restart digging</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] Tumblr dashboard bookmark</title>
    <content:encoded>&lt;a href="javascript:%28function%28%29%7Bvar%20currentPost%3DTumblr.KeyCommands.current_post%3Bvar%20now%3Dnew%20Date%2Clabel%3Dwindow.next_page.replace%28%22http%3A%2F%2Fwww.tumblr.com%22%2C%22%22%29.replace%28%2F%5C%3Fbefore%3D%5Cd%2B%24%7C%5C%2F%5Cd%2B%5C%2F%5Cd%2B%24%2F%2C%22%22%29.slice%281%29%2B%22%20-%20%22%2B%5Bnow.getFullYear%28%29%2Cnow.getMonth%28%29%2Cnow.getDate%28%29%5D.join%28%22-%22%29%3Bvar%20href%3Bif%28label.indexOf%28%22dashboard%22%29%3D%3D0%29%7Bvar%20postId%3DparseInt%28currentPost.data%28%22post-id%22%29%2C10%29%2B1%3Bhref%3Dwindow.next_page.replace%28%2F%5Cd%2B%24%2F%2CpostId%29%7Delse%7Bhref%3Dwindow.next_page%7Dvar%20insertHTML%3D%27%3Cli%20class%3D%22post_container%20_bookmark%22%3E%27%2B%27%20%20%3Cdiv%20class%3D%22post%20post_full%22%20style%3D%22padding%3A%2020px%22%3E%27%2B%27%20%20%20%20Bookmark%3A%20%3Ca%20href%3D%22%27%2Bhref%2B%27%22%3E%27%2Blabel%2B%27%3C%2Fa%3E%27%2B%27%20%20%3C%2Fdiv%3E%27%2B%27%3C%2Fli%3E%27%3BjQuery%28insertHTML%29.insertBefore%28currentPost.parent%28%29.next%28%29%29.hide%28%29.slideDown%28%29%7D%29%28%29%3B"&gt;Tumblr dashboard bookmark&lt;/a&gt;&lt;pre&gt;/*
 * @title Tumblr dashboard bookmark
 * @description Save your depth and restart digging
 * @include http://www.tumblr.com/*
 * @include https://www.tumblr.com/*
 * @javascript_url
 * @license Public Domain
 */

(function(){
  // window.next_page
  //   in dashboard page
  //     * http://www.tumblr.com/dashboard/2/12345  // initial
  //     * /dashboard/2/12345                       // after autopaging
  //   in search page
  //     * http://www.tumblr.com/tagged/bookmarklet?before=12345  // initial
  //     * /tagged/bookmarklet?before=12345                       // after autopaging
  //     `before` param is not a post id.

  var currentPost = Tumblr.KeyCommands.current_post;

  var now = new Date,
      label = window.next_page.replace(&amp;quot;http://www.tumblr.com&amp;quot;, &amp;quot;&amp;quot;)
        .replace(/\?before=\d+$|\/\d+\/\d+$/, &amp;quot;&amp;quot;).slice(1)
        + &amp;quot; - &amp;quot; + [now.getFullYear(), now.getMonth(), now.getDate()].join(&amp;quot;-&amp;quot;);

  var href;
  if(label.indexOf(&amp;quot;dashboard&amp;quot;) == 0){
    var postId = parseInt(currentPost.data(&amp;quot;post-id&amp;quot;), 10) + 1;
    href = window.next_page.replace(/\d+$/, postId);
  }else{
    href = window.next_page;
  }

  var insertHTML = 
        '&amp;lt;li class=&amp;quot;post_container _bookmark&amp;quot;&amp;gt;' +
        '  &amp;lt;div class=&amp;quot;post post_full&amp;quot; style=&amp;quot;padding: 20px&amp;quot;&amp;gt;' +
        '    Bookmark: &amp;lt;a href=&amp;quot;' + href + '&amp;quot;&amp;gt;' + label + '&amp;lt;/a&amp;gt;' +
        '  &amp;lt;/div&amp;gt;' +
        '&amp;lt;/li&amp;gt;';
  jQuery(insertHTML).insertBefore(currentPost.parent().next()).hide().slideDown();
})();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hLHVvJTr38Mi">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hLHVvJTr38Mi</link>
    <dc:date>2014-05-09T15:20:03Z</dc:date>
    <description>ダッシュボードで表示しているポストと異なるtumblelogまたは種類（text, quote, photoなど）が違うポストまでスクロールするブックマークレット</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] Tumblr: 連続ポストを読み飛ばす</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhLHVvJTr38Mi.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;Tumblr: 連続ポストを読み飛ばす&lt;/a&gt;&lt;pre&gt;/*
 * @title Tumblr: 連続ポストを読み飛ばす
 * @description ダッシュボードで表示しているポストと異なるtumblelogまたは種類（text, quote, photoなど）が違うポストまでスクロールするブックマークレット
 * @include https://www.tumblr.com/dashboard*
 * @license CC0
 */

// https://secure.assets.tumblr.com/assets/scripts/dashboard.jsの
// /*! scripts/application/keycommands.js */以下で定義されている
// Tumblr.KeyCommands.keydownのコードを参考にした。

(function(){
  this.update_post_positions();
  this.current_position = jQuery(document).scrollTop() + 7;

  var current_post;
  for (var i in this.post_positions){
    var p = this.post_positions[i];
    if(this.check_offset(p)){
      current_post = jQuery('#' + i);
      break;
    }
  }

  var skip_num = 0;
  var next_container = _.chain(current_post.closest('.post_container').nextAll('.post_container'))
        .find(function(container){
          skip_num++;
          container = jQuery(container);
          var post = container.find('.post');
          return (current_post.data('tumblelog-name') != post.data('tumblelog-name')
                  || current_post.data('type') != post.data('type'))
            &amp;amp;&amp;amp; container.is(':visible'); // ユーザースクリプトなどで隠されたポストは弾く
        }).value();

  if(next_container.length == 0){
    this.go_to_position = jQuery(document).height();
  }else{
    // ghostlistによって.post_containerの子要素が一時的に削除されている場合には
    // post_positionsに登録されていないので、スクロール位置を独自に計算する
    this.go_to_position = jQuery(next_container).offset().top;
  }
  this.animating = true;
  jQuery(&amp;quot;html,body&amp;quot;).stop().animate({
    scrollTop: this.go_to_position - this.scroll_offset
  }, this.scroll_speed * skip_num, (function(){
    this.animating = false;
  }).bind(this));
}).bind(Tumblr.KeyCommands)();
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvLCk_Yb">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvLCk_Yb</link>
    <dc:date>2014-03-10T09:09:14Z</dc:date>
    <description>IDコールのリンクをコメントへのページ内リンクに書き換える</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] HatenaBookmark: IDコール先のコメントに飛ぶ</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhJmdkvLCk_Yb.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;HatenaBookmark: IDコール先のコメントに飛ぶ&lt;/a&gt;&lt;pre&gt;/*
 * @title HatenaBookmark: IDコール先のコメントに飛ぶ
 * @description IDコールのリンクをコメントへのページ内リンクに書き換える
 * @include http://b.hatena.ne.jp/entry/*
 * @license CC0
 */

document.addEventListener('click', function(event){
    var target = event.target;
    if(target.parentNode.classList.contains('comment') &amp;amp;&amp;amp; target.getAttribute('href')[0] == '/'){
        var id = target.href.split(&amp;quot;/&amp;quot;)[3];

        // 同じブックマークコメントが「人気コメント」「新着コメント」「すべてのブックマーク」の各タブに重複して存在する可能性がある。
        // 以下では、言及されたユーザーのブックマークコメントのうちでページ上に表示されているものを選択する。
        // 「すべてのブックマーク」を開いていない場合には、言及されたユーザーのブックマークコメントが存在していても表示されていないために選択に失敗する可能性がある。
        var visibleBookmark;
        var bookmarks = document.querySelectorAll(&amp;quot;#bookmark-user-&amp;quot; + id);
        for(var j = 0; j &amp;lt; bookmarks.length; j++){
            if(bookmarks[j].getBoundingClientRect().height){
                visibleBookmark = bookmarks[j];
                break;
            }
        }
        var tmpId = Math.random();
        var originalId = visibleBookmark.getAttribute(&amp;quot;id&amp;quot;);
        visibleBookmark.setAttribute(&amp;quot;id&amp;quot;, tmpId);
        location.href = &amp;quot;#&amp;quot; + tmpId;
        visibleBookmark.setAttribute(&amp;quot;id&amp;quot;, originalId);
        event.preventDefault();
    }
});&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvSSi8Vx">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hJmdkvSSi8Vx</link>
    <dc:date>2014-03-06T11:58:26Z</dc:date>
    <description>各ブックマークのtimestampをブックマークのパーマリンクにする</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] HatenaBookmark: timestamp -&gt; permalink</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhJmdkvSSi8Vx.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;HatenaBookmark: timestamp -&amp;gt; permalink&lt;/a&gt;&lt;pre&gt;/*
 * @title HatenaBookmark: timestamp -&amp;gt; permalink
 * @description 各ブックマークのtimestampをブックマークのパーマリンクにする
 * @include http://b.hatena.ne.jp/entry/*
 * @license CC0
 */

// See also: &amp;quot;はてブエントリーページのコメントパーマリンク&amp;quot; - Userscripts.org
// https://userscripts.org/scripts/show/157164

var style = document.createElement(&amp;quot;style&amp;quot;);
style.textContent = &amp;quot;.bookmark-list .timestamp {text-decoration: none;}&amp;quot;;
document.head.appendChild(style);

Array.prototype.forEach.call(document.querySelectorAll('.bookmark-list [id^=&amp;quot;bookmark-user-&amp;quot;]'), function(bookmark){
    var oldTimestamp = bookmark.querySelector(&amp;quot;.timestamp&amp;quot;);
    var newTimestamp = document.createElement(&amp;quot;a&amp;quot;);
    newTimestamp.setAttribute(&amp;quot;class&amp;quot;, &amp;quot;timestamp&amp;quot;);
    newTimestamp.href = bookmark.querySelector(&amp;quot;.username&amp;quot;).href;
    newTimestamp.textContent = oldTimestamp.textContent;

    oldTimestamp.parentNode.replaceChild(newTimestamp, oldTimestamp);
});&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hLHU88C-6Ywx">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hLHU88C-6Ywx</link>
    <dc:date>2014-01-16T17:29:47Z</dc:date>
    <description>Use on https://github.com/{your_name}, then click days in your contribution calendar.</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] GitHub: Rewrite History</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhLHU88C-6Ywx.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;GitHub: Rewrite History&lt;/a&gt;&lt;pre&gt;/*
 * @title GitHub: Rewrite History
 * @description Use on https://github.com/{your_name}, then click days in your contribution calendar.
 * @include https://github.com/*
 * @license CC0
 * @inspired_by http://tricknotes.hateblo.jp/entry/2014/01/15/105741
 */

var $cal = $(&amp;quot;#contributions-calendar&amp;quot;);
var palette = $cal.find(&amp;quot;.legend li&amp;quot;).map(function(){return this.style.backgroundColor});
var brush = palette[palette.length - 1];

/* Suppress default behaviors */
d3.selectAll(&amp;quot;rect.day&amp;quot;).on(&amp;quot;mouseover&amp;quot;, null).on(&amp;quot;click&amp;quot;, null);

$cal.on(&amp;quot;click&amp;quot;, &amp;quot;.legend li&amp;quot;, function setBrush(){
    $(this).fadeOut(100).fadeIn(100);
    brush = this.style.backgroundColor;
});

$cal.find(&amp;quot;g&amp;quot;).on(&amp;quot;click mouseover&amp;quot;, &amp;quot;.day&amp;quot;, function paint(event){
    var hand;
    if(event.type == &amp;quot;mouseover&amp;quot; &amp;amp;&amp;amp; event.which == 0) return;
    if(event.ctrlKey)
        hand = palette[0];
    else if(event.shiftKey)
        hand = palette[2];
    else if(event.altKey)
        hand = palette[4];
    else
        hand = brush;
    $(this).attr(&amp;quot;style&amp;quot;, &amp;quot;fill: &amp;quot; + hand);
});

$cal.find(&amp;quot;.day&amp;quot;).each(function(){$(this).attr(&amp;quot;style&amp;quot;, &amp;quot;fill: #eee;&amp;quot;)});
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hLHX5r6B_7Aw">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hLHX5r6B_7Aw</link>
    <dc:date>2013-10-04T13:44:11Z</dc:date>
    <description>はてブのコメントを(スターの数, 投稿日時)でソートする。</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] Hatena Bookmark: Sort comments</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhLHX5r6B_7Aw.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;Hatena Bookmark: Sort comments&lt;/a&gt;&lt;pre&gt;/*
 * @title Hatena Bookmark: Sort comments
 * @description はてブのコメントを(スターの数, 投稿日時)でソートする。
 * @include http://b.hatena.ne.jp/entry/*
 * @license Public Domain
 */

(function(){
    var currentList = Array.prototype.slice.call(document.querySelectorAll(&amp;quot;.bookmark-list&amp;quot;)).filter(function(l){
        return l.parentNode.style.display != &amp;quot;none&amp;quot;;
    })[0];

    var bookmarks = Array.prototype.slice.call(currentList.parentNode.querySelectorAll(&amp;quot;[id^=bookmark-user-]&amp;quot;));
    var sorted = bookmarks.sort(function(a, b){
        function extract(bookmark){
            var starCount;
            var starInnerCount = bookmark.querySelector(&amp;quot;.hatena-star-star-container .hatena-star-inner-count&amp;quot;);
            if(starInnerCount)
                starCount = parseInt(starInnerCount.textContent, 10);
            else
                starCount = bookmark.querySelectorAll(&amp;quot;.hatena-star-star&amp;quot;).length;
            return [starCount, bookmark.querySelector(&amp;quot;.timestamp&amp;quot;).textContent];
        }

        a = extract(a);
        b = extract(b);
        if(a[0] &amp;gt; b[0]) return 1;
        if(a[0] &amp;lt; b[0]) return -1;
        if(a[1] &amp;gt; b[1]) return 1;
        if(a[1] &amp;lt; b[1]) return -1;
        return 0;
    }).reverse();

    sorted.forEach(function(bm){
        currentList.appendChild(bm);
    });
})();
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hLHX6vr2uIQ_">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hLHX6vr2uIQ_</link>
    <dc:date>2013-06-18T14:53:38Z</dc:date>
    <description>元ページの文章を引用してるだけっぽいブックマークコメントに"yamabiko"というクラスを追加</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] Hatena Bookmark: Mark Quote Only Comments</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhLHX6vr2uIQ_.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;Hatena Bookmark: Mark Quote Only Comments&lt;/a&gt;&lt;pre&gt;/*
 * @title Hatena Bookmark: Mark Quote Only Comments
 * @description 元ページの文章を引用してるだけっぽいブックマークコメントに&amp;quot;yamabiko&amp;quot;というクラスを追加
 * @include http://b.hatena.ne.jp/entry/*
 * @license public domain
 */

(function(){
    var bookmarks = Array.prototype.slice.call(document.querySelectorAll(&amp;quot;[id^=bookmark-user-]:not(.nocomment)&amp;quot;));
    for(var i = 0; i &amp;lt; bookmarks.length; i++){
        var comment = bookmarks[i].querySelector(&amp;quot;.comment&amp;quot;).textContent,
            replaced = comment.replace(/&amp;quot;.+&amp;quot;/g, &amp;quot;&amp;quot;).replace(/「.+」/g, &amp;quot;&amp;quot;).replace(/[|\/,\s]/g, &amp;quot;&amp;quot;);
        if(replaced.length == 0){
            bookmarks[i].classList.add(&amp;quot;yamabiko&amp;quot;);
        }
    }
})();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/vzvu3k6k/let/hLHX5ZrPpLVS">
    <link>https://let.hatelabo.jp/vzvu3k6k/let/hLHX5ZrPpLVS</link>
    <dc:date>2013-06-09T16:08:58Z</dc:date>
    <description>Autopagerizeで挿入されたページを最後のもの以外全部消す</description>
    <dc:creator>vzvu3k6k</dc:creator>
    <title>[Let] Autopagerize: Delete old pages</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fvzvu3k6k%2Flet%2FhLHX5ZrPpLVS.bookmarklet.js%20%28arg%29%22.replace%28%2F%28%5CS%2B%29%5Cs%2B%28%5CS%2A%29%2F%2Cfunction%28s%2Curl%2Carg%29%7Bs%3Ddocument.createElement%28%22script%22%29%3Bs.charset%3D%22utf-8%22%3Bs.src%3Durl%2B%22%3Fs%3D%22%2BencodeURIComponent%28arg%29%3Bdocument.body.appendChild%28s%29%7D%29%3Bvoid%280%29%3B"&gt;Autopagerize: Delete old pages&lt;/a&gt;&lt;pre&gt;/*
 * @title Autopagerize: Delete old pages
 * @description Autopagerizeで挿入されたページを最後のもの以外全部消す
 * @license Public Domain
 */

var seps  = document.querySelectorAll(&amp;quot;.autopagerize_page_separator&amp;quot;),
    end   = seps[seps.length-1],
    start = end.parentNode.firstElementChild,
    range = document.createRange();
range.setStart(start, 0);
range.setEnd(end, 0);
range.deleteContents();&lt;/pre&gt;</content:encoded>
  </item>
</rdf:RDF>
