<?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/ohac/rss">
    <link>https://let.hatelabo.jp/ohac/rss</link>
    <description></description>
    <title>Bookmarklets from ohac</title>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/hJmfkvq_gLMS"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/gYC-xOuagcHoEw"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/gYC-y7zc_evJEw"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/gYC-x7Sy77zJGQ"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/gYC-x7SyhOTkFg"/>
        <rdf:li rdf:resource="https://let.hatelabo.jp/ohac/let/gYC-y7SxrqjdZQ"/>
      </rdf:Seq>
    </items>
  </channel>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/hJmfkvq_gLMS">
    <link>https://let.hatelabo.jp/ohac/let/hJmfkvq_gLMS</link>
    <dc:date>2017-06-11T14:56:57Z</dc:date>
    <description></description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] TipmonaTipBookmarklet.js</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FhJmfkvq_gLMS.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;TipmonaTipBookmarklet.js&lt;/a&gt;&lt;pre&gt;/*
 * @title TipmonaTipBookmarklet.js
 *
 * When you see
 *    https://twitter.com/EXAMPLEUSER/...
 * Then you jump to
 *    https://twitter.com/intent/tweet?text=@tipmona%20tip%20@EXAMPLEUSER%201%20Mona%20を贈ります。
 *
 * Written by Hiroshi Yuki.
 * Licensed under CC0.
 * https://creativecommons.org/publicdomain/zero/1.0/
 *
 */

function start() {
  if (location.href.match(/https:\/\/twitter\.com\/([^\/]+)/)) {
    var username = RegExp.$1;
    location = 'https://twitter.com/intent/tweet?text=@tipmona%20tip%20@' + username + '%201%20Mona%20を贈ります。';
  } else {
    alert(&amp;quot;Username is not found.&amp;quot;);
  }
}
start();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/gYC-xOuagcHoEw">
    <link>https://let.hatelabo.jp/ohac/let/gYC-xOuagcHoEw</link>
    <dc:date>2011-10-31T10:57:10Z</dc:date>
    <description>click it later</description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] clickitl8er</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FgYC-xOuagcHoEw.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;clickitl8er&lt;/a&gt;&lt;pre&gt;/*
 * @title clickitl8er
 * @description click it later
 * @include http://*
 * @license MIT License
 * @require jQuery
 */
(function(){

$('a').click(function(){
  var href = $(this).attr('href');
  setTimeout(function(){
    location.href = href;
  }, (5 * 60 + 30) * 1000);
  return false;
});

})();&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/gYC-y7zc_evJEw">
    <link>https://let.hatelabo.jp/ohac/let/gYC-y7zc_evJEw</link>
    <dc:date>2011-02-02T10:39:39Z</dc:date>
    <description>http://wedata.net/databases/jspass/items を使い、パスワードをalertで表示。</description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] showpass</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FgYC-y7zc_evJEw.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;showpass&lt;/a&gt;&lt;pre&gt;/*
 * @title showpass
 * @description http://wedata.net/databases/jspass/items を使い、パスワードをalertで表示。
 * @include http://*
 * @license MIT License
 * @require jquery
 */
var wedata = 'http://wedata.net/databases/jspass/items.json?callback=?';
$.getJSON(wedata, function(items) {
  $.each(items, function() {
    var pattern = new RegExp(this.data.url);
    if (pattern.test(location.href)) {
      alert('match ' + this.name +
          ', username = ' + $(this.data.username).val() +
          ', password = ' + $(this.data.password).val());
    }
  });
});&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/gYC-x7Sy77zJGQ">
    <link>https://let.hatelabo.jp/ohac/let/gYC-x7Sy77zJGQ</link>
    <dc:date>2011-01-30T05:32:15Z</dc:date>
    <description>アドレス、ユーザ名、SALT、マスターパスワードでパスワードを生成する。</description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] jspass</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FgYC-x7Sy77zJGQ.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;jspass&lt;/a&gt;&lt;pre&gt;/*
 * @title jspass
 * @description アドレス、ユーザ名、SALT、マスターパスワードでパスワードを生成する。
 * @include http://*
 * @license MIT License
 * @require http://tociyuki.flop.jp/archive/base64.js
 * @require http://pajhome.org.uk/crypt/md5/2.2/md5-min.js
 * @require jQuery
 */

function hexstr2bin(str) {
  var binstr = '';
  for (var i = 0; i &amp;lt; str.length; i += 2) {
    var i8 = parseInt('0x' + str.substr(i, 2));
    binstr += String.fromCharCode(i8);
  }
  return binstr;
}


var nm = 'jp_hatelabo_let_ohac_jspass_';
var id = {
  'panel': nm + 'panel',
  'url': nm + 'url',
  'user': nm + 'user',
  'salt': nm + 'salt',
  'master': nm + 'master',
  'strlen': nm + 'strlen',
  'times': nm + 'times'
};

var userele = $('#username,#username_or_email,#userid,input[name=&amp;quot;server_id&amp;quot;],input[name$=&amp;quot;ccount&amp;quot;],input[name=&amp;quot;userid&amp;quot;],,input[name$=&amp;quot;username&amp;quot;]');
var passele = $('#password,input[name$=&amp;quot;assword&amp;quot;],input[name=&amp;quot;secretkey&amp;quot;],input[type=&amp;quot;password&amp;quot;]');

var url = localStorage.getItem(id['url']);
if (!url) {
  url = location.href;
  var pos = url.indexOf('/',9) + 1;
  url = url.substr(0, pos);
}

var user = localStorage.getItem(id['user']) || userele.val();
var salt = localStorage.getItem(id['salt']) || '';
var strlen = localStorage.getItem(id['strlen']) || 12;
var times = localStorage.getItem(id['times']) || 0;
strlen = parseInt(strlen);
times = parseInt(times);

$('body').prepend(
 $('&amp;lt;div id=' + id['panel'] + ' style=&amp;quot;margin:5px;padding:5px;position:absolute;widh:50%;border:1px solid gray;z-index:99999;background-color:white;&amp;quot;&amp;gt;').css('top', $(window).scrollTop()
 ).append(
  $('&amp;lt;a&amp;gt;').attr({href: 'http://let.hatelabo.jp/ohac/let/gYC-x7Sy77zJGQ'}).text('http://let.hatelabo.jp/ohac/let/gYC-x7Sy77zJGQ')
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;input&amp;gt;').attr({id: id['url'], 'value': url, 'title': 'Address', 'size': 76})
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;input&amp;gt;').attr({id: id['user'], 'value': user, 'title': 'Username or e-mail', 'size': 20})
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;input&amp;gt;').attr({id: id['master'], 'value': '', 'title': 'Master password', 'type': 'password', 'size': 20})
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;input&amp;gt;').attr({id: id['strlen'], 'value': strlen, 'title': 'Password length', 'size': 20})
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;input&amp;gt;').attr({id: id['times'], 'value': times, 'title': 'Strength', 'size': 20})
 ).append(
  $('&amp;lt;br&amp;gt;')
 ).append(
  $('&amp;lt;textarea&amp;gt;').attr({id: id['salt'], 'cols': 76, 'rows': 10, 'title': 'Salt'}).text(salt)
 ).append(
  $('&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;close&amp;quot;&amp;gt;').click(function(){
   $('#'+id['panel']).remove()
  })
 ).append(
  $('&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;submit&amp;quot;&amp;gt;').click(function(){
    var url = $('#'+id['url']).val();
    var user = $('#'+id['user']).val();
    var salt = $('#'+id['salt']).val();
    var master = $('#'+id['master']).val();
    var strlen = $('#'+id['strlen']).val();
    var times = $('#'+id['times']).val();
    localStorage.setItem(id['url'], url);
    localStorage.setItem(id['user'], user);
    localStorage.setItem(id['salt'], salt);
    localStorage.setItem(id['strlen'], strlen);
    localStorage.setItem(id['times'], times);
    var str = url + salt + user + master;
    for (var i = 0; i &amp;lt; times; i++) { str = str + str; }
    var md5str = hex_md5(str);
    var md5bin = hexstr2bin(md5str);
    var pass = base64encode(md5bin).substr(0, strlen);
    userele.val(user);
    passele.val(pass);
    alert(pass);
    $('#'+id['panel']).remove();
  })
 )
);
&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/gYC-x7SyhOTkFg">
    <link>https://let.hatelabo.jp/ohac/let/gYC-x7SyhOTkFg</link>
    <dc:date>2011-01-20T11:12:58Z</dc:date>
    <description>アドレスのbase64を表示</description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] href64</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FgYC-x7SyhOTkFg.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;href64&lt;/a&gt;&lt;pre&gt;/*
 * @title href64
 * @description アドレスのbase64を表示
 * @include http://*
 * @license MIT License
 * @require http://tociyuki.flop.jp/archive/base64.js
 */
(function(){
alert(base64encode(location.href));
}())&lt;/pre&gt;</content:encoded>
  </item>
  <item rdf:about="https://let.hatelabo.jp/ohac/let/gYC-y7SxrqjdZQ">
    <link>https://let.hatelabo.jp/ohac/let/gYC-y7SxrqjdZQ</link>
    <dc:date>2011-01-20T11:02:46Z</dc:date>
    <description>アドレスのmd5を表示</description>
    <dc:creator>ohac</dc:creator>
    <title>[Let] hrefmd5</title>
    <content:encoded>&lt;a href="javascript:%22https%3A%2F%2Flet.st-hatelabo.com%2Fohac%2Flet%2FgYC-y7SxrqjdZQ.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;hrefmd5&lt;/a&gt;&lt;pre&gt;/*
 * @title hrefmd5
 * @description アドレスのmd5を表示
 * @include http://*
 * @license MIT License
 * @require http://pajhome.org.uk/crypt/md5/2.2/md5-min.js
 */
(function(){
alert(hex_md5(location.href));
}())&lt;/pre&gt;</content:encoded>
  </item>
</rdf:RDF>
