Skip to content

Instantly share code, notes, and snippets.

@gifnksm
gifnksm / data_format.txt
Created December 6, 2010 03:56
ニコタグからタグの履歴情報を取得する。
Data = {
count: Integer, // タグの個数
first: Date, // タグ情報を最初に取得した日時
last: Date, // タグ情報を最後に取得した日時
tags: [Tag] // タグ情報の配列
};
Tag = {
id: Integer, // タグのID
name: String, // タグ名
@gifnksm
gifnksm / nicovideo_getFlv.js
Created November 10, 2010 03:42
ニコニコ動画でgetFlvを呼び出す関数
(function() {
if (!('nicovideo_getFlv' in window)) {
const Getter = function(videoID) {
this._videoID = videoID;
this._callbacks = [];
};
Getter.prototype = {
_videoID: null,
_lock: false,
@gifnksm
gifnksm / .zshrc
Created October 25, 2010 09:08
ssh-agentをターミナル間で共有する
function ssh-start() {
ssh-agent -s > "${HOME}/.ssh/agent-env"
. "${HOME}/.ssh/agent-env"
ssh-add
}
if [ -e "${HOME}/.ssh/agent-env" ]; then
isAliveAgent=`ps -ef | grep "/ssh-agent" | grep -v grep | wc -l`
if [ $isAliveAgent = 1 ]; then
echo "ssh-agent is alive"
@gifnksm
gifnksm / nicovideo_createPanel.js
Created October 20, 2010 11:42
ニコニコ動画のwatchページのタブを追加する関数
function nicovideo_createPanel(id, labelText) {
let panelID = 'itab_' + id;
let label = document.createElement('a');
label.href = '#' + panelID;
label.innerHTML = '<div>' + labelText + '</div>';
// remove extra <a>...</a>
label.firstChild.textContent = labelText;
document.querySelector('#itab td').appendChild(label);
@gifnksm
gifnksm / toDOM.js
Created October 20, 2010 11:13
method toDOM() for XML and XMLList object
default xml namespace = "http://www.w3.org/1999/xhtml";
(function() {
var parser = new DOMParser(),
range = document.createRange();
function toDOM(xmlns) {
var pretty = XML.prettyPrinting;
// disable prettyPringing temporary to avoid extra space inclusion
XML.prettyPrinting = false;
var Combinator = function(fun) {
if (typeof fun === 'function')
this.parse = fun;
};
Combinator.define = function(fun) {
var c = new this();
fun.call(c);
return c;
};
Combinator._rjoin = function(fun) {
@gifnksm
gifnksm / .zshrc
Created February 10, 2010 14:30
http://blog.fuktommy.com/1159370954 の私家改造版 (~/.ssh/agent-env の実行が不要に)
function ssh-start() {
eval `/usr/local/bin/ssh-start`
}
[ -e "${HOME}/.ssh/agent-env" ] && . "${HOME}/.ssh/agent-env"
@gifnksm
gifnksm / e4xToDOM.js
Created February 8, 2010 03:50
E4XからDOMノードへ変換する (HTML用に余分な空白を混入させない)
// XML (E4X)からDOM Nodeへの変換
default xml namespace = "http://www.w3.org/1999/xhtml";
function e4xToDOM(xml, xmlns) {
var pretty = XML.prettyPrinting;
// 余分な空白を混入させないように,prettyPrintingを一時的に無効にする
XML.prettyPrinting = false;
var doc = (new DOMParser).parseFromString(
'<root xmlns="' + xmlns + '">' + xml.toXMLString() + "</root>",
"application/xml");
Object.memoize = function(obj, defs) {
function add(key, getter) {
obj.__defineGetter__(key, function() {
delete this[key];
return this[key] = getter.call(this);
});
}
for (let key in defs) {
if (defs.hasOwnProperty(key)) {
add(key, defs[key]);
@gifnksm
gifnksm / joinDOM.js
Created February 8, 2010 03:43
DOM要素の配列を結合する
// DOM要素を結合する。引数はScalaのmkString風
Array.prototype.joinDOM = function() {
var [sep, head, tail] = [null, null, null],
arg = Array.map(arguments, convertToDOM);
switch(arg.length) {
case 0: break;
case 1: [sep] = arg; break;
case 3: [head, sep, tail] = arg; break;
default: throw new Error('invalid arguments');