Repository: incubator-gearpump Updated Branches: refs/heads/master a034e742c -> 761e04c6f
http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/js/vendor/modernizr-2.6.1-respond-1.1.0.min.js ---------------------------------------------------------------------- diff --git a/docs/js/vendor/modernizr-2.6.1-respond-1.1.0.min.js b/docs/js/vendor/modernizr-2.6.1-respond-1.1.0.min.js deleted file mode 100644 index 8e70894..0000000 --- a/docs/js/vendor/modernizr-2.6.1-respond-1.1.0.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/* Modernizr 2.6.1 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function D(a){j.cssText=a}function E(a,b){return D(n.join(a+";")+(b||""))}function F(a,b){return typeof a===b}function G(a,b){return!!~(""+a).indexOf(b)}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f}return!1}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c))}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++)u[c[d]]=c[d]in k;return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++)k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position: absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;return t}("search tel url email datetime date month week time datetime-local number range color".split(" "))}var d="2.6.1",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function(a,c,d,e){var f,i,j,k=b.createElement("div"),l=b.body,m=l?l:b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),k.appendChild(j);return f=["­",'<style id="s',h,'">',a," </style>"].join(""),k.id=h,(l?k:m).innerHTML+=f,m.appendChild(k),l||(m.style.background="",g.appendChild(m)),i=c(k,a),l?k.parentNode.removeChild(k):m.parentNode.removeChild(m),!!i},z=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function(a,b){return B.call(a,b)}:C=function(a,b){return b in a&&F(a.constructor.prototype[b],"undefined")},Function .prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return J("flexWrap")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.webs qldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!J("indexedDB",a)},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba")},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla")},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return J("backgroundSize")},s.borderimage=function(){return J("borderImage")},s.borderradius=function(){return J("borderRadius")},s.boxshadow=function(){return J("boxShadow")},s.textshadow= function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return J("animationName")},s.csscolumns=function(){return J("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient")},s.cssreflections=function(){return J("boxReflect")},s.csstransforms=function(){return!!J("transform")},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return J("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("h ttps://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(['#modernizr:after{content:"',l,'";visibility:hidden}'].join(""),function(b){a=b.offsetHeight>=1}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayTyp e("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var L in s)C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));return e.input||K(),e.addTest=function(a,b){if(ty peof a=="object")for(var d in a)C(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},D(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.creat eElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a. childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a])},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return o.call(a)=="[object Function]"}function e(a) {return typeof a=="string"}function f(){}function g(a){return!a||a=="loaded"||a=="complete"||a=="uninitialized"}function h(){var a=p.shift();q=1,a?a.t?m(function(){(a.t=="c"?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){a!="img"&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l={},o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};y[c]===1&&(r=1,y[c]=[],l=b.createElement(a)),a=="object"?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),a!="img"&&(r||y[c]===2?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i(b=="c"?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),p.length==1&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTi meout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&o.call(a.opera)=="[object Opera]",l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return o.call(a)=="[object Array]"},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,i){var j=b(a),l=j.autoCallback;j.url.split(".").pop().split("?").shift(),j.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]||h),j.instead?j.instead(a,e,f,g,i):(y[j.url]?j.noexec=!0:y[j.url]=1,f.load(j.url,j.forceCSS||!j.forceJS&&"css"==j.url.split(".").pop().split("?").shift()?"c":c,j.noexec,j.attrs,j.timeout),(d(e)||d(l))&&f.load(functio n(){k(),e&&e(j.origUrl,i,g),l&&l(j.origUrl,i,g),y[j.url]=2})))}function i(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var j,l,m=this.yepnope.loader;if(e(a))g(a,0,m,0);else if(w(a))for(j=0;j<a.length;j++)l=a[j],e(l)?g(l,0,m,0):w(l)?B(l):Object(l)===l&&i(l,m);else Object(a)===a&&i(a,m)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,b.readyState==null&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function( ){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))}; - -/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */ -/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */ -window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='­<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document); - -/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */ -(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B<y;B++){A=D[B],z=A.href,C=A.media,x=A.rel&&A.rel.toLowerCase()==="stylesheet";if(!!z&&x&&!o[z]){if(A.styleSheet&&A.styleSheet.rawCssText){m(A.styleSheet.rawCssText,z,C);o[z]=true}else{if((!/^([a-zA-Z:]*\/\/)/.test(z)&&!g)||z.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:z,media:C})}}}}u()},u=function(){if(d.length){var x=d.shift();n(x.href,function(y){m(y,x.href,x.media);o[x.href]=true;u()})}},m=function(I,x,z){var G=I.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),J=G&&G.length||0,x=x.substring(0,x.lastIndexOf("/")),y=function(K){return K.replace(/(url\()['"]?([^\/\)'" ][^:\)'"]+)['"]?(\))/g,"$1"+x+"$2$3")},A=!J&&z,D=0,C,E,F,B,H;if(x.length){x+="/"}if(A){J=1}for(;D<J;D++){C=0;if(A){E=z;k.push(y(I))}else{E=G[D].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&y(RegExp.$2))}B=E.split(",");H=B.length;for(;C<H;C++){F=B[C];i.push({media:F.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:k.length-1,hasquery:F.indexOf("(")>-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode===" CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l<h){clearTimeout(r);r=setTimeout(j,h);return}else{l=z}for(var E in i){var K=i[E],C=K.minw,J=K.maxw,A=C===null,L=J===null,y="em";if(!!C){C=parseFloat(C)*(C.indexOf(y)>-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveX Object("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/maven-setting.md ---------------------------------------------------------------------- diff --git a/docs/maven-setting.md b/docs/maven-setting.md deleted file mode 100644 index 5cd94f2..0000000 --- a/docs/maven-setting.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -layout: global -displayTitle: Maven Setting -title: Maven Setting -description: Maven Setting ---- - -To program against this version, you need to add below artifact dependencies to your application's Maven setting: - -{% highlight xml %} -<dependencies> -<dependency> -<groupId>com.github.intel-hadoop</groupId> -<artifactId>gearpump-core_2.11</artifactId> -<version>{{ site.GEARPUMP_VERSION }}</version> -</dependency> -<dependency> -<groupId>com.github.intel-hadoop</groupId> -<artifactId>gearpump-streaming_2.11</artifactId> -<version>{{ site.GEARPUMP_VERSION }}</version> -</dependency> -</dependencies> -{% endhighlight %} - -And you will need to add following repositories to get above dependencies resolved. - -{% if site.GEARPUMP_VERSION contains "SNAPSHOT" %} -{% highlight xml %} -<repositories> -<repository> - <id>sonatype-nexus-releases</id> - <name>Sonatype Nexus Snapshots</name> - <url>https://oss.sonatype.org/content/repositories/snapshots</url> - -</repository> - -<repository> -<id>releases-oss.sonatype.org</id> -<name>Sonatype Releases Repository</name> -<url>http://oss.sonatype.org/content/repositories/releases/</url> -</repository> - -<repository> - <id>akka-data-replication</id> - <name>Patrik at Bintray</name> - <url>http://dl.bintray.com/patriknw/maven</url> -</repository> - -<repository> - <id>cloudera</id> - <name>Cloudera repo</name> - <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> -</repository> - -<repository> - <id>vincent</id> - <name>vincent</name> - <url>http://dl.bintray.com/fvunicorn/maven</url> -</repository> - -<repository> - <id>non</id> - <name>non</name> - <url>http://dl.bintray.com/non/maven</url> -</repository> - -<repository> - <id>maven-repo</id> - <name>maven-repo</name> - <url>http://repo.maven.apache.org/maven2</url> -</repository> - -<repository> - <id>maven1-repo</id> - <name>maven1-repo</name> - <url>http://repo1.maven.org/maven2</url> -</repository> - -<repository> - <id>maven2-repo</id> - <name>maven2-repo</name> - <url>http://mvnrepository.com/artifact</url> -</repository> - -</repositories> -{% endhighlight %} -{% else %} -{% highlight xml %} -<repositories> -<repository> -<id>releases-oss.sonatype.org</id> -<name>Sonatype Releases Repository</name> -<url>http://oss.sonatype.org/content/repositories/releases/</url> -</repository> - -<repository> - <id>akka-data-replication</id> - <name>Patrik at Bintray</name> - <url>http://dl.bintray.com/patriknw/maven</url> -</repository> - -<repository> - <id>cloudera</id> - <name>Cloudera repo</name> - <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> -</repository> - -<repository> - <id>vincent</id> - <name>vincent</name> - <url>http://dl.bintray.com/fvunicorn/maven</url> -</repository> - -<repository> - <id>non</id> - <name>non</name> - <url>http://dl.bintray.com/non/maven</url> -</repository> - -<repository> - <id>maven-repo</id> - <name>maven-repo</name> - <url>http://repo.maven.apache.org/maven2</url> -</repository> - -<repository> - <id>maven1-repo</id> - <name>maven1-repo</name> - <url>http://repo1.maven.org/maven2</url> -</repository> - -<repository> - <id>maven2-repo</id> - <name>maven2-repo</name> - <url>http://mvnrepository.com/artifact</url> -</repository> - -</repositories> -{% endhighlight %} -{% endif %} - -For SBT the configuration above, adding the two external modules as well, is equivalent to the following: - -``` -resolvers ++= Seq( - "Sonatype releases" at "http://oss.sonatype.org/content/repositories/releases/", - "Patrik at Bintray" at "http://dl.bintray.com/patriknw/maven", - "Cloudera repo" at "https://repository.cloudera.com/artifactory/cloudera-repos", - "vincent" at "http://dl.bintray.com/fvunicorn/maven", - "non" at "http://dl.bintray.com/non/maven", - "Maven repo" at "http://repo.maven.apache.org/maven2", - "Maven1 repo" at "http://repo1.maven.org/maven2", - "Maven2 repo" at "http://mvnrepository.com/artifact" -) - -val gearpumpVersion = "{{ site.GEARPUMP_VERSION }}" - -libraryDependencies ++= Seq( - "com.github.intel-hadoop" % "gearpump-core_2.11" % gearpumpVersion, - "com.github.intel-hadoop" % "gearpump-streaming_2.11" % gearpumpVersion, - "com.github.intel-hadoop" %% "gearpump-external-kafka" % gearpumpVersion, - "com.github.intel-hadoop" %% "gearpump-external-hbase" % gearpumpVersion -) -``` - -and you can put this in your `build.sbt` buildfile. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/message-delivery.md ---------------------------------------------------------------------- diff --git a/docs/message-delivery.md b/docs/message-delivery.md deleted file mode 100644 index 909574f..0000000 --- a/docs/message-delivery.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -layout: global -title: Reliable Message Delivery ---- - -## What is At Least Once Message Delivery? - -Messages could be lost on delivery due to network partitions. **At Least Once Message Delivery** (at least once) means the lost messages are delivered one or more times such that at least one is processed and acknowledged by the whole flow. - -Gearpump guarantees at least once for any source that is able to replay message from a past timestamp. In Gearpump, each message is tagged with a timestamp, and the system tracks the minimum timestamp of all pending messages (the global minimum clock). On message loss, application will be restarted to the global minimum clock. Since the source is able to replay from the global minimum clock, all pending messages before the restart will be replayed. Gearpump calls that kind of source `TimeReplayableSource` and already provides a built in -[KafkaSource](gearpump-internals.html#at-least-once-message-delivery-and-kafka). With the KafkaSource to ingest data into Gearpump, users are guaranteed at least once message delivery. - -## What is Exactly Once Message Delivery? - -At least once delivery doesn't guarantee the correctness of the application result. For instance, for a task keeping the count of received messages, there could be overcount with duplicated messages and the count is lost on task failure. - In that case, **Exactly Once Message Delivery** (exactly once) is required, where state is updated by a message exactly once. This further requires that duplicated messages are filtered out and in-memory states are persisted. - -Users are guaranteed exactly once in Gearpump if they use both a `TimeReplayableSource` to ingest data and the Persistent API to manage their in memory states. With the Persistent API, user state is periodically checkpointed by the system to a persistent store (e.g HDFS) along with its checkpointed time. Gearpump tracks the global minimum checkpoint timestamp of all pending states (global minimum checkpoint clock), which is persisted as well. On application restart, the system restores states at the global minimum checkpoint clock and source replays messages from that clock. This ensures that a message updates all states exactly once. - -### Persistent API -Persistent API consists of `PersistentTask` and `PersistentState`. - -Here is an example of using them to keep count of incoming messages. - -```scala -class CountProcessor(taskContext: TaskContext, conf: UserConfig) - extends PersistentTask[Long](taskContext, conf) { - - override def persistentState: PersistentState[Long] = { - import com.twitter.algebird.Monoid.longMonoid - new NonWindowState[Long](new AlgebirdMonoid(longMonoid), new ChillSerializer[Long]) - } - - override def processMessage(state: PersistentState[Long], message: Message): Unit = { - state.update(message.timestamp, 1L) - } -} -``` - -The `CountProcessor` creates a customized `PersistentState` which will be managed by `PersistentTask` and overrides the `processMessage` method to define how the state is updated on a new message (each new message counts as `1`, which is added to the existing value) - -Gearpump has already offered two types of states - -1. NonWindowState - state with no time or other boundary -2. WindowState - each state is bounded by a time window - -They are intended for states that satisfy monoid laws. - -1. has binary associative operation, like `+` -2. has an identity element, like `0` - -In the above example, we make use of the `longMonoid` from [Twitter's Algebird](https://github.com/twitter/algebird) library which provides a bunch of useful monoids. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/mkdocs.yml ---------------------------------------------------------------------- diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml new file mode 100644 index 0000000..a769960 --- /dev/null +++ b/docs/mkdocs.yml @@ -0,0 +1,50 @@ +site_name: Apache Gearpump(incubating) + +repo_url: 'https://github.com/apache/incubator-gearpump' + +use_directory_urls: false + +# files under docs/ are copied to tmp/ +# with template variables replaced by mustache +docs_dir: tmp + +pages: +- Overview: 'index.md' +- Introduction: + - 'Submit Your 1st Application': 'introduction/submit-your-1st-application.md' + - 'Client Command Line': 'introduction/commandline.md' + - 'Basic Concepts': 'introduction/basic-concepts.md' + - 'Technical Highlights': 'introduction/features.md' + - 'Reliable Message Delivery': 'introduction/message-delivery.md' + - 'Performance': 'introduction/performance-report.md' + - 'Gearpump Internals': 'introduction/gearpump-internals.md' +- Deployment: + - 'Local Mode': 'deployment/deployment-local.md' + - 'Standalone Mode': 'deployment/deployment-standalone.md' + - 'YARN Mode': 'deployment/deployment-yarn.md' + - 'Docker Mode': 'deployment/deployment-docker.md' + - 'UI Authentication': 'deployment/deployment-ui-authentication.md' + - 'High Availability': 'deployment/deployment-ha.md' + - 'Reliable Message Delivery': 'deployment/deployment-msg-delivery.md' + - 'Configuration': 'deployment/deployment-configuration.md' + - 'Resource Isolation': 'deployment/deployment-resource-isolation.md' + - 'YARN Security Guide': 'deployment/deployment-security.md' + - 'How to Get Your Gearpump Distribution': 'deployment/get-gearpump-distribution.md' + - 'Hardware Requirement': 'deployment/hardware-requirement.md' +- Programming Guide: + - 'Write Your 1st App': 'dev/dev-write-1st-app.md' + - 'Customized Message Passing': 'dev/dev-custom-serializer.md' + - 'Gearpump Connectors': 'dev/dev-connectors.md' + - 'Storm Compatibility': 'dev/dev-storm.md' + - 'IDE Setup': 'dev/dev-ide-setup.md' + - 'Non Streaming Examples': 'dev/dev-non-streaming-example.md' + - 'REST API': 'dev/dev-rest-api.md' + - 'Scala API': 'api/scala.md' + - 'Java API': 'api/java.md' + +theme: readthedocs + +markdown_extensions: + - codehilite: + use_pygments: False + - admonition http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/performance-report.md ---------------------------------------------------------------------- diff --git a/docs/performance-report.md b/docs/performance-report.md deleted file mode 100644 index cf222c8..0000000 --- a/docs/performance-report.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: global -displayTitle: Gearpump Performance Report -title: Gearpump Performance Report -description: Gearpump Performance Report ---- - -# Performance Evaluation - -To illustrate the performance of Gearpump, we mainly focused on two aspects, throughput and latency, using a micro benchmark called SOL (an example in the Gearpump package) whose topology is quite simple. SOLStreamProducer delivers messages to SOLStreamProcessor constantly and SOLStreamProcessor does nothing. We set up a 4-nodes cluster with 10GbE network and each node's hardware is briefly shown as follows: - -Processor: 32 core Intel(R) Xeon(R) CPU E5-2690 2.90GHz -Memory: 64GB - -## Throughput - -We tried to explore the upper bound of the throughput, after launching 48 SOLStreamProducer and 48 SOLStreamProcessor the Figure below shows that the whole throughput of the cluster can reach about 18 million messages/second(100 bytes per message) - -## Latency - -When we transfer message at the max throughput above, the average latency between two tasks is 8ms. - -## Fault Recovery time - -When the corruption is detected, for example the Executor is down, Gearpump will reallocate the resource and restart the application. It takes about 10 seconds to recover the application. - - - -## How to setup the benchmark environment? - -### Prepare the env - -1). Set up a 4-nodes Gearpump cluster with 10GbE network which have 4 Workers on each node. In our test environment, each node has 64GB memory and Intel(R) Xeon(R) 32-core processor E5-2690 2.90GHz. Make sure the metrics is enabled in Gearpump. - -2). Submit a SOL application with 48 StreamProducers and 48 StreamProcessors: - -```bash -bin/gear app -jar ./examples/sol-$VERSION-assembly.jar -streamProducer 48 -streamProcessor 48 -``` - -3). Launch Gearpump's dashboard and browser http://$HOST:8090/, switch to the Applications tab and you can see the detail information of your application. The HOST should be the node runs dashboard. http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/submit-your-1st-application.md ---------------------------------------------------------------------- diff --git a/docs/submit-your-1st-application.md b/docs/submit-your-1st-application.md deleted file mode 100644 index 3bdb2f8..0000000 --- a/docs/submit-your-1st-application.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -layout: global -displayTitle: Submit Your 1st Gearpump Application -title: submitapp -description: Submit Your 1st Gearpump Application ---- - -Before you can submit and run your first Gearpump application, you will need a running Gearpump service. -There are multiple ways to run Gearpump [Local mode](deployment-local.html), [Standalone mode](deployment-standalone.html), [YARN mode](deployment-yarn.html) or [Docker mode](deployment-docker.html). - -The easiest way is to run Gearpump in [Local mode](deployment-local.html). -Any Linux, MacOSX or Windows desktop can be used with zero configuration. - -In the example below, we assume your are running in [Local mode](deployment-local.html). -If you running Gearpump in one of the other modes, you will need to configure the Gearpump client to -connect to the Gearpump service by setting the `gear.conf` configuration path in classpath. -Within this file, you will need to change the parameter `gearpump.cluster.masters` to the correct Gearpump master(s). -See [Configuration](deployment-configuration.html) for details. - -## Steps to submit your first Application - -### Step 1: Submit application -After the cluster is started, you can submit an example wordcount application to the cluster - -Open another shell, - -```bash -### To run WordCount example -bin/gear app -jar examples/wordcount-{{site.SCALA_BINARY_VERSION}}-{{site.GEARPUMP_VERSION}}-assembly.jar org.apache.gearpump.streaming.examples.wordcount.WordCount -``` - -### Step 2: Congratulations, you've submitted your first application. - -To view the application status and metrics, start the Web UI services, and browse to [http://127.0.0.1:8090](http://127.0.0.1:8090) to check the status. -The default username and password is "admin:admin", you can check -[UI Authentication](deployment-ui-authentication.html) to find how to manage users. - - - -**NOTE:** the UI port setting can be defined in configuration, please check section [Configuration](deployment-configuration.html). - -## A quick Look at the Web UI -TBD - -## Other Application Examples -Besides wordcount, there are several other example applications. Please check the source tree examples/ for detail information. http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/761e04c6/docs/version.yml ---------------------------------------------------------------------- diff --git a/docs/version.yml b/docs/version.yml new file mode 100644 index 0000000..b13cd9d --- /dev/null +++ b/docs/version.yml @@ -0,0 +1,6 @@ +--- +GEARPUMP_VERSION: "0.8.2-SNAPSHOT" +SCALA_BINARY_VERSION: "2.11" +SCALA_VERSION: "2.11.8" +--- +
