chrome me not
Friday, October 22, 2010 12:34:02 AM
chrome-extension-download.js
Have fun.
tips and tricks for the interwebs
Sticky post
Tuesday, February 10, 2009 1:49:01 AM
Saturday, February 5, 2011 5:39:30 PM
Friday, October 22, 2010 12:34:02 AM
Monday, September 20, 2010 11:36:01 AM
$ ls-storage Found 4 sites. Which to list? ENTER (all), q (quit) 0: file://localhost 1: http://blog.quplo.com 2: https://dragonfly.opera.com 3: http://videojs.com 0 Reading pstorage/00/11/00000000 of origin file://localhost a: 1234 $ ls-storage -h Usage: ls-storage [options] By default lists all localStorage areas available and their contents. Interactively prompts for which storage area to show Options: -h Show this help -p path to profile folder -l List only localStorage -u List only UserJS storage -d List Web Databases Remarks: The options l, u and d override each other. When listing web databases, one must be forcefully choosen and then sqlite will be executed with the proper data file.[*] Title pun kindly borrowed from Mongo DB is web scale [1] Bookmarklet (works everywhere)
javascript:(function(){function _(){for(var i=0,m=arguments.length;i<m;i++)h.push(arguments[i]);}function htmlize(s){return s!=null?String(s).replace(/[<>&]/g,function(a){return htmlize.chars[a]}):String(s);};htmlize.chars={'<':'<','>':'>','&':'&','"':'"'};var h=['<style>table{border-collapse:collapse;}td{border:1px solid black;padding:4px}</style>'];_ ('<h1>Storage for ',location.protocol,location.host?'//':'',location.host,'</h1>');for(var i=0,ns=['localStorage','sessionStorage','preferences'],n,h,o;n=ns[i];i++){o=window[n]||(window.widget&&widget[n]);if(!o)continue;if(o.length){_ ('<h1>',n,'</h1><table><tr><th>Key</th><th>Value</th><th></th></tr>');for(var j=0,m=o.length,k,v;j<m;j++){k=o.key(j);v=o.getItem(k);_ ('<tr><td>',htmlize(k),'</td><td>',htmlize(v),'</td><td><button onclick="Storage.prototype.removeItem.call(opener.',n,',\'',htmlize(k),'\');var p=this.parentNode.parentNode;p.parentNode.removeChild(p);">Delete</button></td></tr>');}_ ('</table><p><button onclick="Storage.prototype.clear.call(opener.',n,');">Clear All?</button></p>');}else{_ ('<h1>',n,'</h1><p>No data</p>');}}var o=open('about:blank','storagedump','');o.document.write(h.join(''));if(document.domain!=location.hostname)o.document.domain=document.domain;})();
; Full code (function(){
function _(){ for(var i = 0, m = arguments.length; i < m; i++) h.push(arguments[i]); }
function htmlize(s){ return s != null ? String(s).replace(/[<>&]/g,function(a){return htmlize.chars[a]}) : String(s); };
htmlize.chars = {'<':'<','>':'>','&':'&','"':'"'};
var h = ['<style>table{border-collapse:collapse;}td{border:1px solid black;padding:4px}</style>'];
_ ('<h1>Storage for ', location.protocol, location.host ? '//' : '', location.host, '</h1>');
for(var i = 0, ns = ['localStorage', 'sessionStorage', 'preferences'], n, h, o; n = ns[i]; i++)
{
o = window[n] || (window.widget && widget[n]);
if (!o) continue;
if (o.length)
{
_ ('<h1>', n, '</h1><table><tr><th>Key</th><th>Value</th><th></th></tr>');
for(var j = 0, m = o.length, k, v; j < m; j++)
{
k = o.key(j);
v = o.getItem(k);
_ ('<tr><td>', htmlize(k), '</td><td>', htmlize(v), '</td><td>[html:button onclick="Storage.prototype.removeItem.call(opener.', n,
', \'', htmlize(k), '\');var p=this.parentNode.parentNode;p.parentNode.removeChild(p);"]Delete</button></td></tr>');
}
_ ('</table><p><button onclick="Storage.prototype.clear.call(opener.', n, ');">Clear All ?</button></p>');
}
else
{
_ ('<h1>', n, '</h1><p>No data</p>');
}
}
var o = open('about:blank','storagedump','');
o.document.write(h.join(''));
if (document.domain != location.hostname)
o.document.domain = document.domain;
})();
Sunday, November 22, 2009 2:49:03 AM

Sunday, May 24, 2009 2:48:24 PM
$ backup-opera-profileand for that I did the following bash script, linux only currently.
~$ backup-opera-profile -h
Usage: backup-opera-profile [options] [archive name]
-h, --help Shows this help
[archive name] Archive name (tar gzipped) where the profile content
will be saved. Value is optional. If not supplied a
name will be generated using the current date for
uniqueness. If -r is specified, the profile is restored
from the archive, and the archive name is mandatory.
The later action cannot be undone
-d, --dry dry mode. Does not create/change any files,
just displays what would happen
-r, --restore Restores profile from 'archive name'.
'archive name' argument becomes mandatory
-p, --prefix Parameter must be followed by profile folder name.
If ommited '.opera' is used. If the prefix is not
an absolute path, then it'll beresolved against the
user's home folder, not the current working folder
Example:
$ backup-opera-profile
or
$ backup-opera-profile -p .opera-weekly -r backup-20080524.tgz

Monday, April 13, 2009 12:02:34 AM
Sunday, March 1, 2009 2:31:04 AM


Tuesday, February 17, 2009 1:15:50 AM



var translations = {
en:{//plain english
L_SUBMIT: 'Submit',
L_CANCEL: 'Cancel',
L_QUICK_EDIT: 'Quick edit',
L_QUICK_EDIT_LINK_TOOLTIP: 'Quick edit this post using inline editor',
L_ERROR_ON_LOAD: 'Error loading post from server',
L_LOADING_DATA_STATUS_MSG: 'Loading data from server...',
L_POST_NOT_CHANGED_NOTIF: 'Post not changed (to quit press Cancel)',
L_SUBMITTING: 'Submitting...',
L_ERROR: a'Error',
...
Tuesday, February 10, 2009 1:40:42 AM

! Forgot to post links...Wojtech
2010-10-01 11:41:29
Could you do an update to "http phones file" that would be great (see my comment)