Skip to content

Instantly share code, notes, and snippets.

View 0mg's full-sized avatar
💤

Ray Milligram 0mg

💤
View GitHub Profile
@0mg
0mg / oprlsbu2.md
Created October 14, 2012 08:07
Opera's localStorage bug

Opera's localStorage bug

http://0mg.github.com/etc/oprlsbu2.html

javascript: ({}) + localStorage + ({})[object Object][object Storage][object Object]javascript: [] + localStorage + [][object Storage]javascript: (function(){}) + localStorage + (function(){})TypeError: when converting to primitive: result is not a primitivejavascript: 0 + localStorage + 00[object Storage]0javascript: "" + localStorage + ""[object Storage]<
filter
(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]
constructor
(""+[][(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]])[!""+!""+!""]+(!""+[][(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]])[+!""+[+""]]+(""+""[""])[+!""]+(""+![])[!""+!""+!""]+(""+!"")[+""]+(""+!"")[+!""]+(""+""[""])[+""]+(""+[][(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]])[!""+!""+!""]+(""+!"")[+""]+(!""+[][(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]])[+!""+[+""]]+(""+!"")[+!""]
eval
(""+!"")[!""+!""+!""]+("!"+[][(""+![])[+""]+([![]]+""[""])[+!""+[+""]]+(""+![])[!""+!""]+(""+!"")[+""]+(""+!"")[!""+!""+!""]+(""+!"")[+!""]])[!""+!""+!""+[+""]]+([]+![])[+!""]+([]+![])[!""+!""]
"\160rint(\"\110ell\157\54\167rld!\")"
"\"\\"+(+!"")+
@0mg
0mg / twerr.md
Created August 22, 2012 10:22
@0mg Twitter エラー

@0mg Twitter エラー

Twitter に @0mg でログインした際、一部の API がエラーを返す。(2012 年 8 月 22 日現在)

リツイートされたツイート一覧 /1/statuses/retweets_of_me.json
HTTP Status機能API
http://api.twitter.com
JSON
500 Internal Server Errorダイレクトメッセージ(受信)一覧 /1/direct_messages.json{"errors":[{"message":"Internal error","code":131}]}
ダイレクトメッセージ(送信)一覧 /1/direct_messages/sent.json
作成したリスト一覧 /1/lists.json
「作成したリスト+購読中のリスト」一覧 /1/lists/all.json
リツイートしたツイート一覧 /1/statuses/retweeted_by_me.json
@0mg
0mg / dom.js
Created March 28, 2012 06:29
dom.js
var dom = {
ce: function ce(s) { return document.createElement(s); },
ct: function ct(s) { return document.createTextNode(s); },
cf: function cf() { return document.createDocumentFragment(); },
id: function id(s) { return document.getElementById(s); },
q: function q(s) { return document.querySelector(s); },
qs: function qs(s) { return document.querySelectorAll(s); },
rm: function rm(e) { return e.parentNode.removeChild(e); }
};
@0mg
0mg / rmnode.md
Created March 18, 2012 11:34
removeChild vs innerHTML

removeChild vs innerHTML

ノードを除去するのに removeChild() と innerHTML = "" とではどちらが速い?

方法

rmnode.html

結果

Opera 11.6118ms6ms3.00 : 1
removeChildinnerHTMLratio
Chrome 16.06ms3ms2.00 : 1
Safari 5.18ms4ms2.00 : 1
@0mg
0mg / operaOldSWF.md
Created February 8, 2012 07:53
[メモ] Opera で古い Flash Player を使う

古いバージョンの Flash Player を使う

このメモは Windows 版の Opera 9.64 および Flash Player 10.0 と 10.3 向けに書かれています。別の環境でも通用するかどうかは不明です。

Firefox と Chrome では Flash Player 10.3 を使い、Opera では Flash Player 10.0 を使う、というふうに、別バージョンの Flash Player を共存させ、使い分けたい時がある。そのためにはどうすればいいか。

まず、基礎知識。

プラグインの読み込まれ方

Opera はプラグインの dll を複数箇所から読み込んでいる。

@0mg
0mg / gist:1351079
Created November 9, 2011 10:39
JS記
function f(){return f}
この関数 f を呼ぶと、関数 f を返す。 // f() is f
返ってきた関数 f を呼ぶと、やはり関数 f を返す。 // f()() is f
f()()()()()()() も f である。
f()()()()()()()()()()()() も f である。
---
function O(x) {
@0mg
0mg / usercss.js
Created October 29, 2011 08:02
UserCSS.js for Opera
// ==UserScript==
// @name UserCSS
// @include *
// ==/UserScript==
(function() {
function userCSS(event) {
[
{
@0mg
0mg / OperaBackup.bat
Created October 25, 2011 09:22
Opera 11.52 バックアップ goodies
@echo off
setlocal
REM バックアップ元フォルダ
set profile="(^o^)\Opera\profile"
REM バックアップ先フォルダ
set bkdir="%date:~0,4%-%date:~5,2%-%date:~8,2% Backup Opera settings (%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%)"
md %bkdir%
@0mg
0mg / activElm.js
Created October 16, 2011 11:33
activeElement memory
// ==UserScript==
// @name activeElement memory
// @include *
// ==/UserScript==
addEventListener("focus", function(event) {
if (event.target instanceof HTMLTextAreaElement ||
event.target instanceof HTMLInputElement) {
document.activeElementLatest = event.target;
}