<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>BootingE&#39;s Engineering Blog</title>
    <description>BootingE&#39;s Engineering Blog.</description>
    <link>http://bootinge.github.io/</link>
    <atom:link href="http://bootinge.github.io/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 12 Feb 2016 05:35:26 +0000</pubDate>
    <lastBuildDate>Fri, 12 Feb 2016 05:35:26 +0000</lastBuildDate>
    <generator>Jekyll v3.0.3</generator>
    
      <item>
        <title>Hadoop Basic</title>
        <description>&lt;html&gt;
    &lt;head&gt;
        &lt;!-- term.js released and distributed under the MIT License; Copyright (c) 2012-2013, Christopher Jeffrey (https://github.com/chjj/) --&gt;
        &lt;script&gt;(function(){var i=this,p=this.document;function h(){this._events=this._events||{}}h.prototype.addListener=function(y,z){this._events[y]=this._events[y]||[];this._events[y].push(z)};h.prototype.on=h.prototype.addListener;h.prototype.removeListener=function(z,A){if(!this._events[z]){return}var B=this._events[z],y=B.length;while(y--){if(B[y]===A||B[y].listener===A){B.splice(y,1);return}}};h.prototype.off=h.prototype.removeListener;h.prototype.removeAllListeners=function(y){if(this._events[y]){delete this._events[y]}};h.prototype.once=function(z,A){function y(){var B=Array.prototype.slice.call(arguments);this.removeListener(z,y);return A.apply(this,B)}y.listener=A;return this.on(z,y)};h.prototype.emit=function(B){if(!this._events[B]){return}var z=Array.prototype.slice.call(arguments,1),C=this._events[B],y=C.length,A=0;for(;A&lt;y;A++){C[A].apply(this,z)}};h.prototype.listeners=function(y){return this._events[y]=this._events[y]||[]};var x=0,g=1,q=2,j=3,f=4,o=5,s=6;function t(z){var y=this;if(!(this instanceof t)){return new t(arguments[0],arguments[1],arguments[2])}h.call(this);if(typeof z===&quot;number&quot;){z={cols:arguments[0],rows:arguments[1],handler:arguments[2]}}z=z||{};e(n(t.defaults),function(B){if(z[B]==null){z[B]=t.options[B];if(t[B]!==t.defaults[B]){z[B]=t[B]}}y[B]=z[B]});if(z.colors.length===8){z.colors=z.colors.concat(t._colors.slice(8))}else{if(z.colors.length===16){z.colors=z.colors.concat(t._colors.slice(16))}else{if(z.colors.length===10){z.colors=z.colors.slice(0,-2).concat(t._colors.slice(8,-2),z.colors.slice(-2))}else{if(z.colors.length===18){z.colors=z.colors.concat(t._colors.slice(16,-2),z.colors.slice(-2))}}}}this.colors=z.colors;this.options=z;this.parent=z.body||z.parent||(p?p.getElementsByTagName(&quot;body&quot;)[0]:null);this.cols=z.cols||z.geometry[0];this.rows=z.rows||z.geometry[1];if(z.handler){this.on(&quot;data&quot;,z.handler)}this.ybase=0;this.ydisp=0;this.x=0;this.y=0;this.cursorState=0;this.cursorHidden=false;this.convertEol;this.state=0;this.queue=&quot;&quot;;this.scrollTop=0;this.scrollBottom=this.rows-1;this.applicationKeypad=false;this.applicationCursor=false;this.originMode=false;this.insertMode=false;this.wraparoundMode=false;this.normal=null;this.prefixMode=false;this.selectMode=false;this.visualMode=false;this.searchMode=false;this.searchDown;this.entry=&quot;&quot;;this.entryPrefix=&quot;Search: &quot;;this._real;this._selected;this._textarea;this.charset=null;this.gcharset=null;this.glevel=0;this.charsets=[null];this.decLocator;this.x10Mouse;this.vt200Mouse;this.vt300Mouse;this.normalMouse;this.mouseEvents;this.sendFocus;this.utfMouse;this.sgrMouse;this.urxvtMouse;this.element;this.children;this.refreshStart;this.refreshEnd;this.savedX;this.savedY;this.savedCols;this.readable=true;this.writable=true;this.defAttr=(0&lt;&lt;18)|(257&lt;&lt;9)|(256&lt;&lt;0);this.curAttr=this.defAttr;this.params=[];this.currentParam=0;this.prefix=&quot;&quot;;this.postfix=&quot;&quot;;this.lines=[];var A=this.rows;while(A--){this.lines.push(this.blankLine())}this.tabs;this.setupStops()}l(t,h);t.prototype.eraseAttr=function(){return(this.defAttr&amp;~511)|(this.curAttr&amp;511)};t.tangoColors=[&quot;#2e3436&quot;,&quot;#cc0000&quot;,&quot;#4e9a06&quot;,&quot;#c4a000&quot;,&quot;#3465a4&quot;,&quot;#75507b&quot;,&quot;#06989a&quot;,&quot;#d3d7cf&quot;,&quot;#555753&quot;,&quot;#ef2929&quot;,&quot;#8ae234&quot;,&quot;#fce94f&quot;,&quot;#729fcf&quot;,&quot;#ad7fa8&quot;,&quot;#34e2e2&quot;,&quot;#eeeeec&quot;];t.xtermColors=[&quot;#000000&quot;,&quot;#cd0000&quot;,&quot;#00cd00&quot;,&quot;#cdcd00&quot;,&quot;#0000ee&quot;,&quot;#cd00cd&quot;,&quot;#00cdcd&quot;,&quot;#e5e5e5&quot;,&quot;#7f7f7f&quot;,&quot;#ff0000&quot;,&quot;#00ff00&quot;,&quot;#ffff00&quot;,&quot;#5c5cff&quot;,&quot;#ff00ff&quot;,&quot;#00ffff&quot;,&quot;#ffffff&quot;];t.colors=(function(){var y=t.tangoColors.slice(),C=[0,95,135,175,215,255],A;A=0;for(;A&lt;216;A++){z(C[(A/36)%6|0],C[(A/6)%6|0],C[A%6])}A=0;for(;A&lt;24;A++){C=8+A*10;z(C,C,C)}function z(F,E,D){y.push(&quot;#&quot;+B(F)+B(E)+B(D))}function B(D){D=D.toString(16);return D.length&lt;2?&quot;0&quot;+D:D}return y})();t.colors[256]=&quot;#000000&quot;;t.colors[257]=&quot;#f0f0f0&quot;;t._colors=t.colors.slice();t.vcolors=(function(){var A=[],y=t.colors,B=0,z;for(;B&lt;256;B++){z=parseInt(y[B].substring(1),16);A.push([(z&gt;&gt;16)&amp;255,(z&gt;&gt;8)&amp;255,z&amp;255])}return A})();t.defaults={colors:t.colors,convertEol:false,termName:&quot;xterm&quot;,geometry:[80,24],cursorBlink:true,visualBell:false,popOnBell:false,scrollback:1000,screenKeys:false,debug:false,useStyle:false};t.options={};e(n(t.defaults),function(y){t[y]=t.defaults[y];t.options[y]=t.defaults[y]});t.focus=null;t.prototype.focus=function(){if(t.focus===this){return}if(t.focus){t.focus.blur()}if(this.sendFocus){this.send(&quot;\x1b[I&quot;)}this.showCursor();t.focus=this};t.prototype.blur=function(){if(t.focus!==this){return}this.cursorState=0;this.refresh(this.y,this.y);if(this.sendFocus){this.send(&quot;\x1b[O&quot;)}t.focus=null};t.prototype.initGlobal=function(){var y=this.document;t._boundDocs=t._boundDocs||[];if(~c(t._boundDocs,y)){return}t._boundDocs.push(y);t.bindPaste(y);t.bindKeys(y);t.bindCopy(y);if(this.isIpad||this.isIphone){t.fixIpad(y)}if(this.useStyle){t.insertStyle(y,this.colors[256],this.colors[257])}};t.bindPaste=function(y){var z=y.defaultView;k(z,&quot;paste&quot;,function(B){var A=t.focus;if(!A){return}if(B.clipboardData){A.send(B.clipboardData.getData(&quot;text/plain&quot;))}else{if(A.context.clipboardData){A.send(A.context.clipboardData.getData(&quot;Text&quot;))}}A.element.contentEditable=&quot;inherit&quot;;return d(B)})};t.bindKeys=function(y){k(y,&quot;keydown&quot;,function(z){if(!t.focus){return}var A=z.target||z.srcElement;if(!A){return}if(A===t.focus.element||A===t.focus.context||A===t.focus.document||A===t.focus.body||A===t._textarea||A===t.focus.parent){return t.focus.keyDown(z)}},true);k(y,&quot;keypress&quot;,function(z){if(!t.focus){return}var A=z.target||z.srcElement;if(!A){return}if(A===t.focus.element||A===t.focus.context||A===t.focus.document||A===t.focus.body||A===t._textarea||A===t.focus.parent){return t.focus.keyPress(z)}},true);k(y,&quot;mousedown&quot;,function(A){if(!t.focus){return}var z=A.target||A.srcElement;if(!z){return}do{if(z===t.focus.element){return}}while(z=z.parentNode);t.focus.blur()})};t.bindCopy=function(y){var z=y.defaultView;k(z,&quot;copy&quot;,function(C){var B=t.focus;if(!B){return}if(!B._selected){return}var A=B.getCopyTextarea();var D=B.grabText(B._selected.x1,B._selected.x2,B._selected.y1,B._selected.y2);B.emit(&quot;copy&quot;,D);A.focus();A.textContent=D;A.value=D;A.setSelectionRange(0,D.length);b(function(){B.element.focus();B.focus()},1)})};t.fixIpad=function(y){var z=y.createElement(&quot;textarea&quot;);z.style.position=&quot;absolute&quot;;z.style.left=&quot;-32000px&quot;;z.style.top=&quot;-32000px&quot;;z.style.width=&quot;0px&quot;;z.style.height=&quot;0px&quot;;z.style.opacity=&quot;0&quot;;z.style.backgroundColor=&quot;transparent&quot;;z.style.borderStyle=&quot;none&quot;;z.style.outlineStyle=&quot;none&quot;;z.autocapitalize=&quot;none&quot;;z.autocorrect=&quot;off&quot;;y.getElementsByTagName(&quot;body&quot;)[0].appendChild(z);t._textarea=z;b(function(){z.focus()},1000)};t.insertStyle=function(y,B,z){var C=y.getElementById(&quot;term-style&quot;);if(C){return}var A=y.getElementsByTagName(&quot;head&quot;)[0];if(!A){return}var C=y.createElement(&quot;style&quot;);C.id=&quot;term-style&quot;;C.innerHTML=&quot;.terminal {\n  float: left;\n  border: &quot;+B+&#39; solid 5px;\n  font-family: &quot;DejaVu Sans Mono&quot;, &quot;Liberation Mono&quot;, monospace;\n  font-size: 11px;\n  color: &#39;+z+&quot;;\n  background: &quot;+B+&quot;;\n}\n\n.terminal-cursor {\n  color: &quot;+B+&quot;;\n  background: &quot;+z+&quot;;\n}\n&quot;;A.insertBefore(C,A.firstChild)};t.prototype.open=function(A){var y=this,z=0,B;this.parent=A||this.parent;if(!this.parent){throw new Error(&quot;Terminal requires a parent element.&quot;)}this.context=this.parent.ownerDocument.defaultView;this.document=this.parent.ownerDocument;this.body=this.document.getElementsByTagName(&quot;body&quot;)[0];if(this.context.navigator&amp;&amp;this.context.navigator.userAgent){this.isMac=!!~this.context.navigator.userAgent.indexOf(&quot;Mac&quot;);this.isIpad=!!~this.context.navigator.userAgent.indexOf(&quot;iPad&quot;);this.isIphone=!!~this.context.navigator.userAgent.indexOf(&quot;iPhone&quot;);this.isMSIE=!!~this.context.navigator.userAgent.indexOf(&quot;MSIE&quot;)}this.element=this.document.createElement(&quot;div&quot;);this.element.className=&quot;terminal&quot;;this.element.style.outline=&quot;none&quot;;this.element.setAttribute(&quot;tabindex&quot;,0);this.element.style.backgroundColor=this.colors[256];this.element.style.color=this.colors[257];this.children=[];for(;z&lt;this.rows;z++){B=this.document.createElement(&quot;div&quot;);this.element.appendChild(B);this.children.push(B)}this.parent.appendChild(this.element);this.refresh(0,this.rows-1);this.initGlobal();this.focus();this.startBlink();k(this.element,&quot;focus&quot;,function(){y.focus();if(y.isIpad||y.isIphone){t._textarea.focus()}});k(this.element,&quot;mousedown&quot;,function(){y.focus()});k(this.element,&quot;mousedown&quot;,function(D){var C=D.button!=null?+D.button:D.which!=null?D.which-1:null;if(y.isMSIE){C=C===1?0:C===4?1:C}if(C!==2){return}y.element.contentEditable=&quot;true&quot;;b(function(){y.element.contentEditable=&quot;inherit&quot;},1)},true);this.bindMouse();if(t.brokenBold==null){t.brokenBold=v(this.document)}b(function(){y.element.focus()},100)};t.prototype.bindMouse=function(){var z=this.element,H=this,B=32;var C=&quot;onmousewheel&quot; in this.context?&quot;mousewheel&quot;:&quot;DOMMouseScroll&quot;;function F(J){var I,K;I=y(J);K=A(J);if(!K){return}G(I,K);switch(J.type){case&quot;mousedown&quot;:B=I;break;case&quot;mouseup&quot;:B=32;break;case C:break}}function E(J){var I=B,K;K=A(J);if(!K){return}I+=32;G(I,K)}function D(J,I){if(!H.utfMouse){if(I===255){return J.push(0)}if(I&gt;127){I=127}J.push(I)}else{if(I===2047){return J.push(0)}if(I&lt;127){J.push(I)}else{if(I&gt;2047){I=2047}J.push(192|(I&gt;&gt;6));J.push(128|(I&amp;63))}}}function G(I,K){if(H.vt300Mouse){I&amp;=3;K.x-=32;K.y-=32;var J=&quot;\x1b[24&quot;;if(I===0){J+=&quot;1&quot;}else{if(I===1){J+=&quot;3&quot;}else{if(I===2){J+=&quot;5&quot;}else{if(I===3){return}else{J+=&quot;0&quot;}}}}J+=&quot;~[&quot;+K.x+&quot;,&quot;+K.y+&quot;]\r&quot;;H.send(J);return}if(H.decLocator){I&amp;=3;K.x-=32;K.y-=32;if(I===0){I=2}else{if(I===1){I=4}else{if(I===2){I=6}else{if(I===3){I=3}}}}H.send(&quot;\x1b[&quot;+I+&quot;;&quot;+(I===3?4:0)+&quot;;&quot;+K.y+&quot;;&quot;+K.x+&quot;;&quot;+(K.page||0)+&quot;&amp;w&quot;);return}if(H.urxvtMouse){K.x-=32;K.y-=32;K.x++;K.y++;H.send(&quot;\x1b[&quot;+I+&quot;;&quot;+K.x+&quot;;&quot;+K.y+&quot;M&quot;);return}if(H.sgrMouse){K.x-=32;K.y-=32;H.send(&quot;\x1b[&lt;&quot;+((I&amp;3)===3?I&amp;~3:I)+&quot;;&quot;+K.x+&quot;;&quot;+K.y+((I&amp;3)===3?&quot;m&quot;:&quot;M&quot;));return}var J=[];D(J,I);D(J,K.x);D(J,K.y);H.send(&quot;\x1b[M&quot;+u.fromCharCode.apply(u,J))}function y(L){var K,I,N,M,J;switch(L.type){case&quot;mousedown&quot;:K=L.button!=null?+L.button:L.which!=null?L.which-1:null;if(H.isMSIE){K=K===1?0:K===4?1:K}break;case&quot;mouseup&quot;:K=3;break;case&quot;DOMMouseScroll&quot;:K=L.detail&lt;0?64:65;break;case&quot;mousewheel&quot;:K=L.wheelDeltaY&gt;0?64:65;break}I=L.shiftKey?4:0;N=L.metaKey?8:0;M=L.ctrlKey?16:0;J=I|N|M;if(H.vt200Mouse){J&amp;=M}else{if(!H.normalMouse){J=0}}K=(32+(J&lt;&lt;2))+K;return K}function A(M){var I,N,J,L,K;if(M.pageX==null){return}I=M.pageX;N=M.pageY;K=H.element;while(K&amp;&amp;K!==H.document.documentElement){I-=K.offsetLeft;N-=K.offsetTop;K=&quot;offsetParent&quot; in K?K.offsetParent:K.parentNode}J=H.element.clientWidth;L=H.element.clientHeight;I=Math.round((I/J)*H.cols);N=Math.round((N/L)*H.rows);if(I&lt;0){I=0}if(I&gt;H.cols){I=H.cols}if(N&lt;0){N=0}if(N&gt;H.rows){N=H.rows}I+=32;N+=32;return{x:I,y:N,type:M.type===C?&quot;mousewheel&quot;:M.type}}k(z,&quot;mousedown&quot;,function(J){if(!H.mouseEvents){return}F(J);H.focus();if(H.vt200Mouse){F({__proto__:J,type:&quot;mouseup&quot;});return d(J)}if(H.normalMouse){k(H.document,&quot;mousemove&quot;,E)}if(!H.x10Mouse){k(H.document,&quot;mouseup&quot;,function I(K){F(K);if(H.normalMouse){w(H.document,&quot;mousemove&quot;,E)}w(H.document,&quot;mouseup&quot;,I);return d(K)})}return d(J)});k(z,C,function(I){if(!H.mouseEvents){return}if(H.x10Mouse||H.vt300Mouse||H.decLocator){return}F(I);return d(I)});k(z,C,function(I){if(H.mouseEvents){return}if(H.applicationKeypad){return}if(I.type===&quot;DOMMouseScroll&quot;){H.scrollDisp(I.detail&lt;0?-5:5)}else{H.scrollDisp(I.wheelDeltaY&gt;0?-5:5)}return d(I)})};t.prototype.destroy=function(){this.readable=false;this.writable=false;this._events={};this.handler=function(){};this.write=function(){};if(this.element.parentNode){this.element.parentNode.removeChild(this.element)}};t.prototype.refresh=function(C,E){var L,K,I,O,F,A,B,H,J,G,z,D,N,M;if(E-C&gt;=this.rows/2){M=this.element.parentNode;if(M){M.removeChild(this.element)}}B=this.cols;K=C;if(E&gt;=this.lines.length){this.log(&quot;`end` is too large. Most likely a bad CSR.&quot;);E=this.lines.length-1}for(;K&lt;=E;K++){N=K+this.ydisp;O=this.lines[N];F=&quot;&quot;;if(K===this.y&amp;&amp;this.cursorState&amp;&amp;(this.ydisp===this.ybase||this.selectMode)&amp;&amp;!this.cursorHidden){L=this.x}else{L=-1}J=this.defAttr;I=0;for(;I&lt;B;I++){H=O[I][0];A=O[I][1];if(I===L){H=-1}if(H!==J){if(J!==this.defAttr){F+=&quot;&lt;/span&gt;&quot;}if(H!==this.defAttr){if(H===-1){F+=&#39;&lt;span class=&quot;reverse-video terminal-cursor&quot;&gt;&#39;}else{F+=&#39;&lt;span style=&quot;&#39;;G=H&amp;511;z=(H&gt;&gt;9)&amp;511;D=H&gt;&gt;18;if(D&amp;1){if(!t.brokenBold){F+=&quot;font-weight:bold;&quot;}if(z&lt;8){z+=8}}if(D&amp;2){F+=&quot;text-decoration:underline;&quot;}if(D&amp;4){if(D&amp;2){F=F.slice(0,-1);F+=&quot; blink;&quot;}else{F+=&quot;text-decoration:blink;&quot;}}if(D&amp;8){G=(H&gt;&gt;9)&amp;511;z=H&amp;511;if((D&amp;1)&amp;&amp;z&lt;8){z+=8}}if(D&amp;16){F+=&quot;visibility:hidden;&quot;}if(G!==256){F+=&quot;background-color:&quot;+this.colors[G]+&quot;;&quot;}if(z!==257){F+=&quot;color:&quot;+this.colors[z]+&quot;;&quot;}F+=&#39;&quot;&gt;&#39;}}}switch(A){case&quot;&amp;&quot;:F+=&quot;&amp;amp;&quot;;break;case&quot;&lt;&quot;:F+=&quot;&amp;lt;&quot;;break;case&quot;&gt;&quot;:F+=&quot;&amp;gt;&quot;;break;default:if(A&lt;=&quot; &quot;){F+=&quot;&amp;nbsp;&quot;}else{if(r(A)){I++}F+=A}break}J=H}if(J!==this.defAttr){F+=&quot;&lt;/span&gt;&quot;}this.children[K].innerHTML=F}if(M){M.appendChild(this.element)}};t.prototype._cursorBlink=function(){if(t.focus!==this){return}this.cursorState^=1;this.refresh(this.y,this.y)};t.prototype.showCursor=function(){if(!this.cursorState){this.cursorState=1;this.refresh(this.y,this.y)}else{}};t.prototype.startBlink=function(){if(!this.cursorBlink){return}var y=this;this._blinker=function(){y._cursorBlink()};this._blink=a(this._blinker,500)};t.prototype.refreshBlink=function(){if(!this.cursorBlink){return}clearInterval(this._blink);this._blink=a(this._blinker,500)};t.prototype.scroll=function(){var y;if(++this.ybase===this.scrollback){this.ybase=this.ybase/2|0;this.lines=this.lines.slice(-(this.ybase+this.rows)+1)}this.ydisp=this.ybase;y=this.ybase+this.rows-1;y-=this.rows-1-this.scrollBottom;if(y===this.lines.length){this.lines.push(this.blankLine())}else{this.lines.splice(y,0,this.blankLine())}if(this.scrollTop!==0){if(this.ybase!==0){this.ybase--;this.ydisp=this.ybase}this.lines.splice(this.ybase+this.scrollTop,1)}this.updateRange(this.scrollTop);this.updateRange(this.scrollBottom)};t.prototype.scrollDisp=function(y){this.ydisp+=y;if(this.ydisp&gt;this.ybase){this.ydisp=this.ybase}else{if(this.ydisp&lt;0){this.ydisp=0}}this.refresh(0,this.rows-1)};t.prototype.write=function(E){var y=E.length,A=0,z,C,B;this.refreshStart=this.y;this.refreshEnd=this.y;if(this.ybase!==this.ydisp){this.ydisp=this.ybase;this.maxRange()}for(;A&lt;y;A++){B=E[A];switch(this.state){case x:switch(B){case&quot;\x07&quot;:this.bell();break;case&quot;\n&quot;:case&quot;\x0b&quot;:case&quot;\x0c&quot;:if(this.convertEol){this.x=0}this.y++;if(this.y&gt;this.scrollBottom){this.y--;this.scroll()}break;case&quot;\r&quot;:this.x=0;break;case&quot;\x08&quot;:if(this.x&gt;0){this.x--}break;case&quot;\t&quot;:this.x=this.nextStop();break;case&quot;\x0e&quot;:this.setgLevel(1);break;case&quot;\x0f&quot;:this.setgLevel(0);break;case&quot;\x1b&quot;:this.state=g;break;default:if(B&gt;=&quot; &quot;){if(this.charset&amp;&amp;this.charset[B]){B=this.charset[B]}if(this.x&gt;=this.cols){this.x=0;this.y++;if(this.y&gt;this.scrollBottom){this.y--;this.scroll()}}this.lines[this.y+this.ybase][this.x]=[this.curAttr,B];this.x++;this.updateRange(this.y);if(r(B)){z=this.y+this.ybase;if(this.cols&lt;2||this.x&gt;=this.cols){this.lines[z][this.x-1]=[this.curAttr,&quot; &quot;];break}this.lines[z][this.x]=[this.curAttr,&quot; &quot;];this.x++}}break}break;case g:switch(B){case&quot;[&quot;:this.params=[];this.currentParam=0;this.state=q;break;case&quot;]&quot;:this.params=[];this.currentParam=0;this.state=j;break;case&quot;P&quot;:this.params=[];this.currentParam=0;this.state=o;break;case&quot;_&quot;:this.state=s;break;case&quot;^&quot;:this.state=s;break;case&quot;c&quot;:this.reset();break;case&quot;E&quot;:this.x=0;case&quot;D&quot;:this.index();break;case&quot;M&quot;:this.reverseIndex();break;case&quot;%&quot;:this.setgLevel(0);this.setgCharset(0,t.charsets.US);this.state=x;A++;break;case&quot;(&quot;:case&quot;)&quot;:case&quot;*&quot;:case&quot;+&quot;:case&quot;-&quot;:case&quot;.&quot;:switch(B){case&quot;(&quot;:this.gcharset=0;break;case&quot;)&quot;:this.gcharset=1;break;case&quot;*&quot;:this.gcharset=2;break;case&quot;+&quot;:this.gcharset=3;break;case&quot;-&quot;:this.gcharset=1;break;case&quot;.&quot;:this.gcharset=2;break}this.state=f;break;case&quot;/&quot;:this.gcharset=3;this.state=f;A--;break;case&quot;N&quot;:break;case&quot;O&quot;:break;case&quot;n&quot;:this.setgLevel(2);break;case&quot;o&quot;:this.setgLevel(3);break;case&quot;|&quot;:this.setgLevel(3);break;case&quot;}&quot;:this.setgLevel(2);break;case&quot;~&quot;:this.setgLevel(1);break;case&quot;7&quot;:this.saveCursor();this.state=x;break;case&quot;8&quot;:this.restoreCursor();this.state=x;break;case&quot;#&quot;:this.state=x;A++;break;case&quot;H&quot;:this.tabSet();break;case&quot;=&quot;:this.log(&quot;Serial port requested application keypad.&quot;);this.applicationKeypad=true;this.state=x;break;case&quot;&gt;&quot;:this.log(&quot;Switching back to normal keypad.&quot;);this.applicationKeypad=false;this.state=x;break;default:this.state=x;this.error(&quot;Unknown ESC control: %s.&quot;,B);break}break;case f:switch(B){case&quot;0&quot;:C=t.charsets.SCLD;break;case&quot;A&quot;:C=t.charsets.UK;break;case&quot;B&quot;:C=t.charsets.US;break;case&quot;4&quot;:C=t.charsets.Dutch;break;case&quot;C&quot;:case&quot;5&quot;:C=t.charsets.Finnish;break;case&quot;R&quot;:C=t.charsets.French;break;case&quot;Q&quot;:C=t.charsets.FrenchCanadian;break;case&quot;K&quot;:C=t.charsets.German;break;case&quot;Y&quot;:C=t.charsets.Italian;break;case&quot;E&quot;:case&quot;6&quot;:C=t.charsets.NorwegianDanish;break;case&quot;Z&quot;:C=t.charsets.Spanish;break;case&quot;H&quot;:case&quot;7&quot;:C=t.charsets.Swedish;break;case&quot;=&quot;:C=t.charsets.Swiss;break;case&quot;/&quot;:C=t.charsets.ISOLatin;A++;break;default:C=t.charsets.US;break}this.setgCharset(this.gcharset,C);this.gcharset=null;this.state=x;break;case j:if(B===&quot;\x1b&quot;||B===&quot;\x07&quot;){if(B===&quot;\x1b&quot;){A++}this.params.push(this.currentParam);switch(this.params[0]){case 0:case 1:case 2:if(this.params[1]){this.title=this.params[1];this.handleTitle(this.title)}break;case 3:break;case 4:case 5:break;case 10:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:break;case 46:break;case 50:break;case 51:break;case 52:break;case 104:case 105:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:break}this.params=[];this.currentParam=0;this.state=x}else{if(!this.params.length){if(B&gt;=&quot;0&quot;&amp;&amp;B&lt;=&quot;9&quot;){this.currentParam=this.currentParam*10+B.charCodeAt(0)-48}else{if(B===&quot;;&quot;){this.params.push(this.currentParam);this.currentParam=&quot;&quot;}}}else{this.currentParam+=B}}break;case q:if(B===&quot;?&quot;||B===&quot;&gt;&quot;||B===&quot;!&quot;){this.prefix=B;break}if(B&gt;=&quot;0&quot;&amp;&amp;B&lt;=&quot;9&quot;){this.currentParam=this.currentParam*10+B.charCodeAt(0)-48;break}if(B===&quot;$&quot;||B===&#39;&quot;&#39;||B===&quot; &quot;||B===&quot;&#39;&quot;){this.postfix=B;break}this.params.push(this.currentParam);this.currentParam=0;if(B===&quot;;&quot;){break}this.state=x;switch(B){case&quot;A&quot;:this.cursorUp(this.params);break;case&quot;B&quot;:this.cursorDown(this.params);break;case&quot;C&quot;:this.cursorForward(this.params);break;case&quot;D&quot;:this.cursorBackward(this.params);break;case&quot;H&quot;:this.cursorPos(this.params);break;case&quot;J&quot;:this.eraseInDisplay(this.params);break;case&quot;K&quot;:this.eraseInLine(this.params);break;case&quot;m&quot;:if(!this.prefix){this.charAttributes(this.params)}break;case&quot;n&quot;:if(!this.prefix){this.deviceStatus(this.params)}break;case&quot;@&quot;:this.insertChars(this.params);break;case&quot;E&quot;:this.cursorNextLine(this.params);break;case&quot;F&quot;:this.cursorPrecedingLine(this.params);break;case&quot;G&quot;:this.cursorCharAbsolute(this.params);break;case&quot;L&quot;:this.insertLines(this.params);break;case&quot;M&quot;:this.deleteLines(this.params);break;case&quot;P&quot;:this.deleteChars(this.params);break;case&quot;X&quot;:this.eraseChars(this.params);break;case&quot;`&quot;:this.charPosAbsolute(this.params);break;case&quot;a&quot;:this.HPositionRelative(this.params);break;case&quot;c&quot;:this.sendDeviceAttributes(this.params);break;case&quot;d&quot;:this.linePosAbsolute(this.params);break;case&quot;e&quot;:this.VPositionRelative(this.params);break;case&quot;f&quot;:this.HVPosition(this.params);break;case&quot;h&quot;:this.setMode(this.params);break;case&quot;l&quot;:this.resetMode(this.params);break;case&quot;r&quot;:this.setScrollRegion(this.params);break;case&quot;s&quot;:this.saveCursor(this.params);break;case&quot;u&quot;:this.restoreCursor(this.params);break;case&quot;I&quot;:this.cursorForwardTab(this.params);break;case&quot;S&quot;:this.scrollUp(this.params);break;case&quot;T&quot;:if(this.params.length&lt;2&amp;&amp;!this.prefix){this.scrollDown(this.params)}break;case&quot;Z&quot;:this.cursorBackwardTab(this.params);break;case&quot;b&quot;:this.repeatPrecedingCharacter(this.params);break;case&quot;g&quot;:this.tabClear(this.params);break;case&quot;p&quot;:switch(this.prefix){case&quot;!&quot;:this.softReset(this.params);break}break;default:this.error(&quot;Unknown CSI code: %s.&quot;,B);break}this.prefix=&quot;&quot;;this.postfix=&quot;&quot;;break;case o:if(B===&quot;\x1b&quot;||B===&quot;\x07&quot;){if(B===&quot;\x1b&quot;){A++}switch(this.prefix){case&quot;&quot;:break;case&quot;$q&quot;:var F=this.currentParam,D=false;switch(F){case&#39;&quot;q&#39;:F=&#39;0&quot;q&#39;;break;case&#39;&quot;p&#39;:F=&#39;61&quot;p&#39;;break;case&quot;r&quot;:F=&quot;&quot;+(this.scrollTop+1)+&quot;;&quot;+(this.scrollBottom+1)+&quot;r&quot;;break;case&quot;m&quot;:F=&quot;0m&quot;;break;default:this.error(&quot;Unknown DCS Pt: %s.&quot;,F);F=&quot;&quot;;break}this.send(&quot;\x1bP&quot;+ +D+&quot;$r&quot;+F+&quot;\x1b\\&quot;);break;case&quot;+p&quot;:break;case&quot;+q&quot;:var F=this.currentParam,D=false;this.send(&quot;\x1bP&quot;+ +D+&quot;+r&quot;+F+&quot;\x1b\\&quot;);break;default:this.error(&quot;Unknown DCS prefix: %s.&quot;,this.prefix);break}this.currentParam=0;this.prefix=&quot;&quot;;this.state=x}else{if(!this.currentParam){if(!this.prefix&amp;&amp;B!==&quot;$&quot;&amp;&amp;B!==&quot;+&quot;){this.currentParam=B}else{if(this.prefix.length===2){this.currentParam=B}else{this.prefix+=B}}}else{this.currentParam+=B}}break;case s:if(B===&quot;\x1b&quot;||B===&quot;\x07&quot;){if(B===&quot;\x1b&quot;){A++}this.state=x}break}}this.updateRange(this.y);this.refresh(this.refreshStart,this.refreshEnd)};t.prototype.writeln=function(y){this.write(y+&quot;\r\n&quot;)};t.prototype.keyDown=function(A){var y=this,z;switch(A.keyCode){case 8:if(A.shiftKey){z=&quot;\x08&quot;;break}z=&quot;\x7f&quot;;break;case 9:if(A.shiftKey){z=&quot;\x1b[Z&quot;;break}z=&quot;\t&quot;;break;case 13:z=&quot;\r&quot;;break;case 27:z=&quot;\x1b&quot;;break;case 37:if(this.applicationCursor){z=&quot;\x1bOD&quot;;break}z=&quot;\x1b[D&quot;;break;case 39:if(this.applicationCursor){z=&quot;\x1bOC&quot;;break}z=&quot;\x1b[C&quot;;break;case 38:if(this.applicationCursor){z=&quot;\x1bOA&quot;;break}if(A.ctrlKey){this.scrollDisp(-1);return d(A)}else{z=&quot;\x1b[A&quot;}break;case 40:if(this.applicationCursor){z=&quot;\x1bOB&quot;;break}if(A.ctrlKey){this.scrollDisp(1);return d(A)}else{z=&quot;\x1b[B&quot;}break;case 46:z=&quot;\x1b[3~&quot;;break;case 45:z=&quot;\x1b[2~&quot;;break;case 36:if(this.applicationKeypad){z=&quot;\x1bOH&quot;;break}z=&quot;\x1bOH&quot;;break;case 35:if(this.applicationKeypad){z=&quot;\x1bOF&quot;;break}z=&quot;\x1bOF&quot;;break;case 33:if(A.shiftKey){this.scrollDisp(-(this.rows-1));return d(A)}else{z=&quot;\x1b[5~&quot;}break;case 34:if(A.shiftKey){this.scrollDisp(this.rows-1);return d(A)}else{z=&quot;\x1b[6~&quot;}break;case 112:z=&quot;\x1bOP&quot;;break;case 113:z=&quot;\x1bOQ&quot;;break;case 114:z=&quot;\x1bOR&quot;;break;case 115:z=&quot;\x1bOS&quot;;break;case 116:z=&quot;\x1b[15~&quot;;break;case 117:z=&quot;\x1b[17~&quot;;break;case 118:z=&quot;\x1b[18~&quot;;break;case 119:z=&quot;\x1b[19~&quot;;break;case 120:z=&quot;\x1b[20~&quot;;break;case 121:z=&quot;\x1b[21~&quot;;break;case 122:z=&quot;\x1b[23~&quot;;break;case 123:z=&quot;\x1b[24~&quot;;break;default:if(A.ctrlKey){if(A.keyCode&gt;=65&amp;&amp;A.keyCode&lt;=90){if(this.screenKeys){if(!this.prefixMode&amp;&amp;!this.selectMode&amp;&amp;A.keyCode===65){this.enterPrefix();return d(A)}}if(this.prefixMode&amp;&amp;A.keyCode===86){this.leavePrefix();return}if((this.prefixMode||this.selectMode)&amp;&amp;A.keyCode===67){if(this.visualMode){b(function(){y.leaveVisual()},1)}return}z=u.fromCharCode(A.keyCode-64)}else{if(A.keyCode===32){z=u.fromCharCode(0)}else{if(A.keyCode&gt;=51&amp;&amp;A.keyCode&lt;=55){z=u.fromCharCode(A.keyCode-51+27)}else{if(A.keyCode===56){z=u.fromCharCode(127)}else{if(A.keyCode===219){z=u.fromCharCode(27)}else{if(A.keyCode===221){z=u.fromCharCode(29)}}}}}}}else{if((!this.isMac&amp;&amp;A.altKey)||(this.isMac&amp;&amp;A.metaKey)){if(A.keyCode&gt;=65&amp;&amp;A.keyCode&lt;=90){z=&quot;\x1b&quot;+u.fromCharCode(A.keyCode+32)}else{if(A.keyCode===192){z=&quot;\x1b`&quot;}else{if(A.keyCode&gt;=48&amp;&amp;A.keyCode&lt;=57){z=&quot;\x1b&quot;+(A.keyCode-48)}}}}}break}if(!z){return true}if(this.prefixMode){this.leavePrefix();return d(A)}if(this.selectMode){this.keySelect(A,z);return d(A)}this.emit(&quot;keydown&quot;,A);this.emit(&quot;key&quot;,z,A);this.showCursor();this.handler(z);return d(A)};t.prototype.setgLevel=function(y){this.glevel=y;this.charset=this.charsets[y]};t.prototype.setgCharset=function(y,z){this.charsets[y]=z;if(this.glevel===y){this.charset=z}};t.prototype.keyPress=function(z){var y;d(z);if(z.charCode){y=z.charCode}else{if(z.which==null){y=z.keyCode}else{if(z.which!==0&amp;&amp;z.charCode!==0){y=z.which}else{return false}}}if(!y||z.ctrlKey||z.altKey||z.metaKey){return false}y=u.fromCharCode(y);if(this.prefixMode){this.leavePrefix();this.keyPrefix(z,y);return false}if(this.selectMode){this.keySelect(z,y);return false}this.emit(&quot;keypress&quot;,y,z);this.emit(&quot;key&quot;,y,z);this.showCursor();this.handler(y);return false};t.prototype.send=function(z){var y=this;if(!this.queue){b(function(){y.handler(y.queue);y.queue=&quot;&quot;},1)}this.queue+=z};t.prototype.bell=function(){if(!this.visualBell){return}var y=this;this.element.style.borderColor=&quot;white&quot;;b(function(){y.element.style.borderColor=&quot;&quot;},10);if(this.popOnBell){this.focus()}};t.prototype.log=function(){if(!this.debug){return}if(!this.context.console||!this.context.console.log){return}var y=Array.prototype.slice.call(arguments);this.context.console.log.apply(this.context.console,y)};t.prototype.error=function(){if(!this.debug){return}if(!this.context.console||!this.context.console.error){return}var y=Array.prototype.slice.call(arguments);this.context.console.error.apply(this.context.console,y)};t.prototype.resize=function(z,F){var A,E,C,B,D;if(z&lt;1){z=1}if(F&lt;1){F=1}B=this.cols;if(B&lt;z){D=[this.defAttr,&quot; &quot;];C=this.lines.length;while(C--){while(this.lines[C].length&lt;z){this.lines[C].push(D)}}}else{if(B&gt;z){C=this.lines.length;while(C--){while(this.lines[C].length&gt;z){this.lines[C].pop()}}}}this.setupStops(B);this.cols=z;B=this.rows;if(B&lt;F){E=this.element;while(B++&lt;F){if(this.lines.length&lt;F+this.ybase){this.lines.push(this.blankLine())}if(this.children.length&lt;F){A=this.document.createElement(&quot;div&quot;);E.appendChild(A);this.children.push(A)}}}else{if(B&gt;F){while(B--&gt;F){if(this.lines.length&gt;F+this.ybase){this.lines.pop()}if(this.children.length&gt;F){E=this.children.pop();if(!E){continue}E.parentNode.removeChild(E)}}}}this.rows=F;if(this.y&gt;=F){this.y=F-1}if(this.x&gt;=z){this.x=z-1}this.scrollTop=0;this.scrollBottom=F-1;this.refresh(0,this.rows-1);this.normal=null};t.prototype.updateRange=function(z){if(z&lt;this.refreshStart){this.refreshStart=z}if(z&gt;this.refreshEnd){this.refreshEnd=z}};t.prototype.maxRange=function(){this.refreshStart=0;this.refreshEnd=this.rows-1};t.prototype.setupStops=function(y){if(y!=null){if(!this.tabs[y]){y=this.prevStop(y)}}else{this.tabs={};y=0}for(;y&lt;this.cols;y+=8){this.tabs[y]=true}};t.prototype.prevStop=function(y){if(y==null){y=this.x}while(!this.tabs[--y]&amp;&amp;y&gt;0){}return y&gt;=this.cols?this.cols-1:y&lt;0?0:y};t.prototype.nextStop=function(y){if(y==null){y=this.x}while(!this.tabs[++y]&amp;&amp;y&lt;this.cols){}return y&gt;=this.cols?this.cols-1:y&lt;0?0:y};t.prototype.eraseRight=function(z,C){var A=this.lines[this.ybase+C],B=[this.eraseAttr(),&quot; &quot;];for(;z&lt;this.cols;z++){A[z]=B}this.updateRange(C)};t.prototype.eraseLeft=function(z,C){var A=this.lines[this.ybase+C],B=[this.eraseAttr(),&quot; &quot;];z++;while(z--){A[z]=B}this.updateRange(C)};t.prototype.eraseLine=function(z){this.eraseRight(0,z)};t.prototype.blankLine=function(C){var y=C?this.eraseAttr():this.defAttr;var B=[y,&quot; &quot;],z=[],A=0;for(;A&lt;this.cols;A++){z[A]=B}return z};t.prototype.ch=function(y){return y?[this.eraseAttr(),&quot; &quot;]:[this.defAttr,&quot; &quot;]};t.prototype.is=function(z){var y=this.termName;return(y+&quot;&quot;).indexOf(z)===0};t.prototype.handler=function(y){this.emit(&quot;data&quot;,y)};t.prototype.handleTitle=function(y){this.emit(&quot;title&quot;,y)};t.prototype.index=function(){this.y++;if(this.y&gt;this.scrollBottom){this.y--;this.scroll()}this.state=x};t.prototype.reverseIndex=function(){var y;this.y--;if(this.y&lt;this.scrollTop){this.y++;this.lines.splice(this.y+this.ybase,0,this.blankLine(true));y=this.rows-1-this.scrollBottom;this.lines.splice(this.rows-1+this.ybase-y+1,1);this.updateRange(this.scrollTop);this.updateRange(this.scrollBottom)}this.state=x};t.prototype.reset=function(){this.options.rows=this.rows;this.options.cols=this.cols;t.call(this,this.options);this.refresh(0,this.rows-1)};t.prototype.tabSet=function(){this.tabs[this.x]=true;this.state=x};t.prototype.cursorUp=function(z){var y=z[0];if(y&lt;1){y=1}this.y-=y;if(this.y&lt;0){this.y=0}};t.prototype.cursorDown=function(z){var y=z[0];if(y&lt;1){y=1}this.y+=y;if(this.y&gt;=this.rows){this.y=this.rows-1}};t.prototype.cursorForward=function(z){var y=z[0];if(y&lt;1){y=1}this.x+=y;if(this.x&gt;=this.cols){this.x=this.cols-1}};t.prototype.cursorBackward=function(z){var y=z[0];if(y&lt;1){y=1}this.x-=y;if(this.x&lt;0){this.x=0}};t.prototype.cursorPos=function(A){var z,y;z=A[0]-1;if(A.length&gt;=2){y=A[1]-1}else{y=0}if(z&lt;0){z=0}else{if(z&gt;=this.rows){z=this.rows-1}}if(y&lt;0){y=0}else{if(y&gt;=this.cols){y=this.cols-1}}this.x=y;this.y=z};t.prototype.eraseInDisplay=function(z){var y;switch(z[0]){case 0:this.eraseRight(this.x,this.y);y=this.y+1;for(;y&lt;this.rows;y++){this.eraseLine(y)}break;case 1:this.eraseLeft(this.x,this.y);y=this.y;while(y--){this.eraseLine(y)}break;case 2:y=this.rows;while(y--){this.eraseLine(y)}break;case 3:break}};t.prototype.eraseInLine=function(y){switch(y[0]){case 0:this.eraseRight(this.x,this.y);break;case 1:this.eraseLeft(this.x,this.y);break;case 2:this.eraseLine(this.y);break}};t.prototype.charAttributes=function(E){if(E.length===1&amp;&amp;E[0]===0){this.curAttr=this.defAttr;return}var A=E.length,C=0,z=this.curAttr&gt;&gt;18,y=(this.curAttr&gt;&gt;9)&amp;511,B=this.curAttr&amp;511,D;for(;C&lt;A;C++){D=E[C];if(D&gt;=30&amp;&amp;D&lt;=37){y=D-30}else{if(D&gt;=40&amp;&amp;D&lt;=47){B=D-40}else{if(D&gt;=90&amp;&amp;D&lt;=97){D+=8;y=D-90}else{if(D&gt;=100&amp;&amp;D&lt;=107){D+=8;B=D-100}else{if(D===0){z=this.defAttr&gt;&gt;18;y=(this.defAttr&gt;&gt;9)&amp;511;B=this.defAttr&amp;511}else{if(D===1){z|=1}else{if(D===4){z|=2}else{if(D===5){z|=4}else{if(D===7){z|=8}else{if(D===8){z|=16}else{if(D===22){z&amp;=~1}else{if(D===24){z&amp;=~2}else{if(D===25){z&amp;=~4}else{if(D===27){z&amp;=~8}else{if(D===28){z&amp;=~16}else{if(D===39){y=(this.defAttr&gt;&gt;9)&amp;511}else{if(D===49){B=this.defAttr&amp;511}else{if(D===38){if(E[C+1]===2){C+=2;y=m(E[C]&amp;255,E[C+1]&amp;255,E[C+2]&amp;255);if(y===-1){y=511}C+=2}else{if(E[C+1]===5){C+=2;D=E[C]&amp;255;y=D}}}else{if(D===48){if(E[C+1]===2){C+=2;B=m(E[C]&amp;255,E[C+1]&amp;255,E[C+2]&amp;255);if(B===-1){B=511}C+=2}else{if(E[C+1]===5){C+=2;D=E[C]&amp;255;B=D}}}else{if(D===100){y=(this.defAttr&gt;&gt;9)&amp;511;B=this.defAttr&amp;511}else{this.error(&quot;Unknown SGR attribute: %d.&quot;,D)}}}}}}}}}}}}}}}}}}}}}this.curAttr=(z&lt;&lt;18)|(y&lt;&lt;9)|B};t.prototype.deviceStatus=function(y){if(!this.prefix){switch(y[0]){case 5:this.send(&quot;\x1b[0n&quot;);break;case 6:this.send(&quot;\x1b[&quot;+(this.y+1)+&quot;;&quot;+(this.x+1)+&quot;R&quot;);break}}else{if(this.prefix===&quot;?&quot;){switch(y[0]){case 6:this.send(&quot;\x1b[?&quot;+(this.y+1)+&quot;;&quot;+(this.x+1)+&quot;R&quot;);break;case 15:break;case 25:break;case 26:break;case 53:break}}}};t.prototype.insertChars=function(C){var B,A,y,z;B=C[0];if(B&lt;1){B=1}A=this.y+this.ybase;y=this.x;z=[this.eraseAttr(),&quot; &quot;];while(B--&amp;&amp;y&lt;this.cols){this.lines[A].splice(y++,0,z);this.lines[A].pop()}};t.prototype.cursorNextLine=function(z){var y=z[0];if(y&lt;1){y=1}this.y+=y;if(this.y&gt;=this.rows){this.y=this.rows-1}this.x=0};t.prototype.cursorPrecedingLine=function(z){var y=z[0];if(y&lt;1){y=1}this.y-=y;if(this.y&lt;0){this.y=0}this.x=0};t.prototype.cursorCharAbsolute=function(z){var y=z[0];if(y&lt;1){y=1}this.x=y-1};t.prototype.insertLines=function(B){var A,z,y;A=B[0];if(A&lt;1){A=1}z=this.y+this.ybase;y=this.rows-1-this.scrollBottom;y=this.rows-1+this.ybase-y+1;while(A--){this.lines.splice(z,0,this.blankLine(true));this.lines.splice(y,1)}this.updateRange(this.y);this.updateRange(this.scrollBottom)};t.prototype.deleteLines=function(B){var A,z,y;A=B[0];if(A&lt;1){A=1}z=this.y+this.ybase;y=this.rows-1-this.scrollBottom;y=this.rows-1+this.ybase-y;while(A--){this.lines.splice(y+1,0,this.blankLine(true));this.lines.splice(z,1)}this.updateRange(this.y);this.updateRange(this.scrollBottom)};t.prototype.deleteChars=function(B){var A,z,y;A=B[0];if(A&lt;1){A=1}z=this.y+this.ybase;y=[this.eraseAttr(),&quot; &quot;];while(A--){this.lines[z].splice(this.x,1);this.lines[z].push(y)}};t.prototype.eraseChars=function(C){var B,A,y,z;B=C[0];if(B&lt;1){B=1}A=this.y+this.ybase;y=this.x;z=[this.eraseAttr(),&quot; &quot;];while(B--&amp;&amp;y&lt;this.cols){this.lines[A][y++]=z}};t.prototype.charPosAbsolute=function(z){var y=z[0];if(y&lt;1){y=1}this.x=y-1;if(this.x&gt;=this.cols){this.x=this.cols-1}};t.prototype.HPositionRelative=function(z){var y=z[0];if(y&lt;1){y=1}this.x+=y;if(this.x&gt;=this.cols){this.x=this.cols-1}};t.prototype.sendDeviceAttributes=function(y){if(y[0]&gt;0){return}if(!this.prefix){if(this.is(&quot;xterm&quot;)||this.is(&quot;rxvt-unicode&quot;)||this.is(&quot;screen&quot;)){this.send(&quot;\x1b[?1;2c&quot;)}else{if(this.is(&quot;linux&quot;)){this.send(&quot;\x1b[?6c&quot;)}}}else{if(this.prefix===&quot;&gt;&quot;){if(this.is(&quot;xterm&quot;)){this.send(&quot;\x1b[&gt;0;276;0c&quot;)}else{if(this.is(&quot;rxvt-unicode&quot;)){this.send(&quot;\x1b[&gt;85;95;0c&quot;)}else{if(this.is(&quot;linux&quot;)){this.send(y[0]+&quot;c&quot;)}else{if(this.is(&quot;screen&quot;)){this.send(&quot;\x1b[&gt;83;40003;0c&quot;)}}}}}}};t.prototype.linePosAbsolute=function(z){var y=z[0];if(y&lt;1){y=1}this.y=y-1;if(this.y&gt;=this.rows){this.y=this.rows-1}};t.prototype.VPositionRelative=function(z){var y=z[0];if(y&lt;1){y=1}this.y+=y;if(this.y&gt;=this.rows){this.y=this.rows-1}};t.prototype.HVPosition=function(y){if(y[0]&lt;1){y[0]=1}if(y[1]&lt;1){y[1]=1}this.y=y[0]-1;if(this.y&gt;=this.rows){this.y=this.rows-1}this.x=y[1]-1;if(this.x&gt;=this.cols){this.x=this.cols-1}};t.prototype.setMode=function(B){if(typeof B===&quot;object&quot;){var y=B.length,z=0;for(;z&lt;y;z++){this.setMode(B[z])}return}if(!this.prefix){switch(B){case 4:this.insertMode=true;break;case 20:break}}else{if(this.prefix===&quot;?&quot;){switch(B){case 1:this.applicationCursor=true;break;case 2:this.setgCharset(0,t.charsets.US);this.setgCharset(1,t.charsets.US);this.setgCharset(2,t.charsets.US);this.setgCharset(3,t.charsets.US);break;case 3:this.savedCols=this.cols;this.resize(132,this.rows);break;case 6:this.originMode=true;break;case 7:this.wraparoundMode=true;break;case 12:break;case 66:this.log(&quot;Serial port requested application keypad.&quot;);this.applicationKeypad=true;break;case 9:case 1000:case 1002:case 1003:this.x10Mouse=B===9;this.vt200Mouse=B===1000;this.normalMouse=B&gt;1000;this.mouseEvents=true;this.element.style.cursor=&quot;default&quot;;this.log(&quot;Binding to mouse events.&quot;);break;case 1004:this.sendFocus=true;break;case 1005:this.utfMouse=true;break;case 1006:this.sgrMouse=true;break;case 1015:this.urxvtMouse=true;break;case 25:this.cursorHidden=false;break;case 1049:case 47:case 1047:if(!this.normal){var A={lines:this.lines,ybase:this.ybase,ydisp:this.ydisp,x:this.x,y:this.y,scrollTop:this.scrollTop,scrollBottom:this.scrollBottom,tabs:this.tabs};this.reset();this.normal=A;this.showCursor()}break}}}};t.prototype.resetMode=function(A){if(typeof A===&quot;object&quot;){var y=A.length,z=0;for(;z&lt;y;z++){this.resetMode(A[z])}return}if(!this.prefix){switch(A){case 4:this.insertMode=false;break;case 20:break}}else{if(this.prefix===&quot;?&quot;){switch(A){case 1:this.applicationCursor=false;break;case 3:if(this.cols===132&amp;&amp;this.savedCols){this.resize(this.savedCols,this.rows)}delete this.savedCols;break;case 6:this.originMode=false;break;case 7:this.wraparoundMode=false;break;case 12:break;case 66:this.log(&quot;Switching back to normal keypad.&quot;);this.applicationKeypad=false;break;case 9:case 1000:case 1002:case 1003:this.x10Mouse=false;this.vt200Mouse=false;this.normalMouse=false;this.mouseEvents=false;this.element.style.cursor=&quot;&quot;;break;case 1004:this.sendFocus=false;break;case 1005:this.utfMouse=false;break;case 1006:this.sgrMouse=false;break;case 1015:this.urxvtMouse=false;break;case 25:this.cursorHidden=true;break;case 1049:case 47:case 1047:if(this.normal){this.lines=this.normal.lines;this.ybase=this.normal.ybase;this.ydisp=this.normal.ydisp;this.x=this.normal.x;this.y=this.normal.y;this.scrollTop=this.normal.scrollTop;this.scrollBottom=this.normal.scrollBottom;this.tabs=this.normal.tabs;this.normal=null;this.refresh(0,this.rows-1);this.showCursor()}break}}}};t.prototype.setScrollRegion=function(y){if(this.prefix){return}this.scrollTop=(y[0]||1)-1;this.scrollBottom=(y[1]||this.rows)-1;this.x=0;this.y=0};t.prototype.saveCursor=function(y){this.savedX=this.x;this.savedY=this.y};t.prototype.restoreCursor=function(y){this.x=this.savedX||0;this.y=this.savedY||0};t.prototype.cursorForwardTab=function(z){var y=z[0]||1;while(y--){this.x=this.nextStop()}};t.prototype.scrollUp=function(z){var y=z[0]||1;while(y--){this.lines.splice(this.ybase+this.scrollTop,1);this.lines.splice(this.ybase+this.scrollBottom,0,this.blankLine())}this.updateRange(this.scrollTop);this.updateRange(this.scrollBottom)};t.prototype.scrollDown=function(z){var y=z[0]||1;while(y--){this.lines.splice(this.ybase+this.scrollBottom,1);this.lines.splice(this.ybase+this.scrollTop,0,this.blankLine())}this.updateRange(this.scrollTop);this.updateRange(this.scrollBottom)};t.prototype.initMouseTracking=function(y){};t.prototype.resetTitleModes=function(y){};t.prototype.cursorBackwardTab=function(z){var y=z[0]||1;while(y--){this.x=this.prevStop()}};t.prototype.repeatPrecedingCharacter=function(B){var A=B[0]||1,y=this.lines[this.ybase+this.y],z=y[this.x-1]||[this.defAttr,&quot; &quot;];while(A--){y[this.x++]=z}};t.prototype.tabClear=function(z){var y=z[0];if(y&lt;=0){delete this.tabs[this.x]}else{if(y===3){this.tabs={}}}};t.prototype.mediaCopy=function(y){};t.prototype.setResources=function(y){};t.prototype.disableModifiers=function(y){};t.prototype.setPointerMode=function(y){};t.prototype.softReset=function(y){this.cursorHidden=false;this.insertMode=false;this.originMode=false;this.wraparoundMode=false;this.applicationKeypad=false;this.applicationCursor=false;this.scrollTop=0;this.scrollBottom=this.rows-1;this.curAttr=this.defAttr;this.x=this.y=0;this.charset=null;this.glevel=0;this.charsets=[null]};t.prototype.requestAnsiMode=function(y){};t.prototype.requestPrivateMode=function(y){};t.prototype.setConformanceLevel=function(y){};t.prototype.loadLEDs=function(y){};t.prototype.setCursorStyle=function(y){};t.prototype.setCharProtectionAttr=function(y){};t.prototype.restorePrivateValues=function(y){};t.prototype.setAttrInRectangle=function(F){var D=F[0],B=F[1],z=F[2],E=F[3],y=F[4];var A,C;for(;D&lt;z+1;D++){A=this.lines[this.ybase+D];for(C=B;C&lt;E;C++){A[C]=[y,A[C][1]]}}this.updateRange(F[0]);this.updateRange(F[2])};t.prototype.savePrivateValues=function(y){};t.prototype.manipulateWindow=function(y){};t.prototype.reverseAttrInRectangle=function(y){};t.prototype.setTitleModeFeature=function(y){};t.prototype.setWarningBellVolume=function(y){};t.prototype.setMarginBellVolume=function(y){};t.prototype.copyRectangle=function(y){};t.prototype.enableFilterRectangle=function(y){};t.prototype.requestParameters=function(y){};t.prototype.selectChangeExtent=function(y){};t.prototype.fillRectangle=function(F){var D=F[0],C=F[1],A=F[2],y=F[3],E=F[4];var z,B;for(;C&lt;y+1;C++){z=this.lines[this.ybase+C];for(B=A;B&lt;E;B++){z[B]=[z[B][0],u.fromCharCode(D)]}}this.updateRange(F[1]);this.updateRange(F[3])};t.prototype.enableLocatorReporting=function(z){var y=z[0]&gt;0};t.prototype.eraseRectangle=function(F){var C=F[0],A=F[1],y=F[2],E=F[3];var z,B,D;D=[this.eraseAttr(),&quot; &quot;];for(;C&lt;y+1;C++){z=this.lines[this.ybase+C];for(B=A;B&lt;E;B++){z[B]=D}}this.updateRange(F[0]);this.updateRange(F[2])};t.prototype.setLocatorEvents=function(y){};t.prototype.selectiveEraseRectangle=function(y){};t.prototype.requestLocatorPosition=function(y){};t.prototype.insertColumns=function(){var B=params[0],y=this.ybase+this.rows,A=[this.eraseAttr(),&quot; &quot;],z;while(B--){for(z=this.ybase;z&lt;y;z++){this.lines[z].splice(this.x+1,0,A);this.lines[z].pop()}}this.maxRange()};t.prototype.deleteColumns=function(){var B=params[0],y=this.ybase+this.rows,A=[this.eraseAttr(),&quot; &quot;],z;while(B--){for(z=this.ybase;z&lt;y;z++){this.lines[z].splice(this.x,1);this.lines[z].push(A)}}this.maxRange()};t.prototype.enterPrefix=function(){this.prefixMode=true};t.prototype.leavePrefix=function(){this.prefixMode=false};t.prototype.enterSelect=function(){this._real={x:this.x,y:this.y,ydisp:this.ydisp,ybase:this.ybase,cursorHidden:this.cursorHidden,lines:this.copyBuffer(this.lines),write:this.write};this.write=function(){};this.selectMode=true;this.visualMode=false;this.cursorHidden=false;this.refresh(this.y,this.y)};t.prototype.leaveSelect=function(){this.x=this._real.x;this.y=this._real.y;this.ydisp=this._real.ydisp;this.ybase=this._real.ybase;this.cursorHidden=this._real.cursorHidden;this.lines=this._real.lines;this.write=this._real.write;delete this._real;this.selectMode=false;this.visualMode=false;this.refresh(0,this.rows-1)};t.prototype.enterVisual=function(){this._real.preVisual=this.copyBuffer(this.lines);this.selectText(this.x,this.x,this.ydisp+this.y,this.ydisp+this.y);this.visualMode=true};t.prototype.leaveVisual=function(){this.lines=this._real.preVisual;delete this._real.preVisual;delete this._selected;this.visualMode=false;this.refresh(0,this.rows-1)};t.prototype.enterSearch=function(A){this.entry=&quot;&quot;;this.searchMode=true;this.searchDown=A;this._real.preSearch=this.copyBuffer(this.lines);this._real.preSearchX=this.x;this._real.preSearchY=this.y;var y=this.ydisp+this.rows-1;for(var z=0;z&lt;this.entryPrefix.length;z++){this.lines[y][z]=[(this.defAttr&amp;~511)|4,this.entryPrefix[z]]}this.y=this.rows-1;this.x=this.entryPrefix.length;this.refresh(this.rows-1,this.rows-1)};t.prototype.leaveSearch=function(){this.searchMode=false;if(this._real.preSearch){this.lines=this._real.preSearch;this.x=this._real.preSearchX;this.y=this._real.preSearchY;delete this._real.preSearch;delete this._real.preSearchX;delete this._real.preSearchY}this.refresh(this.rows-1,this.rows-1)};t.prototype.copyBuffer=function(A){var A=A||this.lines,B=[];for(var C=0;C&lt;A.length;C++){B[C]=[];for(var z=0;z&lt;A[C].length;z++){B[C][z]=[A[C][z][0],A[C][z][1]]}}return B};t.prototype.getCopyTextarea=function(A){var z=this._copyTextarea,y=this.document;if(!z){z=y.createElement(&quot;textarea&quot;);z.style.position=&quot;absolute&quot;;z.style.left=&quot;-32000px&quot;;z.style.top=&quot;-32000px&quot;;z.style.width=&quot;0px&quot;;z.style.height=&quot;0px&quot;;z.style.opacity=&quot;0&quot;;z.style.backgroundColor=&quot;transparent&quot;;z.style.borderStyle=&quot;none&quot;;z.style.outlineStyle=&quot;none&quot;;y.getElementsByTagName(&quot;body&quot;)[0].appendChild(z);this._copyTextarea=z}return z};t.prototype.copyText=function(A){var z=this,y=this.getCopyTextarea();this.emit(&quot;copy&quot;,A);y.focus();y.textContent=A;y.value=A;y.setSelectionRange(0,A.length);b(function(){z.element.focus();z.focus()},1)};t.prototype.selectText=function(A,z,J,H){var C,B,L,K,D,I,G,E,F;if(this._selected){C=this._selected.x1;B=this._selected.x2;L=this._selected.y1;K=this._selected.y2;if(K&lt;L){D=B;B=C;C=D;D=K;K=L;L=D}if(B&lt;C&amp;&amp;L===K){D=B;B=C;C=D}for(G=L;G&lt;=K;G++){I=0;E=this.cols-1;if(G===L){I=C}if(G===K){E=B}for(;I&lt;=E;I++){if(this.lines[G][I].old!=null){F=this.lines[G][I].old;delete this.lines[G][I].old;this.lines[G][I]=[F,this.lines[G][I][1]]}}}J=this._selected.y1;A=this._selected.x1}J=Math.max(J,0);J=Math.min(J,this.ydisp+this.rows-1);H=Math.max(H,0);H=Math.min(H,this.ydisp+this.rows-1);this._selected={x1:A,x2:z,y1:J,y2:H};if(H&lt;J){D=z;z=A;A=D;D=H;H=J;J=D}if(z&lt;A&amp;&amp;J===H){D=z;z=A;A=D}for(G=J;G&lt;=H;G++){I=0;E=this.cols-1;if(G===J){I=A}if(G===H){E=z}for(;I&lt;=E;I++){F=this.lines[G][I][0];this.lines[G][I]=[(F&amp;~511)|((511&lt;&lt;9)|4),this.lines[G][I][1]];this.lines[G][I].old=F}}J=J-this.ydisp;H=H-this.ydisp;J=Math.max(J,0);J=Math.min(J,this.rows-1);H=Math.max(H,0);H=Math.min(H,this.rows-1);this.refresh(0,this.rows-1)};t.prototype.grabText=function(B,A,I,H){var D=&quot;&quot;,C=&quot;&quot;,z,J,G,F,E;if(H&lt;I){E=A;A=B;B=E;E=H;H=I;I=E}if(A&lt;B&amp;&amp;I===H){E=A;A=B;B=E}for(G=I;G&lt;=H;G++){J=0;F=this.cols-1;if(G===I){J=B}if(G===H){F=A}for(;J&lt;=F;J++){z=this.lines[G][J][1];if(z===&quot; &quot;){C+=z;continue}if(C){D+=C;C=&quot;&quot;}D+=z;if(r(z)){J++}}C=&quot;&quot;;D+=&quot;\n&quot;}for(J=A,G=H;J&lt;this.cols;J++){if(this.lines[G][J][1]!==&quot; &quot;){D=D.slice(0,-1);break}}return D};t.prototype.keyPrefix=function(z,y){if(y===&quot;k&quot;||y===&quot;&amp;&quot;){this.destroy()}else{if(y===&quot;p&quot;||y===&quot;]&quot;){this.emit(&quot;request paste&quot;)}else{if(y===&quot;c&quot;){this.emit(&quot;request create&quot;)}else{if(y&gt;=&quot;0&quot;&amp;&amp;y&lt;=&quot;9&quot;){y=+y-1;if(!~y){y=9}this.emit(&quot;request term&quot;,y)}else{if(y===&quot;n&quot;){this.emit(&quot;request term next&quot;)}else{if(y===&quot;P&quot;){this.emit(&quot;request term previous&quot;)}else{if(y===&quot;:&quot;){this.emit(&quot;request command mode&quot;)}else{if(y===&quot;[&quot;){this.enterSelect()}}}}}}}}};t.prototype.keySelect=function(H,J){this.showCursor();if(this.searchMode||J===&quot;n&quot;||J===&quot;N&quot;){return this.keySearch(H,J)}if(J===&quot;\x04&quot;){var G=this.ydisp+this.y;if(this.ydisp===this.ybase){this.y=Math.min(this.y+(this.rows-1)/2|0,this.rows-1);this.refresh(0,this.rows-1)}else{this.scrollDisp((this.rows-1)/2|0)}if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}return}if(J===&quot;\x15&quot;){var G=this.ydisp+this.y;if(this.ydisp===0){this.y=Math.max(this.y-(this.rows-1)/2|0,0);this.refresh(0,this.rows-1)}else{this.scrollDisp(-(this.rows-1)/2|0)}if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}return}if(J===&quot;\x06&quot;){var G=this.ydisp+this.y;this.scrollDisp(this.rows-1);if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}return}if(J===&quot;\x02&quot;){var G=this.ydisp+this.y;this.scrollDisp(-(this.rows-1));if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}return}if(J===&quot;k&quot;||J===&quot;\x1b[A&quot;){var G=this.ydisp+this.y;this.y--;if(this.y&lt;0){this.y=0;this.scrollDisp(-1)}if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}else{this.refresh(this.y,this.y+1)}return}if(J===&quot;j&quot;||J===&quot;\x1b[B&quot;){var G=this.ydisp+this.y;this.y++;if(this.y&gt;=this.rows){this.y=this.rows-1;this.scrollDisp(1)}if(this.visualMode){this.selectText(this.x,this.x,G,this.ydisp+this.y)}else{this.refresh(this.y-1,this.y)}return}if(J===&quot;h&quot;||J===&quot;\x1b[D&quot;){var I=this.x;this.x--;if(this.x&lt;0){this.x=0}if(this.visualMode){this.selectText(I,this.x,this.ydisp+this.y,this.ydisp+this.y)}else{this.refresh(this.y,this.y)}return}if(J===&quot;l&quot;||J===&quot;\x1b[C&quot;){var I=this.x;this.x++;if(this.x&gt;=this.cols){this.x=this.cols-1}if(this.visualMode){this.selectText(I,this.x,this.ydisp+this.y,this.ydisp+this.y)}else{this.refresh(this.y,this.y)}return}if(J===&quot;v&quot;||J===&quot; &quot;){if(!this.visualMode){this.enterVisual()}else{this.leaveVisual()}return}if(J===&quot;y&quot;){if(this.visualMode){var L=this.grabText(this._selected.x1,this._selected.x2,this._selected.y1,this._selected.y2);this.copyText(L);this.leaveVisual()}return}if(J===&quot;q&quot;||J===&quot;\x1b&quot;){if(this.visualMode){this.leaveVisual()}else{this.leaveSelect()}return}if(J===&quot;w&quot;||J===&quot;W&quot;){var B=this.x;var A=this.y;var F=this.ydisp;var I=this.x;var G=this.y;var E=this.ydisp;var z=false;for(;;){var N=this.lines[E+G];while(I&lt;this.cols){if(N[I][1]&lt;=&quot; &quot;){z=true}else{if(z){break}}I++}if(I&gt;=this.cols){I=this.cols-1}if(I===this.cols-1&amp;&amp;N[I][1]&lt;=&quot; &quot;){I=0;if(++G&gt;=this.rows){G--;if(++E&gt;this.ybase){E=this.ybase;I=this.x;break}}continue}break}this.x=I,this.y=G;this.scrollDisp(-this.ydisp+E);if(this.visualMode){this.selectText(B,this.x,A+F,this.ydisp+this.y)}return}if(J===&quot;b&quot;||J===&quot;B&quot;){var B=this.x;var A=this.y;var F=this.ydisp;var I=this.x;var G=this.y;var E=this.ydisp;for(;;){var N=this.lines[E+G];var z=I&gt;0&amp;&amp;N[I][1]&gt;&quot; &quot;&amp;&amp;N[I-1][1]&gt;&quot; &quot;;while(I&gt;=0){if(N[I][1]&lt;=&quot; &quot;){if(z&amp;&amp;(I+1&lt;this.cols&amp;&amp;N[I+1][1]&gt;&quot; &quot;)){I++;break}else{z=true}}I--}if(I&lt;0){I=0}if(I===0&amp;&amp;(N[I][1]&lt;=&quot; &quot;||!z)){I=this.cols-1;if(--G&lt;0){G++;if(--E&lt;0){E++;I=0;break}}continue}break}this.x=I,this.y=G;this.scrollDisp(-this.ydisp+E);if(this.visualMode){this.selectText(B,this.x,A+F,this.ydisp+this.y)}return}if(J===&quot;e&quot;||J===&quot;E&quot;){var I=this.x+1;var G=this.y;var E=this.ydisp;if(I&gt;=this.cols){I--}for(;;){var N=this.lines[E+G];while(I&lt;this.cols){if(N[I][1]&lt;=&quot; &quot;){I++}else{break}}while(I&lt;this.cols){if(N[I][1]&lt;=&quot; &quot;){if(I-1&gt;=0&amp;&amp;N[I-1][1]&gt;&quot; &quot;){I--;break}}I++}if(I&gt;=this.cols){I=this.cols-1}if(I===this.cols-1&amp;&amp;N[I][1]&lt;=&quot; &quot;){I=0;if(++G&gt;=this.rows){G--;if(++E&gt;this.ybase){E=this.ybase;break}}continue}break}this.x=I,this.y=G;this.scrollDisp(-this.ydisp+E);if(this.visualMode){this.selectText(B,this.x,A+F,this.ydisp+this.y)}return}if(J===&quot;^&quot;||J===&quot;0&quot;){var B=this.x;if(J===&quot;0&quot;){this.x=0}else{if(J===&quot;^&quot;){var N=this.lines[this.ydisp+this.y];var I=0;while(I&lt;this.cols){if(N[I][1]&gt;&quot; &quot;){break}I++}if(I&gt;=this.cols){I=this.cols-1}this.x=I}}if(this.visualMode){this.selectText(B,this.x,this.ydisp+this.y,this.ydisp+this.y)}else{this.refresh(this.y,this.y)}return}if(J===&quot;$&quot;){var B=this.x;var N=this.lines[this.ydisp+this.y];var I=this.cols-1;while(I&gt;=0){if(N[I][1]&gt;&quot; &quot;){if(this.visualMode&amp;&amp;I&lt;this.cols-1){I++}break}I--}if(I&lt;0){I=0}this.x=I;if(this.visualMode){this.selectText(B,this.x,this.ydisp+this.y,this.ydisp+this.y)}else{this.refresh(this.y,this.y)}return}if(J===&quot;g&quot;||J===&quot;G&quot;){var B=this.x;var A=this.y;var F=this.ydisp;if(J===&quot;g&quot;){this.x=0,this.y=0;this.scrollDisp(-this.ydisp)}else{if(J===&quot;G&quot;){this.x=0,this.y=this.rows-1;this.scrollDisp(this.ybase)}}if(this.visualMode){this.selectText(B,this.x,A+F,this.ydisp+this.y)}return}if(J===&quot;H&quot;||J===&quot;M&quot;||J===&quot;L&quot;){var B=this.x;var A=this.y;if(J===&quot;H&quot;){this.x=0,this.y=0}else{if(J===&quot;M&quot;){this.x=0,this.y=this.rows/2|0}else{if(J===&quot;L&quot;){this.x=0,this.y=this.rows-1}}}if(this.visualMode){this.selectText(B,this.x,this.ydisp+A,this.ydisp+this.y)}else{this.refresh(A,A);this.refresh(this.y,this.y)}return}if(J===&quot;{&quot;||J===&quot;}&quot;){var B=this.x;var A=this.y;var F=this.ydisp;var N;var K=false;var M=false;var C=-1;var G=this.y+(J===&quot;{&quot;?-1:1);var E=this.ydisp;var D;if(J===&quot;{&quot;){if(G&lt;0){G++;if(E&gt;0){E--}}}else{if(J===&quot;}&quot;){if(G&gt;=this.rows){G--;if(E&lt;this.ybase){E++}}}}for(;;){N=this.lines[E+G];for(D=0;D&lt;this.cols;D++){if(N[D][1]&gt;&quot; &quot;){if(C===-1){C=0}K=true;break}else{if(D===this.cols-1){if(C===-1){C=1}else{if(C===0){M=true}else{if(C===1){if(K){M=true}}}}break}}}if(M){break}if(J===&quot;{&quot;){G--;if(G&lt;0){G++;if(E&gt;0){E--}else{break}}}else{if(J===&quot;}&quot;){G++;if(G&gt;=this.rows){G--;if(E&lt;this.ybase){E++}else{break}}}}}if(!M){if(J===&quot;{&quot;){G=0;E=0}else{if(J===&quot;}&quot;){G=this.rows-1;E=this.ybase}}}this.x=0,this.y=G;this.scrollDisp(-this.ydisp+E);if(this.visualMode){this.selectText(B,this.x,A+F,this.ydisp+this.y)}return}if(J===&quot;/&quot;||J===&quot;?&quot;){if(!this.visualMode){this.enterSearch(J===&quot;/&quot;)}return}return false};t.prototype.keySearch=function(I,L){if(L===&quot;\x1b&quot;){this.leaveSearch();return}if(L===&quot;\r&quot;||(!this.searchMode&amp;&amp;(L===&quot;n&quot;||L===&quot;N&quot;))){this.leaveSearch();var K=this.entry;if(!K){this.refresh(0,this.rows-1);return}var B=this.x;var A=this.y;var G=this.ydisp;var N;var M=false;var F=false;var J=this.x+1;var H=this.ydisp+this.y;var E,D;var C=L===&quot;N&quot;?this.searchDown:!this.searchDown;for(;;){N=this.lines[H];while(J&lt;this.cols){for(D=0;D&lt;K.length;D++){if(J+D&gt;=this.cols){break}if(N[J+D][1]!==K[D]){break}else{if(N[J+D][1]===K[D]&amp;&amp;D===K.length-1){M=true;break}}}if(M){break}J+=D+1}if(M){break}J=0;if(!C){H++;if(H&gt;this.ybase+this.rows-1){if(F){break}F=true;H=0}}else{H--;if(H&lt;0){if(F){break}F=true;H=this.ybase+this.rows-1}}}if(M){if(H-this.ybase&lt;0){E=H;H=0;if(E&gt;this.ybase){H=E-this.ybase;E=this.ybase}}else{E=this.ybase;H-=this.ybase}this.x=J,this.y=H;this.scrollDisp(-this.ydisp+E);if(this.visualMode){this.selectText(B,this.x,A+G,this.ydisp+this.y)}return}this.refresh(0,this.rows-1);return}if(L===&quot;\b&quot;||L===&quot;\x7f&quot;){if(this.entry.length===0){return}var z=this.ydisp+this.rows-1;this.entry=this.entry.slice(0,-1);var D=this.entryPrefix.length+this.entry.length;this.lines[z][D]=[this.lines[z][D][0],&quot; &quot;];this.x--;this.refresh(this.rows-1,this.rows-1);this.refresh(this.y,this.y);return}if(L.length===1&amp;&amp;L&gt;=&quot; &quot;&amp;&amp;L&lt;=&quot;~&quot;){var z=this.ydisp+this.rows-1;this.entry+=L;var D=this.entryPrefix.length+this.entry.length-1;this.lines[z][D]=[(this.defAttr&amp;~511)|4,L];this.x++;this.refresh(this.rows-1,this.rows-1);this.refresh(this.y,this.y);return}return false};t.charsets={};t.charsets.SCLD={&quot;`&quot;:&quot;\u25c6&quot;,a:&quot;\u2592&quot;,b:&quot;\u0009&quot;,c:&quot;\u000c&quot;,d:&quot;\u000d&quot;,e:&quot;\u000a&quot;,f:&quot;\u00b0&quot;,g:&quot;\u00b1&quot;,h:&quot;\u2424&quot;,i:&quot;\u000b&quot;,j:&quot;\u2518&quot;,k:&quot;\u2510&quot;,l:&quot;\u250c&quot;,m:&quot;\u2514&quot;,n:&quot;\u253c&quot;,o:&quot;\u23ba&quot;,p:&quot;\u23bb&quot;,q:&quot;\u2500&quot;,r:&quot;\u23bc&quot;,s:&quot;\u23bd&quot;,t:&quot;\u251c&quot;,u:&quot;\u2524&quot;,v:&quot;\u2534&quot;,w:&quot;\u252c&quot;,x:&quot;\u2502&quot;,y:&quot;\u2264&quot;,z:&quot;\u2265&quot;,&quot;{&quot;:&quot;\u03c0&quot;,&quot;|&quot;:&quot;\u2260&quot;,&quot;}&quot;:&quot;\u00a3&quot;,&quot;~&quot;:&quot;\u00b7&quot;};t.charsets.UK=null;t.charsets.US=null;t.charsets.Dutch=null;t.charsets.Finnish=null;t.charsets.French=null;t.charsets.FrenchCanadian=null;t.charsets.German=null;t.charsets.Italian=null;t.charsets.NorwegianDanish=null;t.charsets.Spanish=null;t.charsets.Swedish=null;t.charsets.Swiss=null;t.charsets.ISOLatin=null;function k(B,A,z,y){B.addEventListener(A,z,y||false)}function w(B,A,z,y){B.removeEventListener(A,z,y||false)}function d(y){if(y.preventDefault){y.preventDefault()}y.returnValue=false;if(y.stopPropagation){y.stopPropagation()}y.cancelBubble=true;return false}function l(A,y){function z(){this.constructor=A}z.prototype=y.prototype;A.prototype=new z}function v(A){var z=A.getElementsByTagName(&quot;body&quot;)[0];var C=A.createElement(&quot;span&quot;);C.innerHTML=&quot;hello world&quot;;z.appendChild(C);var B=C.scrollWidth;C.style.fontWeight=&quot;bold&quot;;var y=C.scrollWidth;z.removeChild(C);return B!==y}var u=this.String;var b=this.setTimeout;var a=this.setInterval;function c(A,z){var y=A.length;while(y--){if(A[y]===z){return y}}return -1}function r(y){if(y&lt;=&quot;\uff00&quot;){return false}return(y&gt;=&quot;\uff01&quot;&amp;&amp;y&lt;=&quot;\uffbe&quot;)||(y&gt;=&quot;\uffc2&quot;&amp;&amp;y&lt;=&quot;\uffc7&quot;)||(y&gt;=&quot;\uffca&quot;&amp;&amp;y&lt;=&quot;\uffcf&quot;)||(y&gt;=&quot;\uffd2&quot;&amp;&amp;y&lt;=&quot;\uffd7&quot;)||(y&gt;=&quot;\uffda&quot;&amp;&amp;y&lt;=&quot;\uffdc&quot;)||(y&gt;=&quot;\uffe0&quot;&amp;&amp;y&lt;=&quot;\uffe6&quot;)||(y&gt;=&quot;\uffe8&quot;&amp;&amp;y&lt;=&quot;\uffee&quot;)}function m(A,y,G){var B=(A&lt;&lt;16)|(y&lt;&lt;8)|G;if(m._cache[B]!=null){return m._cache[B]}var C=Infinity,I=-1,D=0,E,z,J,F,H;for(;D&lt;t.vcolors.length;D++){E=t.vcolors[D];z=E[0];J=E[1];F=E[2];H=m.distance(A,y,G,z,J,F);if(H===0){I=D;break}if(H&lt;C){C=H;I=D}}return m._cache[B]=I}m._cache={};m.distance=function(C,B,D,z,y,A){return Math.pow(30*(C-z),2)+Math.pow(59*(B-y),2)+Math.pow(11*(D-A),2)};function e(B,z,y){if(B.forEach){return B.forEach(z,y)}for(var A=0;A&lt;B.length;A++){z.call(y,B[A],A,B)}}function n(A){if(Object.keys){return Object.keys(A)}var y,z=[];for(y in A){if(Object.prototype.hasOwnProperty.call(A,y)){z.push(y)}}return z}t.EventEmitter=h;t.inherits=l;t.on=k;t.off=w;t.cancel=d;if(typeof module!==&quot;undefined&quot;){module.exports=t}else{this.Terminal=t}}).call(function(){return this||(typeof window!==&quot;undefined&quot;?window:global)}());&lt;/script&gt;
        &lt;style&gt;
            @font-face {
                         font-family: &#39;Ubuntu Mono&#39;;
                         font-style: normal;
                         font-weight: 400;
                         /* Ubuntu Mono released and distributed under the Ubuntu Font License 1.0 (see FONT-LICENSE) */
                         src: url(data:application/x-font-woff;charset=utf-8;base64,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) format(&#39;woff&#39;);
                       }
            body {
                    font-family: &#39;Ubuntu Mono&#39;, Courier, monospace;
                    font-size:  14pt;
                 }
        &lt;/style&gt;

    &lt;/head&gt;
    
    &lt;body&gt;
        &lt;input type=&quot;button&quot; value=&quot;Play/Pause&quot; onclick=&quot;pause(false);&quot; /&gt; 
        &lt;input type=&quot;button&quot; value=&quot;Restart&quot; onclick=&quot;restart(1);&quot; /&gt; 
        &lt;span id=&quot;beforeScrubberText&quot;&gt;&lt;/span&gt;
        &lt;input id=&quot;scrubber&quot; type=&quot;range&quot; value=&quot;0&quot; min=0 max=100
               onmousedown=&quot;pause(true);&quot; onmouseup=&quot;scrub();&quot; /&gt;
        &lt;span id=&quot;afterScrubberText&quot;&gt;&lt;/span&gt;
        -5x &lt;input id=&quot;speed&quot; type=&quot;range&quot; value=&quot;0&quot; min=-5 max=5
               onmouseup=&quot;setSpeed();&quot; /&gt; +5x
        &lt;script&gt;
            var data = [[&quot;&#39;\\x1b[1m\\x1b[7m%\\x1b[27m\\x1b[1m\\x1b[0m                                                                                                                                                                                  \\r \\r&#39;&quot;, 0], [&quot;&#39;\\x1b]2;dongmingang@dongmin-ui-MacBook-Pro: ~\\x07&#39;&quot;, 0], [&quot;&#39;\\x1b]1;~\\x07&#39;&quot;, 0], [&quot;&#39;\\r\\x1b[0m\\x1b[27m\\x1b[24m\\x1b[J\\x1b[32mdongmingang\\x1b[00m@\\x1b[36mdongmin-ui-MacBook-Pro\\x1b[00m:\\x1b[35m~ \\x1b[31m\\xbb\\x1b[00m &#39;&quot;, 15], [&quot;&#39;\\x1b[K&#39;&quot;, 15], [&quot;&#39;\\x1b[?1h\\x1b=&#39;&quot;, 15], [&quot;&#39;l&#39;&quot;, 1409], [&quot;&#39;\\x08ls&#39;&quot;, 1487], [&quot;&#39;\\x1b[?1l\\x1b&gt;&#39;&quot;, 1647], [&quot;&#39;\\r\\r\\n&#39;&quot;, 1647], [&quot;&#39;\\x1b]2;ls -G\\x07\\x1b]1;ls\\x07&#39;&quot;, 1649], [&quot;&#39;2014. 3. 13. \\u110b\\u1169\\u1112\\u116e 4.57.pklg       \\x1b[1m\\x1b[36mMovies\\x1b[39;49m\\x1b[0m                              \\x1b[1m\\x1b[36mWebstormProjects\\x1b[39;49m\\x1b[0m                    \\x1b[1m\\x1b[36mhello-scala\\x1b[39;49m\\x1b[0m\\r\\n\\x1b[1m\\x1b[36mApplications\\x1b[39;49m\\x1b[0m                        \\x1b[1m\\x1b[36mMusic\\x1b[39;49m\\x1b[0m                               \\x1b[1m\\x1b[36mWork\\x1b[39;49m\\x1b[0m                                \\x1b[1m\\x1b[36mkidsplay-app\\x1b[39;49m\\x1b[0m\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[36mCreative Cloud Files\\x1b[39;49m\\x1b[0m                \\x1b[1m\\x1b[36mPictures\\x1b[39;49m\\x1b[0m                            activator-dist-1.3.7                \\x1b[1m\\x1b[36mnltk_data\\x1b[39;49m\\x1b[0m\\r\\n\\x1b[1m\\x1b[36mDesktop\\x1b[39;49m\\x1b[0m                             \\x1b[1m\\x1b[36mPublic\\x1b[39;49m\\x1b[0m                              \\x1b[1m\\x1b[36masciinema\\x1b[39;49m\\x1b[0m                           npm-debug.log\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[36mDocuments\\x1b[39;49m\\x1b[0m                           \\x1b[1m\\x1b[36mPycharmProjects\\x1b[39;49m\\x1b[0m                     \\x1b[1m\\x1b[36mbin\\x1b[39;49m\\x1b[0m                                 \\x1b[1m\\x1b[36mrethinkdb_data\\x1b[39;49m\\x1b[0m\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[36mDownloads\\x1b[39;49m\\x1b[0m                           \\x1b[1m\\x1b[36mStudioProjects\\x1b[39;49m\\x1b[0m                      \\x1b[1m\\x1b[36mbootinge.github.com\\x1b[39;49m\\x1b[0m                 \\x1b[1m\\x1b[36mtarget\\x1b[39;49m\\x1b[0m\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[36mIdeaProjects\\x1b[39;49m\\x1b[0m                        \\x1b[1m\\x1b[36mVagrantProjects\\x1b[39;49m\\x1b[0m                     canned_policy.json                  \\x1b[1m\\x1b[36mtmp\\x1b[39;49m\\x1b[0m\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[36mLibrary\\x1b[39;49m\\x1b[0m                             \\x1b[1m\\x1b[36mVirtualBox VMs\\x1b[39;49m\\x1b[0m                      \\x1b[1m\\x1b[36mdemo-project\\x1b[39;49m\\x1b[0m                        wep_practice.pem\\r\\n&#39;&quot;, 1655], [&quot;&#39;\\x1b[1m\\x1b[7m%\\x1b[27m\\x1b[1m\\x1b[0m                                                                                                                                                                                  \\r \\r&#39;&quot;, 1655], [&quot;&#39;\\x1b]2;dongmingang@dongmin-ui-MacBook-Pro: ~\\x07\\x1b]1;~\\x07&#39;&quot;, 1656], [&quot;&#39;\\r\\x1b[0m\\x1b[27m\\x1b[24m\\x1b[J\\x1b[32mdongmingang\\x1b[00m@\\x1b[36mdongmin-ui-MacBook-Pro\\x1b[00m:\\x1b[35m~ \\x1b[31m\\xbb\\x1b[00m &#39;&quot;, 1671], [&quot;&#39;\\x1b[K&#39;&quot;, 1671], [&quot;&#39;\\x1b[?1h\\x1b=&#39;&quot;, 1671], [&quot;&#39;ls&#39;&quot;, 5799], [&quot;&#39;\\x08\\x08trec&#39;&quot;, 5959], [&quot;&#39;\\x08\\x08\\x08\\x08exit&#39;&quot;, 6138], [&quot;&#39;\\x08\\x08\\x08\\x08trec&#39;&quot;, 6311], [&quot;&#39;\\x08\\x08\\x08\\x08vi ~/.zshrc&#39;&quot;, 6488], [&quot;&#39;\\x08\\x08\\x08\\x08\\x08bashrc&#39;&quot;, 6671], [&quot;&#39;\\x1b[12Drec2        \\x1b[8D&#39;&quot;, 7000], [&quot;&#39;\\x08\\x08\\x08\\x08docker run -it -p 8088:8088 -p 8042:8042 -p 50070:50070 sequenceiq/spark:1.6.0 bash&#39;&quot;, 7188], [&quot;&#39;\\x1b[83Dbash --login \\&#39;/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh\\&#39;&#39;&quot;, 7416], [&quot;&#39;\\x1b[102Ddocker run -it -p 8088:8088 -p 8042:8042 -p 50070:50070 sequenceiq/spark:1.6.0 bash                   \\x1b[19D&#39;&quot;, 7783], [&quot;&#39;\\x1b[?1l\\x1b&gt;&#39;&quot;, 8255], [&quot;&#39;\\r\\r\\n&#39;&quot;, 8255], [&quot;&#39;\\x1b]2;docker run -it -p 8088:8088 -p 8042:8042 -p 50070:50070 sequenceiq/spark:1.6.\\x07&#39;&quot;, 8257], [&quot;&#39;\\x1b]1;docker\\x07&#39;&quot;, 8257], [&quot;&#39;/&#39;&quot;, 8718], [&quot;&#39;\\r\\n&#39;&quot;, 8718], [&quot;&#39;Starting sshd: &#39;&quot;, 8738], [&quot;&#39;\\x1b[60G&#39;&quot;, 8743], [&quot;&#39;[&#39;&quot;, 8744], [&quot;&#39;\\x1b[0;32m&#39;&quot;, 8744], [&quot;&#39;  OK  &#39;&quot;, 8744], [&quot;&#39;\\x1b[0;39m&#39;&quot;, 8744], [&quot;&#39;]&#39;&quot;, 8745], [&quot;&#39;\\r&#39;&quot;, 8745], [&quot;&#39;\\r\\n&#39;&quot;, 8748], [&quot;&#39;Starting namenodes on [f4491d85c28c]&#39;&quot;, 10587], [&quot;&#39;\\r\\n&#39;&quot;, 10587], [&quot;&#39;f4491d85c28c: starting namenode, logging to /usr/local/hadoop/logs/hadoop-root-namenode-f4491d85c28c.out&#39;&quot;, 10728], [&quot;&#39;\\r\\n&#39;&quot;, 10728], [&quot;&#39;localhost: starting datanode, logging to /usr/local/hadoop/logs/hadoop-root-datanode-f4491d85c28c.out&#39;&quot;, 14923], [&quot;&#39;\\r\\n&#39;&quot;, 14927], [&quot;&#39;Starting secondary namenodes [0.0.0.0]&#39;&quot;, 22071], [&quot;&#39;\\r\\n&#39;&quot;, 22071], [&quot;&#39;0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-root-secondarynamenode-f4491d85c28c.out&#39;&quot;, 22242], [&quot;&#39;\\r\\n&#39;&quot;, 22242], [&quot;&#39;starting yarn daemons&#39;&quot;, 30170], [&quot;&#39;\\r\\n&#39;&quot;, 30170], [&quot;&#39;starting resourcemanager, logging to /usr/local/hadoop/logs/yarn--resourcemanager-f4491d85c28c.out&#39;&quot;, 30201], [&quot;&#39;\\r\\n&#39;&quot;, 30201], [&quot;&#39;localhost: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-f4491d85c28c.out&#39;&quot;, 31602], [&quot;&#39;\\r\\n&#39;&quot;, 31602], [&quot;&#39;\\x1b[?1034h&#39;&quot;, 32644], [&quot;&#39;bash-4.1# &#39;&quot;, 32662], [&quot;&#39;h&#39;&quot;, 34417], [&quot;&#39;d&#39;&quot;, 34492], [&quot;&#39;f&#39;&quot;, 34632], [&quot;&#39;s&#39;&quot;, 34753], [&quot;&#39;\\r\\n&#39;&quot;, 35200], [&quot;&#39;Usage: hdfs [--config confdir] COMMAND&#39;&quot;, 35320], [&quot;&#39;\\r\\n&#39;&quot;, 35320], [&quot;&#39;       where COMMAND is one of:&#39;&quot;, 35321], [&quot;&#39;\\r\\n&#39;&quot;, 35321], [&quot;&#39;  dfs                  run a filesystem command on the file systems supported in Hadoop.&#39;&quot;, 35323], [&quot;&#39;\\r\\n&#39;&quot;, 35323], [&quot;&#39;  namenode -format     format the DFS filesystem\\r\\n  secondarynamenode    run the DFS secondary namenode\\r\\n  namenode             run the DFS namenode\\r\\n  journalnode          run the DFS journalnode\\r\\n  zkfc                 run the ZK Failover Controller daemon\\r\\n  datanode             run a DFS datanode\\r\\n  dfsadmin             run a DFS admin client\\r\\n  haadmin              run a DFS HA admin client\\r\\n  fsck                 run a DFS filesystem checking utility\\r\\n  balancer             run a cluster balancing utility\\r\\n  jmxget               get JMX exported values from NameNode or DataNode.\\r\\n  mover                run a utility to move block replicas across\\r\\n                       storage types\\r\\n  oiv                  apply the offline fsimage viewer to an fsimage&#39;&quot;, 35324], [&quot;&#39;\\r\\n  oiv_legacy           apply the offline fsimage viewer to an legacy fsimage\\r\\n  oev                  apply the offline edits viewer to an edits file\\r\\n  fetchdt              fetch a delegation token from the NameNode\\r\\n  getconf              get config values from configuration\\r\\n  groups               get the groups which users belong to\\r\\n  snapshotDiff         diff two snapshots of a directory or diff the\\r\\n                       current directory contents with a snapshot\\r\\n  lsSnapshottableDir   list all snapshottable dirs owned by the current user\\r\\n\\t\\t\\t\\t\\t\\tUse -help to see options\\r\\n  portmap              run a portmap service\\r\\n  nfs3                 run an NFS version 3 gateway\\r\\n  cacheadmin           configure the HDFS cache\\r\\n  crypto               configure HDFS encryption zones\\r\\n  storagepolicies      get all the existing block storage policies\\r\\n  version              print the version\\r\\n\\r\\nMost commands print help when invoked w/o parameters.\\r\\n&#39;&quot;, 35325], [&quot;&#39;bash-4.1# &#39;&quot;, 35327], [&quot;&#39;h&#39;&quot;, 37066], [&quot;&#39;d&#39;&quot;, 37145], [&quot;&#39;f&#39;&quot;, 37240], [&quot;&#39;s&#39;&quot;, 37360], [&quot;&#39; &#39;&quot;, 37497], [&quot;&#39;d&#39;&quot;, 37601], [&quot;&#39;f&#39;&quot;, 37705], [&quot;&#39;s&#39;&quot;, 37841], [&quot;&#39; &#39;&quot;, 37985], [&quot;&#39;l&#39;&quot;, 39209], [&quot;&#39;s&#39;&quot;, 39297], [&quot;&#39;\\x08 \\x08&#39;&quot;, 39771], [&quot;&#39;\\x08 \\x08&#39;&quot;, 39921], [&quot;&#39;-&#39;&quot;, 40081], [&quot;&#39;l&#39;&quot;, 40323], [&quot;&#39;s&#39;&quot;, 40393], [&quot;&#39;\\r\\n&#39;&quot;, 40585], [&quot;&#39;Found 1 items&#39;&quot;, 43454], [&quot;&#39;\\r\\n&#39;&quot;, 43454], [&quot;&#39;drwxr-xr-x   - root supergroup          0 2015-01-15 04:05 input&#39;&quot;, 43455], [&quot;&#39;\\r\\n&#39;&quot;, 43456], [&quot;&#39;bash-4.1# &#39;&quot;, 43790], [&quot;&#39;hdfs dfs -ls&#39;&quot;, 49801], [&quot;&#39; &#39;&quot;, 50185], [&quot;&#39;i&#39;&quot;, 50682], [&quot;&#39;n&#39;&quot;, 50753], [&quot;&#39;p&#39;&quot;, 50929], [&quot;&#39;u&#39;&quot;, 50977], [&quot;&#39;t&#39;&quot;, 51049], [&quot;&#39;\\r\\n&#39;&quot;, 51377], [&quot;&#39;Found 31 items&#39;&quot;, 54204], [&quot;&#39;\\r\\n&#39;&quot;, 54204], [&quot;&#39;-rw-r--r--   1 root supergroup       4436 2015-01-15 04:05 input/capacity-scheduler.xml&#39;&quot;, 54207], [&quot;&#39;\\r\\n&#39;&quot;, 54208], [&quot;&#39;-rw-r--r--   1 root supergroup       1335 2015-01-15 04:05 input/configuration.xsl&#39;&quot;, 54208], [&quot;&#39;\\r\\n&#39;&quot;, 54209], [&quot;&#39;-rw-r--r--   1 root supergroup        318 2015-01-15 04:05 input/container-executor.cfg&#39;&quot;, 54209], [&quot;&#39;\\r\\n&#39;&quot;, 54210], [&quot;&#39;-rw-r--r--   1 root supergroup        155 2015-01-15 04:05 input/core-site.xml&#39;&quot;, 54210], [&quot;&#39;\\r\\n&#39;&quot;, 54210], [&quot;&#39;-rw-r--r--   1 root supergroup        154 2015-01-15 04:05 input/core-site.xml.template&#39;&quot;, 54211], [&quot;&#39;\\r\\n&#39;&quot;, 54211], [&quot;&#39;-rw-r--r--   1 root supergroup       3670 2015-01-15 04:05 input/hadoop-env.cmd&#39;&quot;, 54212], [&quot;&#39;\\r\\n&#39;&quot;, 54212], [&quot;&#39;-rw-r--r--   1 root supergroup       4302 2015-01-15 04:05 input/hadoop-env.sh&#39;&quot;, 54213], [&quot;&#39;\\r\\n&#39;&quot;, 54213], [&quot;&#39;-rw-r--r--   1 root supergroup       2490 2015-01-15 04:05 input/hadoop-metrics.properties&#39;&quot;, 54214], [&quot;&#39;\\r\\n&#39;&quot;, 54214], [&quot;&#39;-rw-r--r--   1 root supergroup       2598 2015-01-15 04:05 input/hadoop-metrics2.properties&#39;&quot;, 54214], [&quot;&#39;\\r\\n&#39;&quot;, 54215], [&quot;&#39;-rw-r--r--   1 root supergroup       9683 2015-01-15 04:05 input/hadoop-policy.xml&#39;&quot;, 54215], [&quot;&#39;\\r\\n&#39;&quot;, 54216], [&quot;&#39;-rw-r--r--   1 root supergroup        126 2015-01-15 04:05 input/hdfs-site.xml&#39;&quot;, 54216], [&quot;&#39;\\r\\n&#39;&quot;, 54217], [&quot;&#39;-rw-r--r--   1 root supergroup       1449 2015-01-15 04:05 input/httpfs-env.sh&#39;&quot;, 54217], [&quot;&#39;\\r\\n&#39;&quot;, 54217], [&quot;&#39;-rw-r--r--   1 root supergroup       1657 2015-01-15 04:05 input/httpfs-log4j.properties&#39;&quot;, 54218], [&quot;&#39;\\r\\n&#39;&quot;, 54218], [&quot;&#39;-rw-r--r--   1 root supergroup         21 2015-01-15 04:05 input/httpfs-signature.secret&#39;&quot;, 54219], [&quot;&#39;\\r\\n&#39;&quot;, 54219], [&quot;&#39;-rw-r--r--   1 root supergroup        620 2015-01-15 04:05 input/httpfs-site.xml&#39;&quot;, 54220], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       3523 2015-01-15 04:05 input/kms-acls.xml\\r\\n-rw-r--r--   1 root supergroup       1325 2015-01-15 04:05 input/kms-env.sh\\r\\n-rw-r--r--   1 root supergroup       1631 2015-01-15 04:05 input/kms-log4j.properties&#39;&quot;, 54221], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       5511 2015-01-15 04:05 input/kms-site.xml&#39;&quot;, 54221], [&quot;&#39;\\r\\n&#39;&quot;, 54222], [&quot;&#39;-rw-r--r--   1 root supergroup      11291 2015-01-15 04:05 input/log4j.properties\\r\\n-rw-r--r--   1 root supergroup        938 2015-01-15 04:05 input/mapred-env.cmd&#39;&quot;, 54222], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       1383 2015-01-15 04:05 input/mapred-env.sh\\r\\n-rw-r--r--   1 root supergroup       4113 2015-01-15 04:05 input/mapred-queues.xml.template&#39;&quot;, 54223], [&quot;&#39;\\r\\n&#39;&quot;, 54224], [&quot;&#39;-rw-r--r--   1 root supergroup        138 2015-01-15 04:05 input/mapred-site.xml\\r\\n-rw-r--r--   1 root supergroup        758 2015-01-15 04:05 input/mapred-site.xml.template\\r\\n-rw-r--r--   1 root supergroup         10 2015-01-15 04:05 input/slaves\\r\\n-rw-r--r--   1 root supergroup       2316 2015-01-15 04:05 input/ssl-client.xml.example\\r\\n-rw-r--r--   1 root supergroup       2268 2015-01-15 04:05 input/ssl-server.xml.example\\r\\n-rw-r--r--   1 root supergroup       2237 2015-01-15 04:05 input/yarn-env.cmd&#39;&quot;, 54225], [&quot;&#39;\\r\\n&#39;&quot;, 54226], [&quot;&#39;-rw-r--r--   1 root supergroup       4567 2015-01-15 04:05 input/yarn-env.sh&#39;&quot;, 54228], [&quot;&#39;\\r\\n&#39;&quot;, 54229], [&quot;&#39;-rw-r--r--   1 root supergroup       1525 2015-01-15 04:05 input/yarn-site.xml&#39;&quot;, 54229], [&quot;&#39;\\r\\n&#39;&quot;, 54230], [&quot;&#39;bash-4.1# &#39;&quot;, 54564], [&quot;&#39;h&#39;&quot;, 61786], [&quot;&#39;i&#39;&quot;, 61850], [&quot;&#39;s&#39;&quot;, 61874], [&quot;&#39;t&#39;&quot;, 61986], [&quot;&#39;o&#39;&quot;, 62098], [&quot;&#39;r&#39;&quot;, 62162], [&quot;&#39;y&#39;&quot;, 62242], [&quot;&#39;\\r\\n&#39;&quot;, 62450], [&quot;&#39;    1  hdfs\\r\\n    2  hdfs dfs -ls\\r\\n    3  hdfs dfs -ls input\\r\\n    4  history\\r\\nbash-4.1# &#39;&quot;, 62456], [&quot;&#39;\\r\\n&#39;&quot;, 69382], [&quot;&#39;bash-4.1# hdfs dfs -mkdir /users&#39;&quot;, 69390], [&quot;&#39;\\r\\n&#39;&quot;, 70011], [&quot;&#39;bash-4.1# &#39;&quot;, 73223], [&quot;&#39;h&#39;&quot;, 74275], [&quot;&#39;d&#39;&quot;, 74330], [&quot;&#39;f&#39;&quot;, 74435], [&quot;&#39;s&#39;&quot;, 74546], [&quot;&#39; &#39;&quot;, 74658], [&quot;&#39;d&#39;&quot;, 74738], [&quot;&#39;f&#39;&quot;, 74818], [&quot;&#39;s&#39;&quot;, 74930], [&quot;&#39; &#39;&quot;, 75034], [&quot;&#39;-&#39;&quot;, 75242], [&quot;&#39;m&#39;&quot;, 75458], [&quot;&#39;k&#39;&quot;, 75554], [&quot;&#39;d&#39;&quot;, 75786], [&quot;&#39;i&#39;&quot;, 75866], [&quot;&#39;r&#39;&quot;, 75938], [&quot;&#39; &#39;&quot;, 76018], [&quot;&#39;/&#39;&quot;, 76291], [&quot;&#39;u&#39;&quot;, 77626], [&quot;&#39;s&#39;&quot;, 77722], [&quot;&#39;e&#39;&quot;, 77795], [&quot;&#39;r&#39;&quot;, 77866], [&quot;&#39;s&#39;&quot;, 78003], [&quot;&#39;/&#39;&quot;, 78179], [&quot;&#39;b&#39;&quot;, 79186], [&quot;&#39;o&#39;&quot;, 79298], [&quot;&#39;o&#39;&quot;, 79443], [&quot;&#39;t&#39;&quot;, 79547], [&quot;&#39;i&#39;&quot;, 79643], [&quot;&#39;n&#39;&quot;, 79706], [&quot;&#39;g&#39;&quot;, 79739], [&quot;&#39;e&#39;&quot;, 79866], [&quot;&#39;\\r\\n&#39;&quot;, 80291], [&quot;&#39;bash-4.1# &#39;&quot;, 83482], [&quot;&#39;h&#39;&quot;, 92587], [&quot;&#39;d&#39;&quot;, 92675], [&quot;&#39;f&#39;&quot;, 92747], [&quot;&#39;s&#39;&quot;, 92852], [&quot;&#39; &#39;&quot;, 93075], [&quot;&#39;d&#39;&quot;, 93403], [&quot;&#39;f&#39;&quot;, 93523], [&quot;&#39;s&#39;&quot;, 93652], [&quot;&#39; &#39;&quot;, 93835], [&quot;&#39;-&#39;&quot;, 94115], [&quot;&#39;r&#39;&quot;, 94771], [&quot;&#39;m&#39;&quot;, 94875], [&quot;&#39;d&#39;&quot;, 95155], [&quot;&#39;i&#39;&quot;, 95355], [&quot;&#39;r&#39;&quot;, 97107], [&quot;&#39; &#39;&quot;, 98012], [&quot;&#39;/&#39;&quot;, 98300], [&quot;&#39;u&#39;&quot;, 98739], [&quot;&#39;s&#39;&quot;, 98884], [&quot;&#39;e&#39;&quot;, 98947], [&quot;&#39;r&#39;&quot;, 98995], [&quot;&#39;s&#39;&quot;, 99132], [&quot;&#39;/&#39;&quot;, 99300], [&quot;&#39;b&#39;&quot;, 99580], [&quot;&#39;o&#39;&quot;, 99732], [&quot;&#39;o&#39;&quot;, 99867], [&quot;&#39;t&#39;&quot;, 99972], [&quot;&#39;i&#39;&quot;, 100084], [&quot;&#39;n&#39;&quot;, 100123], [&quot;&#39;g&#39;&quot;, 100179], [&quot;&#39;e&#39;&quot;, 100307], [&quot;&#39;\\r\\n&#39;&quot;, 102515], [&quot;&#39;bash-4.1# &#39;&quot;, 105518], [&quot;&#39;hdfs dfs -rmdir /users/bootinge&#39;&quot;, 105980], [&quot;&#39;\\x08 \\x08&#39;&quot;, 106356], [&quot;&#39;\\x08 \\x08&#39;&quot;, 106540], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107040], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107124], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107209], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107293], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107377], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107462], [&quot;&#39;\\x08 \\x08&#39;&quot;, 107667], [&quot;&#39;\\r\\n&#39;&quot;, 107932], [&quot;&#39;bash-4.1# &#39;&quot;, 110928], [&quot;&#39;l&#39;&quot;, 111500], [&quot;&#39;s&#39;&quot;, 111557], [&quot;&#39; &#39;&quot;, 111660], [&quot;&#39;-&#39;&quot;, 111764], [&quot;&#39;\\x08 \\x08&#39;&quot;, 112144], [&quot;&#39;/&#39;&quot;, 113076], [&quot;&#39;e&#39;&quot;, 113332], [&quot;&#39;t&#39;&quot;, 113396], [&quot;&#39;c&#39;&quot;, 113556], [&quot;&#39;/&#39;&quot;, 113660], [&quot;&#39;h&#39;&quot;, 114604], [&quot;&#39;a&#39;&quot;, 114628], [&quot;&#39;d&#39;&quot;, 114708], [&quot;&#39;\\x07&#39;&quot;, 114876], [&quot;&#39;\\x08 \\x08&#39;&quot;, 115540], [&quot;&#39;\\x08 \\x08&#39;&quot;, 115716], [&quot;&#39;\\x08 \\x08&#39;&quot;, 115860], [&quot;&#39;h&#39;&quot;, 116428], [&quot;&#39;a&#39;&quot;, 116484], [&quot;&#39;d&#39;&quot;, 116540], [&quot;&#39;\\x07&#39;&quot;, 116733], [&quot;&#39;\\x07&#39;&quot;, 116934], [&quot;&#39;^C&#39;&quot;, 117565], [&quot;&#39;\\r\\n&#39;&quot;, 117565], [&quot;&#39;bash-4.1# &#39;&quot;, 117565], [&quot;&#39;l&#39;&quot;, 118956], [&quot;&#39;s&#39;&quot;, 119009], [&quot;&#39;\\r\\n&#39;&quot;, 119148], [&quot;&#39;bin  boot  dev&#39;&quot;, 119154], [&quot;&#39;\\t&#39;&quot;, 119154], [&quot;&#39;etc  home  lib&#39;&quot;, 119155], [&quot;&#39;\\t&#39;&quot;, 119155], [&quot;&#39;lib64  media  mnt  opt&#39;&quot;, 119155], [&quot;&#39;\\t&#39;&quot;, 119155], [&quot;&#39;pam-1.1.1-17.el6.src.rpm  proc&#39;&quot;, 119155], [&quot;&#39;\\t&#39;&quot;, 119156], [&quot;&#39;root  rpmbuild&#39;&quot;, 119156], [&quot;&#39;\\tsbin  selinux  srv  sys  tmp  usr  var\\r\\nbash-4.1# &#39;&quot;, 119156], [&quot;&#39;c&#39;&quot;, 119724], [&quot;&#39;d&#39;&quot;, 119756], [&quot;&#39; &#39;&quot;, 119844], [&quot;&#39;h&#39;&quot;, 120052], [&quot;&#39;a&#39;&quot;, 120165], [&quot;&#39;d&#39;&quot;, 120220], [&quot;&#39;\\x07&#39;&quot;, 120413], [&quot;&#39;\\x08 \\x08&#39;&quot;, 121053], [&quot;&#39;\\x08 \\x08&#39;&quot;, 121205], [&quot;&#39;\\x08 \\x08&#39;&quot;, 121372], [&quot;&#39;/&#39;&quot;, 122188], [&quot;&#39;u&#39;&quot;, 122540], [&quot;&#39;s&#39;&quot;, 122644], [&quot;&#39;r&#39;&quot;, 122708], [&quot;&#39;/&#39;&quot;, 122876], [&quot;&#39;l&#39;&quot;, 123117], [&quot;&#39;o&#39;&quot;, 123277], [&quot;&#39;cal/&#39;&quot;, 123328], [&quot;&#39;\\r\\n&#39;&quot;, 123500], [&quot;&#39;bash-4.1# &#39;&quot;, 123506], [&quot;&#39;l&#39;&quot;, 123701], [&quot;&#39;s&#39;&quot;, 123796], [&quot;&#39;\\r\\n&#39;&quot;, 123861], [&quot;&#39;bin  etc  games  hadoop  hadoop-2.6.0  include&#39;&quot;, 123871], [&quot;&#39;\\t&#39;&quot;, 123871], [&quot;&#39;lib  lib64  libexec  sbin  share  spark  spark-1.6.0-bin-hadoop2.6  src&#39;&quot;, 123871], [&quot;&#39;\\r\\n&#39;&quot;, 123872], [&quot;&#39;bash-4.1# &#39;&quot;, 123872], [&quot;&#39;c&#39;&quot;, 123914], [&quot;&#39;d&#39;&quot;, 123973], [&quot;&#39; &#39;&quot;, 124077], [&quot;&#39;h&#39;&quot;, 124285], [&quot;&#39;a&#39;&quot;, 124437], [&quot;&#39;d&#39;&quot;, 124516], [&quot;&#39;\\x07&#39;&quot;, 124716], [&quot;&#39;oop&#39;&quot;, 124717], [&quot;&#39;\\r\\n&#39;&quot;, 125013], [&quot;&#39;bash-4.1# &#39;&quot;, 125019], [&quot;&#39;l&#39;&quot;, 125244], [&quot;&#39;s&#39;&quot;, 125292], [&quot;&#39;\\r\\n&#39;&quot;, 125388], [&quot;&#39;LICENSE.txt  NOTICE.txt  README.txt  bin  etc  include&#39;&quot;, 125396], [&quot;&#39;\\t&#39;&quot;, 125397], [&quot;&#39;input  lib  libexec  logs  sbin  share&#39;&quot;, 125397], [&quot;&#39;\\r\\n&#39;&quot;, 125397], [&quot;&#39;bash-4.1# &#39;&quot;, 125398], [&quot;&#39;c&#39;&quot;, 125446], [&quot;&#39;d&#39;&quot;, 125492], [&quot;&#39; &#39;&quot;, 125580], [&quot;&#39;e&#39;&quot;, 126468], [&quot;&#39;t&#39;&quot;, 126548], [&quot;&#39;c&#39;&quot;, 126716], [&quot;&#39;\\r\\n&#39;&quot;, 126900], [&quot;&#39;bash-4.1# &#39;&quot;, 126905], [&quot;&#39;l&#39;&quot;, 127133], [&quot;&#39;s&#39;&quot;, 127176], [&quot;&#39;c&#39;&quot;, 127292], [&quot;&#39;\\r\\n&#39;&quot;, 127308], [&quot;&#39;bash: lsc: command not found\\r\\nbash-4.1# &#39;&quot;, 127314], [&quot;&#39;d&#39;&quot;, 127372], [&quot;&#39; &#39;&quot;, 127597], [&quot;&#39;\\x08 \\x08&#39;&quot;, 128053], [&quot;&#39;\\x08 \\x08&#39;&quot;, 128213], [&quot;&#39;\\x07&#39;&quot;, 128365], [&quot;&#39;\\x07&#39;&quot;, 128500], [&quot;&#39;l&#39;&quot;, 128730], [&quot;&#39;s&#39;&quot;, 128804], [&quot;&#39;\\r\\n&#39;&quot;, 128917], [&quot;&#39;hadoop&#39;&quot;, 128926], [&quot;&#39;\\r\\n&#39;&quot;, 128926], [&quot;&#39;bash-4.1# &#39;&quot;, 128927], [&quot;&#39;c&#39;&quot;, 128996], [&quot;&#39;d&#39;&quot;, 129042], [&quot;&#39; &#39;&quot;, 129148], [&quot;&#39;h&#39;&quot;, 130485], [&quot;&#39;a&#39;&quot;, 130533], [&quot;&#39;d&#39;&quot;, 130597], [&quot;&#39;oop/&#39;&quot;, 130828], [&quot;&#39;\\r\\n&#39;&quot;, 131325], [&quot;&#39;bash-4.1# &#39;&quot;, 131331], [&quot;&#39;l&#39;&quot;, 131532], [&quot;&#39;s&#39;&quot;, 131604], [&quot;&#39;\\r\\n&#39;&quot;, 131672], [&quot;&#39;capacity-scheduler.xml&#39;&quot;, 131675], [&quot;&#39;\\t&#39;&quot;, 131675], [&quot;&#39;hadoop-env.cmd&#39;&quot;, 131676], [&quot;&#39;\\t&#39;&quot;, 131676], [&quot;&#39;\\t&#39;&quot;, 131676], [&quot;&#39;    hdfs-site.xml&#39;&quot;, 131677], [&quot;&#39;\\t&#39;&quot;, 131677], [&quot;&#39;     kms-acls.xml&#39;&quot;, 131677], [&quot;&#39;\\t&#39;&quot;, 131677], [&quot;&#39;   mapred-env.cmd&#39;&quot;, 131677], [&quot;&#39;\\t&#39;&quot;, 131677], [&quot;&#39;       slaves\\t\\t       yarn-site.xml\\r\\nconfiguration.xsl\\thadoop-env.sh\\t\\t    httpfs-env.sh\\t     kms-env.sh\\t\\t   mapred-env.sh\\t       ssl-client.xml.example\\r\\ncontainer-executor.cfg\\thadoop-metrics.properties   httpfs-log4j.properties  kms-log4j.properties  mapred-queues.xml.template  ssl-server.xml.example\\r\\ncore-site.xml\\t\\thadoop-metrics2.properties  httpfs-signature.secret  kms-site.xml\\t   mapred-site.xml\\t       yarn-env.cmd\\r\\ncore-site.xml.template\\thadoop-policy.xml\\t    httpfs-site.xml\\t     log4j.properties\\t   mapred-site.xml.template    yarn-env.sh\\r\\nbash-4.1# &#39;&quot;, 131678], [&quot;&#39;l&#39;&quot;, 132748], [&quot;&#39;s&#39;&quot;, 132805], [&quot;&#39; &#39;&quot;, 132877], [&quot;&#39;-&#39;&quot;, 132997], [&quot;&#39;a&#39;&quot;, 133060], [&quot;&#39;l&#39;&quot;, 133213], [&quot;&#39;\\r\\n&#39;&quot;, 133381], [&quot;&#39;total 168&#39;&quot;, 133388], [&quot;&#39;\\r\\n&#39;&quot;, 133388], [&quot;&#39;drwxr-xr-x  2 20000 20000  4096 Feb 12 00:00 .&#39;&quot;, 133389], [&quot;&#39;\\r\\n&#39;&quot;, 133389], [&quot;&#39;drwxr-xr-x 13 20000 20000  4096 Feb 12 00:00 ..&#39;&quot;, 133389], [&quot;&#39;\\r\\n&#39;&quot;, 133389], [&quot;&#39;-rw-r--r--  1 20000 20000  4436 Nov 13  2014 capacity-scheduler.xml&#39;&quot;, 133390], [&quot;&#39;\\r\\n&#39;&quot;, 133390], [&quot;&#39;-rw-r--r--  1 20000 20000  1335 Nov 13  2014 configuration.xsl&#39;&quot;, 133390], [&quot;&#39;\\r\\n&#39;&quot;, 133390], [&quot;&#39;-rw-r--r--  1 20000 20000   318 Nov 13  2014 container-executor.cfg&#39;&quot;, 133391], [&quot;&#39;\\r\\n&#39;&quot;, 133391], [&quot;&#39;-rw-r--r--  1 20000 20000   158 Feb 12 00:00 core-site.xml&#39;&quot;, 133391], [&quot;&#39;\\r\\n&#39;&quot;, 133391], [&quot;&#39;-rw-r--r--  1 root  root    154 Jan 15  2015 core-site.xml.template&#39;&quot;, 133391], [&quot;&#39;\\r\\n&#39;&quot;, 133392], [&quot;&#39;-rw-r--r--  1 20000 20000  3670 Nov 13  2014 hadoop-env.cmd&#39;&quot;, 133392], [&quot;&#39;\\r\\n-rwxr-xr-x  1 20000 20000  4302 Jan 15  2015 hadoop-env.sh\\r\\n-rw-r--r--  1 20000 20000  2490 Nov 13  2014 hadoop-metrics.properties\\r\\n-rw-r--r--  1 20000 20000  2598 Nov 13  2014 hadoop-metrics2.properties\\r\\n-rw-r--r--  1 20000 20000  9683 Nov 13  2014 hadoop-policy.xml\\r\\n-rw-r--r--  1 root  root    126 Jan 15  2015 hdfs-site.xml\\r\\n-rwxr-xr-x  1 20000 20000  1449 Nov 13  2014 httpfs-env.sh\\r\\n-rw-r--r--  1 20000 20000  1657 Nov 13  2014 httpfs-log4j.properties\\r\\n-rw-r--r--  1 20000 20000    21 Nov 13  2014 httpfs-signature.secret\\r\\n-rw-r--r--  1 20000 20000   620 Nov 13  2014 httpfs-site.xml\\r\\n-rw-r--r--  1 20000 20000  3523 Nov 13  2014 kms-acls.xml\\r\\n-rwxr-xr-x  1 20000 20000  1325 Nov 13  2014 kms-env.sh\\r\\n-rw-r--r--  1 20000 20000  1631 Nov 13  2014 kms-log4j.properties\\r\\n-rw-r--r--  1 20000 20000  5511 Nov 13  2014 kms-site.xml\\r\\n-rw-r--r--  1 20000 20000 11291 Nov 13  2014 log4j.properties\\r\\n-rw-r--r--  1 20000 20000   938 Nov 13  2014 mapred-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  1383 Nov 13  2014 mapred-env.sh\\r\\n-rw-r&#39;&quot;, 133393], [&quot;&#39;--r--  1 20000 20000  4113 Nov 13  2014 mapred-queues.xml.template\\r\\n-rw-r--r--  1 root  root    138 Jan 15  2015 mapred-site.xml\\r\\n-rw-r--r--  1 20000 20000   758 Nov 13  2014 mapred-site.xml.template\\r\\n-rw-r--r--  1 20000 20000    10 Nov 13  2014 slaves\\r\\n-rw-r--r--  1 20000 20000  2316 Nov 13  2014 ssl-client.xml.example\\r\\n-rw-r--r--  1 20000 20000  2268 Nov 13  2014 ssl-server.xml.example\\r\\n-rw-r--r--  1 20000 20000  2237 Nov 13  2014 yarn-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  4567 Nov 13  2014 yarn-env.sh\\r\\n-rw-r--r--  1 root  root   1525 Jan 15  2015 yarn-site.xml\\r\\nbash-4.1# &#39;&quot;, 133393], [&quot;&#39;h&#39;&quot;, 136133], [&quot;&#39;d&#39;&quot;, 136181], [&quot;&#39;f&#39;&quot;, 136341], [&quot;&#39;s&#39;&quot;, 136453], [&quot;&#39; &#39;&quot;, 136557], [&quot;&#39;d&#39;&quot;, 136653], [&quot;&#39;f&#39;&quot;, 136749], [&quot;&#39;s&#39;&quot;, 136869], [&quot;&#39; &#39;&quot;, 136997], [&quot;&#39;-&#39;&quot;, 137597], [&quot;&#39;l&#39;&quot;, 137845], [&quot;&#39;s&#39;&quot;, 137917], [&quot;&#39; &#39;&quot;, 138053], [&quot;&#39;/&#39;&quot;, 138757], [&quot;&#39;i&#39;&quot;, 139021], [&quot;&#39;n&#39;&quot;, 139085], [&quot;&#39;p&#39;&quot;, 139245], [&quot;&#39;u&#39;&quot;, 139293], [&quot;&#39;t&#39;&quot;, 139359], [&quot;&#39;\\r\\n&#39;&quot;, 139645], [&quot;&#39;ls: `/input\\&#39;: No such file or directory&#39;&quot;, 142456], [&quot;&#39;\\r\\n&#39;&quot;, 142456], [&quot;&#39;bash-4.1# &#39;&quot;, 142800], [&quot;&#39;hdfs dfs -ls /input&#39;&quot;, 143821], [&quot;&#39;\\x08&#39;&quot;, 143989], [&quot;&#39;\\x08&#39;&quot;, 144146], [&quot;&#39;\\x08&#39;&quot;, 144301], [&quot;&#39;\\x08&#39;&quot;, 144437], [&quot;&#39;\\x08&#39;&quot;, 144573], [&quot;&#39;\\x08\\x1b[1P&#39;&quot;, 144885], [&quot;&#39;\\r\\n&#39;&quot;, 145093], [&quot;&#39;Found 31 items&#39;&quot;, 147974], [&quot;&#39;\\r\\n&#39;&quot;, 147978], [&quot;&#39;-rw-r--r--   1 root supergroup       4436 2015-01-15 04:05 input/capacity-scheduler.xml&#39;&quot;, 147979], [&quot;&#39;\\r\\n&#39;&quot;, 147980], [&quot;&#39;-rw-r--r--   1 root supergroup       1335 2015-01-15 04:05 input/configuration.xsl&#39;&quot;, 147981], [&quot;&#39;\\r\\n&#39;&quot;, 147982], [&quot;&#39;-rw-r--r--   1 root supergroup        318 2015-01-15 04:05 input/container-executor.cfg&#39;&quot;, 147982], [&quot;&#39;\\r\\n&#39;&quot;, 147983], [&quot;&#39;-rw-r--r--   1 root supergroup        155 2015-01-15 04:05 input/core-site.xml&#39;&quot;, 147983], [&quot;&#39;\\r\\n&#39;&quot;, 147984], [&quot;&#39;-rw-r--r--   1 root supergroup        154 2015-01-15 04:05 input/core-site.xml.template&#39;&quot;, 147985], [&quot;&#39;\\r\\n&#39;&quot;, 147985], [&quot;&#39;-rw-r--r--   1 root supergroup       3670 2015-01-15 04:05 input/hadoop-env.cmd&#39;&quot;, 147986], [&quot;&#39;\\r\\n&#39;&quot;, 147986], [&quot;&#39;-rw-r--r--   1 root supergroup       4302 2015-01-15 04:05 input/hadoop-env.sh&#39;&quot;, 147987], [&quot;&#39;\\r\\n&#39;&quot;, 147987], [&quot;&#39;-rw-r--r--   1 root supergroup       2490 2015-01-15 04:05 input/hadoop-metrics.properties&#39;&quot;, 147988], [&quot;&#39;\\r\\n&#39;&quot;, 147988], [&quot;&#39;-rw-r--r--   1 root supergroup       2598 2015-01-15 04:05 input/hadoop-metrics2.properties&#39;&quot;, 147989], [&quot;&#39;\\r\\n&#39;&quot;, 147989], [&quot;&#39;-rw-r--r--   1 root supergroup       9683 2015-01-15 04:05 input/hadoop-policy.xml&#39;&quot;, 147989], [&quot;&#39;\\r\\n&#39;&quot;, 147990], [&quot;&#39;-rw-r--r--   1 root supergroup        126 2015-01-15 04:05 input/hdfs-site.xml&#39;&quot;, 147990], [&quot;&#39;\\r\\n&#39;&quot;, 147991], [&quot;&#39;-rw-r--r--   1 root supergroup       1449 2015-01-15 04:05 input/httpfs-env.sh&#39;&quot;, 147991], [&quot;&#39;\\r\\n&#39;&quot;, 147991], [&quot;&#39;-rw-r--r--   1 root supergroup       1657 2015-01-15 04:05 input/httpfs-log4j.properties&#39;&quot;, 147992], [&quot;&#39;\\r\\n&#39;&quot;, 147993], [&quot;&#39;-rw-r--r--   1 root supergroup         21 2015-01-15 04:05 input/httpfs-signature.secret&#39;&quot;, 147993], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup        620 2015-01-15 04:05 input/httpfs-site.xml&#39;&quot;, 147993], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       3523 2015-01-15 04:05 input/kms-acls.xml&#39;&quot;, 147995], [&quot;&#39;\\r\\n&#39;&quot;, 147995], [&quot;&#39;-rw-r--r--   1 root supergroup       1325 2015-01-15 04:05 input/kms-env.sh&#39;&quot;, 147996], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       1631 2015-01-15 04:05 input/kms-log4j.properties&#39;&quot;, 147997], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       5511 2015-01-15 04:05 input/kms-site.xml\\r\\n-rw-r--r--   1 root supergroup      11291 2015-01-15 04:05 input/log4j.properties\\r\\n-rw-r--r--   1 root supergroup        938 2015-01-15 04:05 input/mapred-env.cmd\\r\\n-rw-r--r--   1 root supergroup       1383 2015-01-15 04:05 input/mapred-env.sh&#39;&quot;, 147998], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       4113 2015-01-15 04:05 input/mapred-queues.xml.template&#39;&quot;, 147998], [&quot;&#39;\\r\\n&#39;&quot;, 147999], [&quot;&#39;-rw-r--r--   1 root supergroup        138 2015-01-15 04:05 input/mapred-site.xml&#39;&quot;, 147999], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup        758 2015-01-15 04:05 input/mapred-site.xml.template\\r\\n-rw-r--r--   1 root supergroup         10 2015-01-15 04:05 input/slaves\\r\\n-rw-r--r--   1 root supergroup       2316 2015-01-15 04:05 input/ssl-client.xml.example&#39;&quot;, 148000], [&quot;&#39;\\r\\n-rw-r--r--   1 root supergroup       2268 2015-01-15 04:05 input/ssl-server.xml.example&#39;&quot;, 148001], [&quot;&#39;\\r\\n&#39;&quot;, 148001], [&quot;&#39;-rw-r--r--   1 root supergroup       2237 2015-01-15 04:05 input/yarn-env.cmd&#39;&quot;, 148002], [&quot;&#39;\\r\\n&#39;&quot;, 148002], [&quot;&#39;-rw-r--r--   1 root supergroup       4567 2015-01-15 04:05 input/yarn-env.sh&#39;&quot;, 148005], [&quot;&#39;\\r\\n&#39;&quot;, 148005], [&quot;&#39;-rw-r--r--   1 root supergroup       1525 2015-01-15 04:05 input/yarn-site.xml&#39;&quot;, 148005], [&quot;&#39;\\r\\n&#39;&quot;, 148006], [&quot;&#39;bash-4.1# &#39;&quot;, 148344], [&quot;&#39;p&#39;&quot;, 158430], [&quot;&#39;s&#39;&quot;, 158526], [&quot;&#39; &#39;&quot;, 158577], [&quot;&#39;-&#39;&quot;, 158709], [&quot;&#39;e&#39;&quot;, 158798], [&quot;&#39;f&#39;&quot;, 158854], [&quot;&#39; &#39;&quot;, 158909], [&quot;&#39;|&#39;&quot;, 159094], [&quot;&#39; &#39;&quot;, 159214], [&quot;&#39;g&#39;&quot;, 159294], [&quot;&#39;r&#39;&quot;, 159446], [&quot;&#39;e&#39;&quot;, 159526], [&quot;&#39;p&#39;&quot;, 159989], [&quot;&#39; &#39;&quot;, 160110], [&quot;&#39;y&#39;&quot;, 160334], [&quot;&#39;a&#39;&quot;, 160446], [&quot;&#39;r&#39;&quot;, 160502], [&quot;&#39;n&#39;&quot;, 160662], [&quot;&#39;\\r\\n&#39;&quot;, 160829], [&quot;&#39;root       491     1  5 00:00 ?        00:00:07 /usr/java/default/bin/java -Dproc_resourcemanager -Xmx1000m -Dhadoop.log.dir=/usr/local/hadoop/logs -Dyarn.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=yarn--resourcemanager-f4491d85c28c.log -Dyarn.log.file=yarn--resourcemanager-f4491d85c28c.log -Dyarn.home.dir= -Dyarn.id.str= -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/local/hadoop/lib/native -Dyarn.policy.file=hadoop-policy.xml -Dhadoop.log.dir=/usr/local/hadoop/logs -Dyarn.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=yarn--resourcemanager-f4491d85c28c.log -Dyarn.log.file=yarn--resourcemanager-f4491d85c28c.log -Dyarn.home.dir=/usr/local/hadoop -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/local/hadoop/lib/native -classpath /usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/&#39;&quot;, 160839], [&quot;&#39;*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/contrib/capacity-scheduler/*.jar:/usr/local/hadoop/contrib/capacity-scheduler/*.jar:/usr/local/hadoop/contrib/capacity-scheduler/*.jar:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/etc/hadoop//rm-config/log4j.properties org.apache.hadoop.yarn.server.resourcemanager.ResourceManager&#39;&quot;, 160839], [&quot;&#39;\\r\\n&#39;&quot;, 160839], [&quot;&#39;root       571     1  4 00:00 ?        00:00:05 /usr/java/default/bin/java -Dproc_nodemanager -Xmx1000m -Dhadoop.log.dir=/usr/local/hadoop/logs -Dyarn.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=yarn-root-nodemanager-f4491d85c28c.log -Dyarn.log.file=yarn-root-nodemanager-f4491d85c28c.log -Dyarn.home.dir= -Dyarn.id.str=root -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/local/hadoop/lib/native -Dyarn.policy.file=hadoop-policy.xml -server -Dhadoop.log.dir=/usr/local/hadoop/logs -Dyarn.log.dir=/usr/local/hadoop/logs -Dhadoop.log.file=yarn-root-nodemanager-f4491d85c28c.log -Dyarn.log.file=yarn-root-nodemanager-f4491d85c28c.log -Dyarn.home.dir=/usr/local/hadoop -Dhadoop.home.dir=/usr/local/hadoop -Dhadoop.root.logger=INFO,RFA -Dyarn.root.logger=INFO,RFA -Djava.library.path=/usr/local/hadoop/lib/native -classpath /usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/etc/hadoop/:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop&#39;&quot;, 160840], [&quot;&#39;/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/contrib/capacity-scheduler/*.jar:/usr/local/hadoop/contrib/capacity-scheduler/*.jar:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/etc/hadoop//nm-config/log4j.properties org.apache.hadoop.yarn.server.nodemanager.NodeManager&#39;&quot;, 160840], [&quot;&#39;\\r\\n&#39;&quot;, 160840], [&quot;&#39;root      1183   598  0 00:02 ?        00:00:00 grep yarn&#39;&quot;, 160841], [&quot;&#39;\\r\\n&#39;&quot;, 160841], [&quot;&#39;bash-4.1# &#39;&quot;, 160841], [&quot;&#39;ps -ef | grep yarn&#39;&quot;, 199648], [&quot;&#39;\\rbash-4.1# \\x1b[K&#39;&quot;, 200119], [&quot;&#39;l&#39;&quot;, 201184], [&quot;&#39;s&#39;&quot;, 201255], [&quot;&#39; &#39;&quot;, 201337], [&quot;&#39;-&#39;&quot;, 201416], [&quot;&#39;a&#39;&quot;, 201591], [&quot;&#39;l&#39;&quot;, 201711], [&quot;&#39;\\r\\n&#39;&quot;, 202031], [&quot;&#39;total 168&#39;&quot;, 202038], [&quot;&#39;\\r\\n&#39;&quot;, 202038], [&quot;&#39;drwxr-xr-x  2 20000 20000  4096 Feb 12 00:00 .&#39;&quot;, 202039], [&quot;&#39;\\r\\n&#39;&quot;, 202039], [&quot;&#39;drwxr-xr-x 13 20000 20000  4096 Feb 12 00:00 ..&#39;&quot;, 202039], [&quot;&#39;\\r\\n&#39;&quot;, 202040], [&quot;&#39;-rw-r--r--  1 20000 20000  4436 Nov 13  2014 capacity-scheduler.xml&#39;&quot;, 202040], [&quot;&#39;\\r\\n&#39;&quot;, 202040], [&quot;&#39;-rw-r--r--  1 20000 20000  1335 Nov 13  2014 configuration.xsl&#39;&quot;, 202040], [&quot;&#39;\\r\\n-rw-r--r--  1 20000 20000   318 Nov 13  2014 container-executor.cfg&#39;&quot;, 202041], [&quot;&#39;\\r\\n-rw-r--r--  1 20000 20000   158 Feb 12 00:00 core-site.xml\\r\\n-rw-r--r--  1 root  root    154 Jan 15  2015 core-site.xml.template\\r\\n-rw-r--r--  1 20000 20000  3670 Nov 13  2014 hadoop-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  4302 Jan 15  2015 hadoop-env.sh\\r\\n-rw-r--r--  1 20000 20000  2490 Nov 13  2014 hadoop-metrics.properties\\r\\n-rw-r--r--  1 20000 20000  2598 Nov 13  2014 hadoop-metrics2.properties\\r\\n-rw-r--r--  1 20000 20000  9683 Nov 13  2014 hadoop-policy.xml\\r\\n-rw-r--r--  1 root  root    126 Jan 15  2015 hdfs-site.xml\\r\\n-rwxr-xr-x  1 20000 20000  1449 Nov 13  2014 httpfs-env.sh\\r\\n-rw-r--r--  1 20000 20000  1657 Nov 13  2014 httpfs-log4j.properties\\r\\n-rw-r--r--  1 20000 20000    21 Nov 13  2014 httpfs-signature.secret\\r\\n-rw-r--r--  1 20000 20000   620 Nov 13  2014 httpfs-site.xml\\r\\n-rw-r--r--  1 20000 20000  3523 Nov 13  2014 kms-acls.xml\\r\\n-rwxr-xr-x  1 20000 20000  1325 Nov 13  2014 kms-env.sh\\r\\n-rw-r--r--  1 20000 20000  1631 Nov 13  2014 kms-log4j.properties\\r\\n-rw-r--r--  1 20000 20000  5511 Nov 13  2014 kms-site.xml\\r&#39;&quot;, 202041], [&quot;&#39;\\n-rw-r--r--  1 20000 20000 11291 Nov 13  2014 log4j.properties\\r\\n-rw-r--r--  1 20000 20000   938 Nov 13  2014 mapred-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  1383 Nov 13  2014 mapred-env.sh\\r\\n-rw-r--r--  1 20000 20000  4113 Nov 13  2014 mapred-queues.xml.template\\r\\n-rw-r--r--  1 root  root    138 Jan 15  2015 mapred-site.xml\\r\\n-rw-r--r--  1 20000 20000   758 Nov 13  2014 mapred-site.xml.template\\r\\n-rw-r--r--  1 20000 20000    10 Nov 13  2014 slaves\\r\\n-rw-r--r--  1 20000 20000  2316 Nov 13  2014 ssl-client.xml.example\\r\\n-rw-r--r--  1 20000 20000  2268 Nov 13  2014 ssl-server.xml.example\\r\\n-rw-r--r--  1 20000 20000  2237 Nov 13  2014 yarn-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  4567 Nov 13  2014 yarn-env.sh\\r\\n-rw-r--r--  1 root  root   1525 Jan 15  2015 yarn-site.xml\\r\\n&#39;&quot;, 202041], [&quot;&#39;bash-4.1# &#39;&quot;, 202042], [&quot;&#39;/&#39;&quot;, 205208], [&quot;&#39;\\x08 \\x08&#39;&quot;, 205504], [&quot;&#39;/&#39;&quot;, 205848], [&quot;&#39;\\x08 \\x08&#39;&quot;, 206320], [&quot;&#39;~&#39;&quot;, 206600], [&quot;&#39;/&#39;&quot;, 206743], [&quot;&#39;\\x08 \\x08&#39;&quot;, 207360], [&quot;&#39;\\x08 \\x08&#39;&quot;, 207511], [&quot;&#39;/&#39;&quot;, 207840], [&quot;&#39;u&#39;&quot;, 208104], [&quot;&#39;s&#39;&quot;, 208192], [&quot;&#39;r&#39;&quot;, 208263], [&quot;&#39;/&#39;&quot;, 208879], [&quot;&#39;l&#39;&quot;, 209128], [&quot;&#39;o&#39;&quot;, 209296], [&quot;&#39;cal/&#39;&quot;, 209384], [&quot;&#39;h&#39;&quot;, 209808], [&quot;&#39;a&#39;&quot;, 209871], [&quot;&#39;d&#39;&quot;, 209936], [&quot;&#39;\\x07&#39;&quot;, 210144], [&quot;&#39;oop&#39;&quot;, 210144], [&quot;&#39;\\x08 \\x08&#39;&quot;, 210680], [&quot;&#39;\\x08 \\x08&#39;&quot;, 210840], [&quot;&#39;\\x08 \\x08&#39;&quot;, 211008], [&quot;&#39;\\x08 \\x08&#39;&quot;, 211152], [&quot;&#39;\\x08 \\x08&#39;&quot;, 211311], [&quot;&#39;\\x08 \\x08&#39;&quot;, 211456], [&quot;&#39;s&#39;&quot;, 211632], [&quot;&#39;h&#39;&quot;, 211720], [&quot;&#39;are/&#39;&quot;, 211841], [&quot;&#39;\\x07&#39;&quot;, 212082], [&quot;&#39;\\r\\n&#39;&quot;, 212249], [&quot;&#39;applications/ info/         man/          &#39;&quot;, 212249], [&quot;&#39;\\r\\n&#39;&quot;, 212250], [&quot;&#39;bash-4.1# /usr/local/share/&#39;&quot;, 212250], [&quot;&#39;\\x08 \\x08&#39;&quot;, 213648], [&quot;&#39;\\x08 \\x08&#39;&quot;, 213824], [&quot;&#39;\\x08 \\x08&#39;&quot;, 213992], [&quot;&#39;\\x08 \\x08&#39;&quot;, 214152], [&quot;&#39;\\x08 \\x08&#39;&quot;, 214312], [&quot;&#39;\\x08 \\x08&#39;&quot;, 214464], [&quot;&#39;h&#39;&quot;, 214776], [&quot;&#39;a&#39;&quot;, 214872], [&quot;&#39;d&#39;&quot;, 214928], [&quot;&#39;\\x07&#39;&quot;, 215136], [&quot;&#39;oop&#39;&quot;, 215136], [&quot;&#39;\\x07&#39;&quot;, 215354], [&quot;&#39;\\r\\n&#39;&quot;, 215520], [&quot;&#39;hadoop/       hadoop-2.6.0/ &#39;&quot;, 215521], [&quot;&#39;\\r\\n&#39;&quot;, 215521], [&quot;&#39;bash-4.1# /usr/local/hadoop&#39;&quot;, 215521], [&quot;&#39;\\r\\n&#39;&quot;, 215696], [&quot;&#39;hadoop/       hadoop-2.6.0/ &#39;&quot;, 215697], [&quot;&#39;\\r\\n&#39;&quot;, 215697], [&quot;&#39;bash-4.1# /usr/local/hadoop&#39;&quot;, 215698], [&quot;&#39;/&#39;&quot;, 217576], [&quot;&#39;\\x07&#39;&quot;, 217667], [&quot;&#39;\\r\\n&#39;&quot;, 217832], [&quot;&#39;bin/     etc/     include/ input/   lib/     libexec/ logs/    sbin/    share/   &#39;&quot;, 217833], [&quot;&#39;\\r\\n&#39;&quot;, 217833], [&quot;&#39;bash-4.1# /usr/local/hadoop/&#39;&quot;, 217833], [&quot;&#39;s&#39;&quot;, 220216], [&quot;&#39;h&#39;&quot;, 220328], [&quot;&#39;are/&#39;&quot;, 220417], [&quot;&#39;\\x07&#39;&quot;, 220625], [&quot;&#39;\\r\\n&#39;&quot;, 220824], [&quot;&#39;doc/    hadoop/ &#39;&quot;, 220825], [&quot;&#39;\\r\\n&#39;&quot;, 220825], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/&#39;&quot;, 220825], [&quot;&#39;h&#39;&quot;, 222424], [&quot;&#39;a&#39;&quot;, 222472], [&quot;&#39;d&#39;&quot;, 222545], [&quot;&#39;oop/&#39;&quot;, 222720], [&quot;&#39;\\x07&#39;&quot;, 222919], [&quot;&#39;\\r\\n&#39;&quot;, 223097], [&quot;&#39;common/    hdfs/      httpfs/    kms/       mapreduce/ tools/     yarn/      &#39;&quot;, 223097], [&quot;&#39;\\r\\n&#39;&quot;, 223097], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/&#39;&quot;, 223098], [&quot;&#39;m&#39;&quot;, 224456], [&quot;&#39;a&#39;&quot;, 224512], [&quot;&#39;p&#39;&quot;, 224656], [&quot;&#39;reduce/&#39;&quot;, 224728], [&quot;&#39;\\x07&#39;&quot;, 225906], [&quot;&#39;\\r\\n&#39;&quot;, 226121], [&quot;&#39;lib/          lib-examples/ sources/      &#39;&quot;, 226121], [&quot;&#39;\\r\\n&#39;&quot;, 226122], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/mapreduce/&#39;&quot;, 226122], [&quot;&#39;h&#39;&quot;, 227448], [&quot;&#39;a&#39;&quot;, 227497], [&quot;&#39;d&#39;&quot;, 227560], [&quot;&#39;\\x07&#39;&quot;, 227745], [&quot;&#39;\\x08 \\x08&#39;&quot;, 228393], [&quot;&#39;\\x08 \\x08&#39;&quot;, 228560], [&quot;&#39;\\x08 \\x08&#39;&quot;, 228729], [&quot;&#39;l&#39;&quot;, 230288], [&quot;&#39;i&#39;&quot;, 230369], [&quot;&#39;b&#39;&quot;, 230464], [&quot;&#39;\\x07&#39;&quot;, 230849], [&quot;&#39;\\r\\n&#39;&quot;, 231049], [&quot;&#39;lib/          lib-examples/ &#39;&quot;, 231050], [&quot;&#39;\\r\\n&#39;&quot;, 231050], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/mapreduce/lib&#39;&quot;, 231051], [&quot;&#39;\\r\\n&#39;&quot;, 231217], [&quot;&#39;lib/          lib-examples/ &#39;&quot;, 231218], [&quot;&#39;\\r\\n&#39;&quot;, 231218], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/mapreduce/lib&#39;&quot;, 231218], [&quot;&#39;/&#39;&quot;, 232041], [&quot;&#39;\\x07&#39;&quot;, 232197], [&quot;&#39;\\x07&#39;&quot;, 232362], [&quot;&#39;\\x07&#39;&quot;, 232498], [&quot;&#39;\\x07&#39;&quot;, 233042], [&quot;&#39;\\x07&#39;&quot;, 233194], [&quot;&#39;\\x07&#39;&quot;, 233346], [&quot;&#39;\\x08 \\x08&#39;&quot;, 233497], [&quot;&#39;\\x08 \\x08&#39;&quot;, 233672], [&quot;&#39;\\x07&#39;&quot;, 233865], [&quot;&#39;b&#39;&quot;, 233865], [&quot;&#39;\\x07&#39;&quot;, 234041], [&quot;&#39;\\r\\n&#39;&quot;, 234211], [&quot;&#39;lib/          lib-examples/ &#39;&quot;, 234211], [&quot;&#39;\\r\\n&#39;&quot;, 234211], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/mapreduce/lib&#39;&quot;, 234211], [&quot;&#39;\\r\\n&#39;&quot;, 234377], [&quot;&#39;lib/          lib-examples/ &#39;&quot;, 234378], [&quot;&#39;\\r\\n&#39;&quot;, 234378], [&quot;&#39;bash-4.1# /usr/local/hadoop/share/hadoop/mapreduce/lib&#39;&quot;, 234378], [&quot;&#39;-&#39;&quot;, 234609], [&quot;&#39;e&#39;&quot;, 234897], [&quot;&#39;xamples/&#39;&quot;, 235089], [&quot;&#39;\\x07&#39;&quot;, 235329], [&quot;&#39;\\x07&#39;&quot;, 235489], [&quot;&#39;\\x07&#39;&quot;, 235658], [&quot;&#39;\\x07&#39;&quot;, 236338], [&quot;&#39;\\x07&#39;&quot;, 236489], [&quot;&#39;h&#39;&quot;, 237841], [&quot;&#39;\\x07&#39;&quot;, 237929], [&quot;&#39;\\x07&#39;&quot;, 238090], [&quot;&#39;\\x07&#39;&quot;, 238249], [&quot;&#39;\\x08 \\x08&#39;&quot;, 238796], [&quot;&#39;^C&#39;&quot;, 239937], [&quot;&#39;\\r\\n&#39;&quot;, 239938], [&quot;&#39;bash-4.1# &#39;&quot;, 239938], [&quot;&#39;f&#39;&quot;, 240441], [&quot;&#39;i&#39;&quot;, 240649], [&quot;&#39;n&#39;&quot;, 240697], [&quot;&#39;d&#39;&quot;, 240740], [&quot;&#39; &#39;&quot;, 240897], [&quot;&#39;.&#39;&quot;, 241065], [&quot;&#39; &#39;&quot;, 241177], [&quot;&#39;-&#39;&quot;, 241329], [&quot;&#39;a&#39;&quot;, 241633], [&quot;&#39;m&#39;&quot;, 241769], [&quot;&#39;e&#39;&quot;, 241833], [&quot;&#39; &#39;&quot;, 241945], [&quot;&#39;\\x08 \\x08&#39;&quot;, 242313], [&quot;&#39;\\x08 \\x08&#39;&quot;, 242481], [&quot;&#39;\\x08 \\x08&#39;&quot;, 242625], [&quot;&#39;\\x08 \\x08&#39;&quot;, 242777], [&quot;&#39;n&#39;&quot;, 243265], [&quot;&#39;a&#39;&quot;, 243329], [&quot;&#39;m&#39;&quot;, 243473], [&quot;&#39;e&#39;&quot;, 243569], [&quot;&#39; &#39;&quot;, 243657], [&quot;&#39;\&quot;&#39;&quot;, 243889], [&quot;&#39;h&#39;&quot;, 244225], [&quot;&#39;a&#39;&quot;, 244281], [&quot;&#39;d&#39;&quot;, 244329], [&quot;&#39;o&#39;&quot;, 244521], [&quot;&#39;o&#39;&quot;, 244673], [&quot;&#39;p&#39;&quot;, 244785], [&quot;&#39;-&#39;&quot;, 245066], [&quot;&#39;m&#39;&quot;, 245361], [&quot;&#39;a&#39;&quot;, 245441], [&quot;&#39;p&#39;&quot;, 245857], [&quot;&#39;r&#39;&quot;, 246081], [&quot;&#39;e&#39;&quot;, 246201], [&quot;&#39;d&#39;&quot;, 246378], [&quot;&#39;u&#39;&quot;, 246513], [&quot;&#39;c&#39;&quot;, 246577], [&quot;&#39;e&#39;&quot;, 246729], [&quot;&#39;*&#39;&quot;, 247737], [&quot;&#39;\\x08 \\x08&#39;&quot;, 248033], [&quot;&#39;*&#39;&quot;, 248282], [&quot;&#39;\&quot;&#39;&quot;, 248593], [&quot;&#39;\\r\\n&#39;&quot;, 250058], [&quot;&#39;bash-4.1# &#39;&quot;, 250068], [&quot;&#39;f&#39;&quot;, 251610], [&quot;&#39;i&#39;&quot;, 251665], [&quot;&#39;n&#39;&quot;, 251721], [&quot;&#39;d&#39;&quot;, 251769], [&quot;&#39; &#39;&quot;, 251881], [&quot;&#39;/&#39;&quot;, 252113], [&quot;&#39; &#39;&quot;, 252241], [&quot;&#39;-&#39;&quot;, 252393], [&quot;&#39;n&#39;&quot;, 252650], [&quot;&#39;a&#39;&quot;, 252761], [&quot;&#39;m&#39;&quot;, 252873], [&quot;&#39;e&#39;&quot;, 252930], [&quot;&#39; &#39;&quot;, 253010], [&quot;&#39;\&quot;&#39;&quot;, 253193], [&quot;&#39;h&#39;&quot;, 253545], [&quot;&#39;a&#39;&quot;, 253570], [&quot;&#39;d&#39;&quot;, 253658], [&quot;&#39;o&#39;&quot;, 253858], [&quot;&#39;o&#39;&quot;, 254010], [&quot;&#39;p&#39;&quot;, 254153], [&quot;&#39;-&#39;&quot;, 254433], [&quot;&#39;m&#39;&quot;, 254665], [&quot;&#39;a&#39;&quot;, 254746], [&quot;&#39;p&#39;&quot;, 254858], [&quot;&#39;r&#39;&quot;, 255050], [&quot;&#39;e&#39;&quot;, 255170], [&quot;&#39;d&#39;&quot;, 255370], [&quot;&#39;u&#39;&quot;, 255530], [&quot;&#39;c&#39;&quot;, 255601], [&quot;&#39;e&#39;&quot;, 255762], [&quot;&#39;*&#39;&quot;, 256025], [&quot;&#39;\&quot;&#39;&quot;, 256410], [&quot;&#39;\\r\\n&#39;&quot;, 257258], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce&#39;&quot;, 257484], [&quot;&#39;\\r\\n&#39;&quot;, 257485], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client&#39;&quot;, 257486], [&quot;&#39;\\r\\n&#39;&quot;, 257486], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-shuffle&#39;&quot;, 257487], [&quot;&#39;\\r\\n&#39;&quot;, 257487], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-jobclient&#39;&quot;, 257489], [&quot;&#39;\\r\\n&#39;&quot;, 257489], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-hs&#39;&quot;, 257491], [&quot;&#39;\\r\\n&#39;&quot;, 257491], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-app&#39;&quot;, 257493], [&quot;&#39;\\r\\n&#39;&quot;, 257494], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-hs-plugins&#39;&quot;, 257496], [&quot;&#39;\\r\\n&#39;&quot;, 257496], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-core&#39;&quot;, 257498], [&quot;&#39;\\r\\n&#39;&quot;, 257498], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-client/hadoop-mapreduce-client-common&#39;&quot;, 257500], [&quot;&#39;\\r\\n&#39;&quot;, 257500], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-project-dist/hadoop-mapreduce&#39;&quot;, 257523], [&quot;&#39;\\r\\n&#39;&quot;, 257523], [&quot;&#39;/usr/local/hadoop-2.6.0/share/doc/hadoop/hadoop-mapreduce-examples&#39;&quot;, 257528], [&quot;&#39;\\r\\n&#39;&quot;, 257529], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-2.6.0.jar&#39;&quot;, 257715], [&quot;&#39;\\r\\n&#39;&quot;, 257715], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.6.0.jar&#39;&quot;, 257715], [&quot;&#39;\\r\\n&#39;&quot;, 257716], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar&#39;&quot;, 257716], [&quot;&#39;\\r\\n&#39;&quot;, 257716], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0.jar&#39;&quot;, 257716], [&quot;&#39;\\r\\n&#39;&quot;, 257716], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar&#39;&quot;, 257717], [&quot;&#39;\\r\\n&#39;&quot;, 257717], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.6.0.jar&#39;&quot;, 257717], [&quot;&#39;\\r\\n&#39;&quot;, 257717], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-tests.jar&#39;&quot;, 257717], [&quot;&#39;\\r\\n&#39;&quot;, 257717], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-jobclient-2.6.0-test-sources.jar&#39;&quot;, 257718], [&quot;&#39;\\r\\n&#39;&quot;, 257718], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-shuffle-2.6.0-sources.jar&#39;&quot;, 257718], [&quot;&#39;\\r\\n&#39;&quot;, 257718], [&quot;&#39;/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-common-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-app-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-jobclient-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-app-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-hs-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-core-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-hs-plugins-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-core-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-clie&#39;&quot;, 257719], [&quot;&#39;nt-common-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-shuffle-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-hs-plugins-2.6.0-test-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/sources/hadoop-mapreduce-client-hs-2.6.0-sources.jar\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-plugins-2.6.0.jar&#39;&quot;, 257719], [&quot;&#39;\\r\\n/usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.6.0.jar\\r\\n&#39;&quot;, 257719], [&quot;&#39;bash-4.1# &#39;&quot;, 259692], [&quot;&#39;l&#39;&quot;, 264666], [&quot;&#39;s&#39;&quot;, 264762], [&quot;&#39; &#39;&quot;, 264810], [&quot;&#39;-&#39;&quot;, 264930], [&quot;&#39;a&#39;&quot;, 265026], [&quot;&#39;l&#39;&quot;, 265170], [&quot;&#39;\\r\\n&#39;&quot;, 265442], [&quot;&#39;total 168&#39;&quot;, 265448], [&quot;&#39;\\r\\n&#39;&quot;, 265448], [&quot;&#39;drwxr-xr-x  2 20000 20000  4096 Feb 12 00:00 .&#39;&quot;, 265449], [&quot;&#39;\\r\\n&#39;&quot;, 265449], [&quot;&#39;drwxr-xr-x 13 20000 20000  4096 Feb 12 00:00 ..&#39;&quot;, 265449], [&quot;&#39;\\r\\n-rw-r--r--  1 20000 20000  4436 Nov 13  2014 capacity-scheduler.xml\\r\\n-rw-r--r--  1 20000 20000  1335 Nov 13  2014 configuration.xsl\\r\\n-rw-r--r--  1 20000 20000   318 Nov 13  2014 container-executor.cfg\\r\\n-rw-r--r--  1 20000 20000   158 Feb 12 00:00 core-site.xml\\r\\n-rw-r--r--  1 root  root    154 Jan 15  2015 core-site.xml.template\\r\\n-rw-r--r--  1 20000 20000  3670 Nov 13  2014 hadoop-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  4302 Jan 15  2015 hadoop-env.sh\\r\\n-rw-r--r--  1 20000 20000  2490 Nov 13  2014 hadoop-metrics.properties\\r\\n-rw-r--r--  1 20000 20000  2598 Nov 13  2014 hadoop-metrics2.properties\\r\\n-rw-r--r--  1 20000 20000  9683 Nov 13  2014 hadoop-policy.xml\\r\\n-rw-r--r--  1 root  root    126 Jan 15  2015 hdfs-site.xml\\r\\n&#39;&quot;, 265450], [&quot;&#39;-rwxr-xr-x  1 20000 20000  1449 Nov 13  2014 httpfs-env.sh&#39;&quot;, 265450], [&quot;&#39;\\r\\n-rw-r--r--  1 20000 20000  1657 Nov 13  2014 httpfs-log4j.properties\\r\\n-rw-r--r--  1 20000 20000    21 Nov 13  2014 httpfs-signature.secret\\r\\n-rw-r--r--  1 20000 20000   620 Nov 13  2014 httpfs-site.xml\\r\\n-rw-r--r--  1 20000 20000  3523 Nov 13  2014 kms-acls.xml\\r\\n-rwxr-xr-x  1 20000 20000  1325 Nov 13  2014 kms-env.sh\\r\\n-rw-r--r--  1 20000 20000  1631 Nov 13  2014 kms-log4j.properties\\r\\n-rw-r--r--  1 20000 20000  5511 Nov 13  2014 kms-site.xml\\r\\n-rw-r--r--  1 20000 20000 11291 Nov 13  2014 log4j.properties\\r\\n&#39;&quot;, 265450], [&quot;&#39;-rw-r--r--  1 20000 20000   938 Nov 13  2014 mapred-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  1383 Nov 13  2014 mapred-env.sh\\r\\n-rw-r--r--  1 20000 20000  4113 Nov 13  2014 mapred-queues.xml.template\\r\\n-rw-r--r--  1 root  root    138 Jan 15  2015 mapred-site.xml\\r\\n-rw-r--r--  1 20000 20000   758 Nov 13  2014 mapred-site.xml.template\\r\\n-rw-r--r--  1 20000 20000    10 Nov 13  2014 slaves\\r\\n-rw-r--r--  1 20000 20000  2316 Nov 13  2014 ssl-client.xml.example\\r\\n-rw-r--r--  1 20000 20000  2268 Nov 13  2014 ssl-server.xml.example\\r\\n-rw-r--r--  1 20000 20000  2237 Nov 13  2014 yarn-env.cmd\\r\\n-rwxr-xr-x  1 20000 20000  4567 Nov 13  2014 yarn-env.sh\\r\\n-rw-r--r--  1 root  root   1525 Jan 15  2015 yarn-site.xml\\r\\n&#39;&quot;, 265451], [&quot;&#39;bash-4.1# &#39;&quot;, 265451], [&quot;&#39;l&#39;&quot;, 266202], [&quot;&#39;s&#39;&quot;, 266226], [&quot;&#39; &#39;&quot;, 266306], [&quot;&#39;-&#39;&quot;, 266386], [&quot;&#39;a&#39;&quot;, 266442], [&quot;&#39;l&#39;&quot;, 266570], [&quot;&#39; &#39;&quot;, 266682], [&quot;&#39;/&#39;&quot;, 266787], [&quot;&#39;u&#39;&quot;, 266787], [&quot;&#39;s&#39;&quot;, 266788], [&quot;&#39;r&#39;&quot;, 266788], [&quot;&#39;/&#39;&quot;, 266788], [&quot;&#39;l&#39;&quot;, 266788], [&quot;&#39;o&#39;&quot;, 266788], [&quot;&#39;c&#39;&quot;, 266789], [&quot;&#39;a&#39;&quot;, 266789], [&quot;&#39;l&#39;&quot;, 266789], [&quot;&#39;/&#39;&quot;, 266789], [&quot;&#39;h&#39;&quot;, 266789], [&quot;&#39;a&#39;&quot;, 266790], [&quot;&#39;d&#39;&quot;, 266790], [&quot;&#39;o&#39;&quot;, 266790], [&quot;&#39;o&#39;&quot;, 266790], [&quot;&#39;p&#39;&quot;, 266790], [&quot;&#39;-&#39;&quot;, 266790], [&quot;&#39;2&#39;&quot;, 266791], [&quot;&#39;.&#39;&quot;, 266791], [&quot;&#39;6&#39;&quot;, 266791], [&quot;&#39;.&#39;&quot;, 266791], [&quot;&#39;0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar&#39;&quot;, 266792], [&quot;&#39;\\r\\n&#39;&quot;, 266924], [&quot;&#39;-rw-r--r-- 1 20000 20000 270322 Nov 13  2014 /usr/local/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar&#39;&quot;, 266928], [&quot;&#39;\\r\\n&#39;&quot;, 266929], [&quot;&#39;bash-4.1# &#39;&quot;, 266930], [&quot;&#39;h&#39;&quot;, 269474], [&quot;&#39;a&#39;&quot;, 269530], [&quot;&#39;d&#39;&quot;, 269594], [&quot;&#39;o&#39;&quot;, 269850], [&quot;&#39;o&#39;&quot;, 270010], [&quot;&#39;p&#39;&quot;, 270091], [&quot;&#39; &#39;&quot;, 270586], [&quot;&#39;j&#39;&quot;, 270858], [&quot;&#39;a&#39;&quot;, 270906], [&quot;&#39;r&#39;&quot;, 270962], [&quot;&#39; &#39;&quot;, 271130], [&quot;&#39;/&#39;&quot;, 271995], [&quot;&#39;u&#39;&quot;, 271996], [&quot;&#39;s&#39;&quot;, 271996], [&quot;&#39;r&#39;&quot;, 271996], [&quot;&#39;/&#39;&quot;, 271996], [&quot;&#39;l&#39;&quot;, 271997], [&quot;&#39;o&#39;&quot;, 271997], [&quot;&#39;c&#39;&quot;, 271997], [&quot;&#39;a&#39;&quot;, 271997], [&quot;&#39;l&#39;&quot;, 271997], [&quot;&#39;/&#39;&quot;, 271998], [&quot;&#39;h&#39;&quot;, 271998], [&quot;&#39;a&#39;&quot;, 271998], [&quot;&#39;d&#39;&quot;, 271998], [&quot;&#39;o&#39;&quot;, 271998], [&quot;&#39;op&#39;&quot;, 271998], [&quot;&#39;-&#39;&quot;, 271999], [&quot;&#39;2&#39;&quot;, 271999], [&quot;&#39;.&#39;&quot;, 271999], [&quot;&#39;6.0/share/hadoop/mapreduce/hadoop-m&#39;&quot;, 271999], [&quot;&#39;apreduce-examples&#39;&quot;, 272000], [&quot;&#39;-2.&#39;&quot;, 272000], [&quot;&#39;6.0.jar&#39;&quot;, 272000], [&quot;&#39; &#39;&quot;, 273970], [&quot;&#39;g&#39;&quot;, 274154], [&quot;&#39;r&#39;&quot;, 274331], [&quot;&#39;e&#39;&quot;, 274427], [&quot;&#39;p&#39;&quot;, 274565], [&quot;&#39; &#39;&quot;, 274714], [&quot;&#39;i&#39;&quot;, 276746], [&quot;&#39;n&#39;&quot;, 276802], [&quot;&#39;p&#39;&quot;, 277011], [&quot;&#39;u&#39;&quot;, 277043], [&quot;&#39;t&#39;&quot;, 277162], [&quot;&#39; &#39;&quot;, 278323], [&quot;&#39;/&#39;&quot;, 279307], [&quot;&#39;\\x08 \\x08&#39;&quot;, 279979], [&quot;&#39;o&#39;&quot;, 282899], [&quot;&#39;u&#39;&quot;, 282986], [&quot;&#39;t&#39;&quot;, 283051], [&quot;&#39;p&#39;&quot;, 283274], [&quot;&#39;u&#39;&quot;, 283387], [&quot;&#39;t&#39;&quot;, 283514], [&quot;&#39; &#39;&quot;, 284291], [&quot;&#39;\\&#39;&#39;&quot;, 284603], [&quot;&#39;d&#39;&quot;, 284787], [&quot;&#39;f&#39;&quot;, 284899], [&quot;&#39;s&#39;&quot;, 285026], [&quot;&#39;[&#39;&quot;, 285611], [&quot;&#39;a&#39;&quot;, 285979], [&quot;&#39;-&#39;&quot;, 286883], [&quot;&#39;z&#39;&quot;, 287139], [&quot;&#39;.&#39;&quot;, 288403], [&quot;&#39;]&#39;&quot;, 288971], [&quot;&#39;+&#39;&quot;, 289683], [&quot;&#39;\\&#39;&#39;&quot;, 290067], [&quot;&#39;\\r\\n&#39;&quot;, 292443], [&quot;&#39;16/02/12 00:04:56 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032&#39;&quot;, 295119], [&quot;&#39;\\r\\n&#39;&quot;, 295120], [&quot;&#39;16/02/12 00:04:57 WARN mapreduce.JobSubmitter: No job jar file set.  User classes may not be found. See Job or Job#setJar(String).&#39;&quot;, 295813], [&quot;&#39;\\r\\n&#39;&quot;, 295814], [&quot;&#39;16/02/12 00:04:57 INFO input.FileInputFormat: Total input paths to process : 31&#39;&quot;, 295936], [&quot;&#39;\\r\\n&#39;&quot;, 295937], [&quot;&#39;16/02/12 00:04:58 INFO mapreduce.JobSubmitter: number of splits:31&#39;&quot;, 297313], [&quot;&#39;\\r\\n&#39;&quot;, 297314], [&quot;&#39;16/02/12 00:04:59 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1455253236417_0001&#39;&quot;, 297720], [&quot;&#39;\\r\\n&#39;&quot;, 297720], [&quot;&#39;16/02/12 00:04:59 INFO mapred.YARNRunner: Job jar is not present. Not adding any jar to the list of resources.&#39;&quot;, 297896], [&quot;&#39;\\r\\n&#39;&quot;, 297897], [&quot;&#39;16/02/12 00:04:59 INFO impl.YarnClientImpl: Submitted application application_1455253236417_0001&#39;&quot;, 298106], [&quot;&#39;\\r\\n&#39;&quot;, 298106], [&quot;&#39;16/02/12 00:04:59 INFO mapreduce.Job: The url to track the job: http://f4491d85c28c:8088/proxy/application_1455253236417_0001/&#39;&quot;, 298200], [&quot;&#39;\\r\\n&#39;&quot;, 298201], [&quot;&#39;16/02/12 00:04:59 INFO mapreduce.Job: Running job: job_1455253236417_0001&#39;&quot;, 298202], [&quot;&#39;\\r\\n&#39;&quot;, 298204], [&quot;&#39;16/02/12 00:05:11 INFO mapreduce.Job: Job job_1455253236417_0001 running in uber mode : false&#39;&quot;, 309532], [&quot;&#39;\\r\\n&#39;&quot;, 309533], [&quot;&#39;16/02/12 00:05:11 INFO mapreduce.Job:  map 0% reduce 0%&#39;&quot;, 309534], [&quot;&#39;\\r\\n&#39;&quot;, 309534], [&quot;&#39;16/02/12 00:05:50 INFO mapreduce.Job:  map 16% reduce 0%&#39;&quot;, 348969], [&quot;&#39;\\r\\n&#39;&quot;, 348969], [&quot;&#39;16/02/12 00:05:51 INFO mapreduce.Job:  map 19% reduce 0%&#39;&quot;, 349976], [&quot;&#39;\\r\\n&#39;&quot;, 349976], [&quot;&#39;16/02/12 00:06:27 INFO mapreduce.Job:  map 32% reduce 0%&#39;&quot;, 385379], [&quot;&#39;\\r\\n&#39;&quot;, 385381], [&quot;&#39;16/02/12 00:06:28 INFO mapreduce.Job:  map 39% reduce 0%&#39;&quot;, 386387], [&quot;&#39;\\r\\n&#39;&quot;, 386388], [&quot;&#39;16/02/12 00:07:10 INFO mapreduce.Job:  map 42% reduce 0%&#39;&quot;, 428427], [&quot;&#39;\\r\\n&#39;&quot;, 428427], [&quot;&#39;16/02/12 00:07:11 INFO mapreduce.Job:  map 48% reduce 0%&#39;&quot;, 429437], [&quot;&#39;\\r\\n&#39;&quot;, 429438], [&quot;&#39;16/02/12 00:07:12 INFO mapreduce.Job:  map 55% reduce 0%&#39;&quot;, 430444], [&quot;&#39;\\r\\n&#39;&quot;, 430444], [&quot;&#39;16/02/12 00:07:13 INFO mapreduce.Job:  map 55% reduce 18%&#39;&quot;, 431450], [&quot;&#39;\\r\\n&#39;&quot;, 431451], [&quot;&#39;16/02/12 00:07:38 INFO mapreduce.Job:  map 61% reduce 18%&#39;&quot;, 456616], [&quot;&#39;\\r\\n&#39;&quot;, 456616], [&quot;&#39;16/02/12 00:07:39 INFO mapreduce.Job:  map 68% reduce 18%&#39;&quot;, 457622], [&quot;&#39;\\r\\n&#39;&quot;, 457622], [&quot;&#39;16/02/12 00:07:40 INFO mapreduce.Job:  map 71% reduce 20%&#39;&quot;, 458631], [&quot;&#39;\\r\\n&#39;&quot;, 458632], [&quot;&#39;16/02/12 00:07:43 INFO mapreduce.Job:  map 71% reduce 24%&#39;&quot;, 461651], [&quot;&#39;\\r\\n&#39;&quot;, 461653], [&quot;&#39;16/02/12 00:08:06 INFO mapreduce.Job:  map 74% reduce 24%&#39;&quot;, 485286], [&quot;&#39;\\r\\n&#39;&quot;, 485286], [&quot;&#39;16/02/12 00:08:07 INFO mapreduce.Job:  map 77% reduce 25%&#39;&quot;, 486293], [&quot;&#39;\\r\\n&#39;&quot;, 486294], [&quot;&#39;16/02/12 00:08:08 INFO mapreduce.Job:  map 81% reduce 25%&#39;&quot;, 487300], [&quot;&#39;\\r\\n&#39;&quot;, 487300], [&quot;&#39;16/02/12 00:08:09 INFO mapreduce.Job:  map 84% reduce 25%&#39;&quot;, 488307], [&quot;&#39;\\r\\n&#39;&quot;, 488308], [&quot;&#39;16/02/12 00:08:10 INFO mapreduce.Job:  map 87% reduce 28%&#39;&quot;, 489315], [&quot;&#39;\\r\\n&#39;&quot;, 489316], [&quot;&#39;16/02/12 00:08:13 INFO mapreduce.Job:  map 87% reduce 29%&#39;&quot;, 492339], [&quot;&#39;\\r\\n&#39;&quot;, 492340], [&quot;&#39;16/02/12 00:08:34 INFO mapreduce.Job:  map 90% reduce 29%&#39;&quot;, 512731], [&quot;&#39;\\r\\n&#39;&quot;, 512732], [&quot;&#39;16/02/12 00:08:35 INFO mapreduce.Job:  map 100% reduce 30%&#39;&quot;, 513744], [&quot;&#39;\\r\\n&#39;&quot;, 513744], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.Job:  map 100% reduce 100%&#39;&quot;, 515758], [&quot;&#39;\\r\\n&#39;&quot;, 515759], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.Job: Job job_1455253236417_0001 completed successfully&#39;&quot;, 515768], [&quot;&#39;\\r\\n&#39;&quot;, 515770], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.Job: Counters: 50&#39;&quot;, 515951], [&quot;&#39;\\r\\n&#39;&quot;, 515965], [&quot;&#39;\\t&#39;&quot;, 515965], [&quot;&#39;File System Counters&#39;&quot;, 515965], [&quot;&#39;\\r\\n&#39;&quot;, 515965], [&quot;&#39;\\t&#39;&quot;, 515966], [&quot;&#39;\\t&#39;&quot;, 515966], [&quot;&#39;FILE: Number of bytes read=345&#39;&quot;, 515966], [&quot;&#39;\\r\\n&#39;&quot;, 515966], [&quot;&#39;\\t&#39;&quot;, 515966], [&quot;&#39;\\t&#39;&quot;, 515967], [&quot;&#39;FILE: Number of bytes written=3401540&#39;&quot;, 515967], [&quot;&#39;\\r\\n&#39;&quot;, 515967], [&quot;&#39;\\t&#39;&quot;, 515967], [&quot;&#39;\\t&#39;&quot;, 515967], [&quot;&#39;FILE: Number of read operations=0&#39;&quot;, 515967], [&quot;&#39;\\r\\n&#39;&quot;, 515968], [&quot;&#39;\\t&#39;&quot;, 515968], [&quot;&#39;\\t&#39;&quot;, 515968], [&quot;&#39;FILE: Number of large read operations=0\\r\\n\\t\\tFILE: Number of write operations=0\\r\\n\\t\\tHDFS: Number of bytes read=80360\\r\\n\\t\\tHDFS: Number of bytes written=437\\r\\n\\t\\tHDFS: Number of read operations=96\\r\\n\\t\\tHDFS: Number of large read operations=0\\r\\n\\t\\tHDFS: Number of write operations=2\\r\\n\\tJob Counters \\r\\n\\t\\tKilled map tasks=1\\r\\n\\t\\tLaunched map tasks=32\\r\\n\\t\\tLaunched reduce tasks=1\\r\\n\\t\\tData-local map tasks=32\\r\\n\\t\\tTotal time spent by all maps in occupied slots (ms)=1037881\\r\\n\\t\\tTotal time spent by all reduces in occupied slots (ms)=129863\\r\\n\\t\\tTotal time spent by all map tasks (ms)=1037881\\r\\n\\t\\tTotal time spent by all reduce tasks (ms)=129863\\r\\n\\t\\tTotal vcore-seconds taken by all map tasks=1037881\\r\\n\\t\\tTotal vcore-seconds taken by all reduce tasks=129863\\r\\n\\t\\tTotal megabyte-seconds taken by all map tasks=1062790144\\r\\n\\t\\tTotal megabyte-seconds taken by all reduce tasks=132979712\\r\\n\\tMap-Reduce Framework\\r\\n\\t\\tMap input records=2056\\r\\n\\t\\tMap output records=24\\r\\n\\t\\tMap output bytes=590\\r\\n\\t\\tMap output materialized bytes=525\\r\\n\\t\\tInput split bytes=3812\\r\\n\\t\\tCombine inp&#39;&quot;, 515970], [&quot;&#39;ut records=24\\r\\n\\t\\tCombine output records=13\\r\\n\\t\\tReduce input groups=11\\r\\n\\t\\tReduce shuffle bytes=525\\r\\n\\t\\tReduce input records=13\\r\\n\\t\\tReduce output records=11\\r\\n\\t\\tSpilled Records=26\\r\\n\\t\\tShuffled Maps =31\\r\\n\\t\\tFailed Shuffles=0\\r\\n\\t\\tMerged Map outputs=31\\r\\n\\t\\tGC time elapsed (ms)=10717\\r\\n\\t\\tCPU time spent (ms)=14930\\r\\n\\t\\tPhysical memory (bytes) snapshot=6550212608\\r\\n\\t\\tVirtual memory (bytes) snapshot=22159507456\\r\\n\\t\\tTotal committed heap usage (bytes)=4269862912\\r\\n\\tShuffle Errors\\r\\n\\t\\tBAD_ID=0\\r\\n\\t\\tCONNECTION=0\\r\\n\\t\\tIO_ERROR=0\\r\\n\\t\\tWRONG_LENGTH=0\\r\\n\\t\\tWRONG_MAP=0\\r\\n\\t\\tWRONG_REDUCE=0\\r\\n\\tFile Input Format Counters \\r\\n\\t\\tBytes Read=76548\\r\\n\\tFile Output Format Counters \\r\\n\\t\\tBytes Written=437\\r\\n&#39;&quot;, 515970], [&quot;&#39;16/02/12 00:08:37 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032&#39;&quot;, 516125], [&quot;&#39;\\r\\n&#39;&quot;, 516125], [&quot;&#39;16/02/12 00:08:37 WARN mapreduce.JobSubmitter: No job jar file set.  User classes may not be found. See Job or Job#setJar(String).&#39;&quot;, 516173], [&quot;&#39;\\r\\n&#39;&quot;, 516174], [&quot;&#39;16/02/12 00:08:37 INFO input.FileInputFormat: Total input paths to process : 1&#39;&quot;, 516185], [&quot;&#39;\\r\\n&#39;&quot;, 516185], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.JobSubmitter: number of splits:1&#39;&quot;, 516224], [&quot;&#39;\\r\\n&#39;&quot;, 516224], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1455253236417_0002&#39;&quot;, 516285], [&quot;&#39;\\r\\n&#39;&quot;, 516286], [&quot;&#39;16/02/12 00:08:37 INFO mapred.YARNRunner: Job jar is not present. Not adding any jar to the list of resources.&#39;&quot;, 516292], [&quot;&#39;\\r\\n&#39;&quot;, 516292], [&quot;&#39;16/02/12 00:08:37 INFO impl.YarnClientImpl: Submitted application application_1455253236417_0002&#39;&quot;, 516304], [&quot;&#39;\\r\\n&#39;&quot;, 516304], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.Job: The url to track the job: http://f4491d85c28c:8088/proxy/application_1455253236417_0002/&#39;&quot;, 516310], [&quot;&#39;\\r\\n&#39;&quot;, 516310], [&quot;&#39;16/02/12 00:08:37 INFO mapreduce.Job: Running job: job_1455253236417_0002&#39;&quot;, 516310], [&quot;&#39;\\r\\n&#39;&quot;, 516311], [&quot;&#39;16/02/12 00:08:52 INFO mapreduce.Job: Job job_1455253236417_0002 running in uber mode : false&#39;&quot;, 530643], [&quot;&#39;\\r\\n&#39;&quot;, 530643], [&quot;&#39;16/02/12 00:08:52 INFO mapreduce.Job:  map 0% reduce 0%&#39;&quot;, 530643], [&quot;&#39;\\r\\n&#39;&quot;, 530644], [&quot;&#39;16/02/12 00:08:59 INFO mapreduce.Job:  map 100% reduce 0%&#39;&quot;, 537701], [&quot;&#39;\\r\\n&#39;&quot;, 537701], [&quot;&#39;16/02/12 00:09:08 INFO mapreduce.Job:  map 100% reduce 100%&#39;&quot;, 546786], [&quot;&#39;\\r\\n&#39;&quot;, 546787], [&quot;&#39;16/02/12 00:09:08 INFO mapreduce.Job: Job job_1455253236417_0002 completed successfully&#39;&quot;, 546802], [&quot;&#39;\\r\\n&#39;&quot;, 546802], [&quot;&#39;16/02/12 00:09:08 INFO mapreduce.Job: Counters: 49&#39;&quot;, 546854], [&quot;&#39;\\r\\n&#39;&quot;, 546854], [&quot;&#39;\\t&#39;&quot;, 546855], [&quot;&#39;File System Counters&#39;&quot;, 546855], [&quot;&#39;\\r\\n&#39;&quot;, 546855], [&quot;&#39;\\t&#39;&quot;, 546855], [&quot;&#39;\\t&#39;&quot;, 546855], [&quot;&#39;FILE: Number of bytes read=291&#39;&quot;, 546856], [&quot;&#39;\\r\\n&#39;&quot;, 546856], [&quot;&#39;\\t&#39;&quot;, 546856], [&quot;&#39;\\t&#39;&quot;, 546856], [&quot;&#39;FILE: Number of bytes written=212045&#39;&quot;, 546856], [&quot;&#39;\\r\\n&#39;&quot;, 546857], [&quot;&#39;\\t&#39;&quot;, 546857], [&quot;&#39;\\t&#39;&quot;, 546857], [&quot;&#39;FILE: Number of read operations=0&#39;&quot;, 546857], [&quot;&#39;\\r\\n\\t\\tFILE: Number of large read operations=0\\r\\n\\t\\tFILE: Number of write operations=0\\r\\n\\t\\tHDFS: Number of bytes read=570\\r\\n\\t\\tHDFS: Number of bytes written=197\\r\\n\\t\\tHDFS: Number of read operations=7\\r\\n\\t\\tHDFS: Number of large read operations=0\\r\\n\\t\\tHDFS: Number of write operations=2\\r\\n\\tJob Counters \\r\\n\\t\\tLaunched map tasks=1\\r\\n\\t\\tLaunched reduce tasks=1\\r\\n\\t\\tData-local map tasks=1\\r\\n\\t\\tTotal time spent by all maps in occupied slots (ms)=5045\\r\\n\\t\\tTotal time spent by all reduces in occupied slots (ms)=6007\\r\\n\\t\\tTotal time spent by all map tasks (ms)=5045\\r\\n\\t\\tTotal time spent by all reduce tasks (ms)=6007\\r\\n\\t\\tTotal vcore-seconds taken by all map tasks=5045\\r\\n\\t\\tTotal vcore-seconds taken by all reduce tasks=6007\\r\\n\\t\\tTotal megabyte-seconds taken by all map tasks=5166080\\r\\n\\t\\tTotal megabyte-seconds taken by all reduce tasks=6151168\\r\\n\\tMap-Reduce Framework\\r\\n\\t\\tMap input records=11\\r\\n\\t\\tMap output records=11\\r\\n\\t\\tMap output bytes=263\\r\\n\\t&#39;&quot;, 546857], [&quot;&#39;\\tMap output materialized bytes=291\\r\\n\\t\\tInput split bytes=133\\r\\n\\t\\tCombine input records=0\\r\\n\\t\\tCombine output records=0\\r\\n\\t\\tReduce input groups=5\\r\\n\\t\\tReduce shuffle bytes=291\\r\\n\\t\\tReduce input records=11\\r\\n\\t\\tReduce output records=11\\r\\n\\t\\tSpilled Records=22\\r\\n\\t\\tShuffled Maps =1\\r\\n\\t\\tFailed Shuffles=0\\r\\n\\t\\tMerged Map outputs=1\\r\\n\\t\\tGC time elapsed (ms)=118\\r\\n\\t\\tCPU time spent (ms)=1010\\r\\n\\t\\tPhysical memory (bytes) snapshot=318488576\\r\\n\\t\\tVirtual memory (bytes) snapshot=1390886912\\r\\n\\t\\tTotal committed heap usage (bytes)=168497152\\r\\n\\tShuffle Errors\\r\\n\\t\\tBAD_ID=0\\r\\n\\t\\tCONNECTION=0\\r\\n\\t\\tIO_ERROR=0\\r\\n\\t\\tWRONG_LENGTH=0\\r\\n\\t\\tWRONG_MAP=0\\r\\n\\t\\tWRONG_REDUCE=0\\r\\n\\tFile Input Format Counters \\r\\n\\t\\tBytes Read=437\\r\\n\\tFile Output Format Counters \\r\\n\\t\\tBytes Written=197\\r\\n&#39;&quot;, 546859], [&quot;&#39;bash-4.1# &#39;&quot;, 547273], [&quot;&#39;h&#39;&quot;, 771414], [&quot;&#39;d&#39;&quot;, 771518], [&quot;&#39;f&#39;&quot;, 771678], [&quot;&#39;s&#39;&quot;, 771798], [&quot;&#39; &#39;&quot;, 771894], [&quot;&#39;-&#39;&quot;, 772102], [&quot;&#39;\\x08 \\x08&#39;&quot;, 772894], [&quot;&#39;-&#39;&quot;, 773550], [&quot;&#39;l&#39;&quot;, 773766], [&quot;&#39;s&#39;&quot;, 773838], [&quot;&#39; &#39;&quot;, 773950], [&quot;&#39;o&#39;&quot;, 774670], [&quot;&#39;u&#39;&quot;, 774734], [&quot;&#39;t&#39;&quot;, 774806], [&quot;&#39;p&#39;&quot;, 774926], [&quot;&#39;u&#39;&quot;, 775006], [&quot;&#39;t&#39;&quot;, 775086], [&quot;&#39;\\r\\n&#39;&quot;, 775310], [&quot;&#39;Unrecognized option: -ls&#39;&quot;, 775344], [&quot;&#39;\\r\\n&#39;&quot;, 775344], [&quot;&#39;Error: Could not create the Java Virtual Machine.&#39;&quot;, 775345], [&quot;&#39;\\r\\n&#39;&quot;, 775345], [&quot;&#39;Error: A fatal exception has occurred. Program will exit.&#39;&quot;, 775345], [&quot;&#39;\\r\\n&#39;&quot;, 775345], [&quot;&#39;bash-4.1# &#39;&quot;, 775346], [&quot;&#39;h&#39;&quot;, 776806], [&quot;&#39;d&#39;&quot;, 776870], [&quot;&#39;f&#39;&quot;, 776974], [&quot;&#39;s&#39;&quot;, 777110], [&quot;&#39; &#39;&quot;, 777262], [&quot;&#39;-&#39;&quot;, 777422], [&quot;&#39;l&#39;&quot;, 777734], [&quot;&#39;s&#39;&quot;, 777806], [&quot;&#39;\\x08 \\x08&#39;&quot;, 778246], [&quot;&#39;\\x08 \\x08&#39;&quot;, 778416], [&quot;&#39;\\x08 \\x08&#39;&quot;, 778566], [&quot;&#39;d&#39;&quot;, 778726], [&quot;&#39;f&#39;&quot;, 778758], [&quot;&#39;s&#39;&quot;, 778870], [&quot;&#39; &#39;&quot;, 778958], [&quot;&#39;-&#39;&quot;, 779534], [&quot;&#39;l&#39;&quot;, 779862], [&quot;&#39;s&#39;&quot;, 779926], [&quot;&#39; &#39;&quot;, 780102], [&quot;&#39;o&#39;&quot;, 780670], [&quot;&#39;u&#39;&quot;, 780750], [&quot;&#39;t&#39;&quot;, 780801], [&quot;&#39;p&#39;&quot;, 780926], [&quot;&#39;u&#39;&quot;, 780998], [&quot;&#39;t&#39;&quot;, 781051], [&quot;&#39;\\r\\n&#39;&quot;, 781302], [&quot;&#39;Found 2 items&#39;&quot;, 784248], [&quot;&#39;\\r\\n&#39;&quot;, 784248], [&quot;&#39;-rw-r--r--   1 root supergroup          0 2016-02-12 00:09 output/_SUCCESS&#39;&quot;, 784249], [&quot;&#39;\\r\\n&#39;&quot;, 784250], [&quot;&#39;-rw-r--r--   1 root supergroup        197 2016-02-12 00:09 output/part-r-00000&#39;&quot;, 784250], [&quot;&#39;\\r\\n&#39;&quot;, 784250], [&quot;&#39;bash-4.1# &#39;&quot;, 784590], [&quot;&#39;h&#39;&quot;, 792463], [&quot;&#39;d&#39;&quot;, 792519], [&quot;&#39;f&#39;&quot;, 792630], [&quot;&#39;s&#39;&quot;, 793454], [&quot;&#39; &#39;&quot;, 793663], [&quot;&#39;d&#39;&quot;, 793871], [&quot;&#39;f&#39;&quot;, 793999], [&quot;&#39;s&#39;&quot;, 794111], [&quot;&#39; &#39;&quot;, 794222], [&quot;&#39;c&#39;&quot;, 794366], [&quot;&#39;a&#39;&quot;, 794494], [&quot;&#39;t&#39;&quot;, 794559], [&quot;&#39; &#39;&quot;, 794719], [&quot;&#39;o&#39;&quot;, 795751], [&quot;&#39;u&#39;&quot;, 795807], [&quot;&#39;t&#39;&quot;, 795854], [&quot;&#39;p&#39;&quot;, 795991], [&quot;&#39;u&#39;&quot;, 796063], [&quot;&#39;t&#39;&quot;, 796118], [&quot;&#39;/&#39;&quot;, 797159], [&quot;&#39;*&#39;&quot;, 797783], [&quot;&#39;\\r\\n&#39;&quot;, 798194], [&quot;&#39;cat: Unknown command&#39;&quot;, 798955], [&quot;&#39;\\r\\n&#39;&quot;, 798956], [&quot;&#39;Did you mean -cat?  This command begins with a dash.&#39;&quot;, 798994], [&quot;&#39;\\r\\n&#39;&quot;, 798995], [&quot;&#39;bash-4.1# &#39;&quot;, 798999], [&quot;&#39;hdfs dfs cat output/*&#39;&quot;, 803255], [&quot;&#39;\\rbash-4.1# &#39;&quot;, 803632], [&quot;&#39;h&#39;&quot;, 803831], [&quot;&#39;d&#39;&quot;, 804332], [&quot;&#39;f&#39;&quot;, 804416], [&quot;&#39;s&#39;&quot;, 804500], [&quot;&#39; &#39;&quot;, 804583], [&quot;&#39;d&#39;&quot;, 804667], [&quot;&#39;f&#39;&quot;, 804752], [&quot;&#39;s&#39;&quot;, 804836], [&quot;&#39; &#39;&quot;, 805103], [&quot;&#39;\\x1b[1@-&#39;&quot;, 805407], [&quot;&#39;\\r\\n&#39;&quot;, 805703], [&quot;&#39;6&#39;&quot;, 808519], [&quot;&#39;\\t&#39;&quot;, 808519], [&quot;&#39;dfs.audit.logger&#39;&quot;, 808520], [&quot;&#39;\\r\\n&#39;&quot;, 808520], [&quot;&#39;4&#39;&quot;, 808520], [&quot;&#39;\\t&#39;&quot;, 808520], [&quot;&#39;dfs.class&#39;&quot;, 808520], [&quot;&#39;\\r\\n&#39;&quot;, 808521], [&quot;&#39;3&#39;&quot;, 808521], [&quot;&#39;\\t&#39;&quot;, 808521], [&quot;&#39;dfs.server.namenode.&#39;&quot;, 808521], [&quot;&#39;\\r\\n&#39;&quot;, 808521], [&quot;&#39;2&#39;&quot;, 808521], [&quot;&#39;\\t&#39;&quot;, 808522], [&quot;&#39;dfs.period&#39;&quot;, 808522], [&quot;&#39;\\r\\n&#39;&quot;, 808522], [&quot;&#39;2&#39;&quot;, 808522], [&quot;&#39;\\t&#39;&quot;, 808522], [&quot;&#39;dfs.audit.log.maxfilesize\\r\\n2\\tdfs.audit.log.maxbackupindex\\r\\n1\\tdfsmetrics.log\\r\\n1\\tdfsadmin\\r\\n1\\tdfs.servers\\r\\n1\\tdfs.replication\\r\\n1\\tdfs.file\\r\\n&#39;&quot;, 808525], [&quot;&#39;bash-4.1# &#39;&quot;, 808870], [&quot;&#39;s&#39;&quot;, 849122], [&quot;&#39;p&#39;&quot;, 849248], [&quot;&#39;a&#39;&quot;, 849489], [&quot;&#39;r&#39;&quot;, 849569], [&quot;&#39;k&#39;&quot;, 849697], [&quot;&#39;-&#39;&quot;, 849961], [&quot;&#39;s&#39;&quot;, 850265], [&quot;&#39;u&#39;&quot;, 850553], [&quot;&#39;b&#39;&quot;, 850665], [&quot;&#39;m&#39;&quot;, 850825], [&quot;&#39;i&#39;&quot;, 850977], [&quot;&#39;t&#39;&quot;, 851072], [&quot;&#39;\\r\\n&#39;&quot;, 851217], [&quot;&#39;Usage: spark-submit [options] &lt;app jar | python file&gt; [app arguments]&#39;&quot;, 852273], [&quot;&#39;\\r\\n&#39;&quot;, 852273], [&quot;&#39;Usage: spark-submit --kill [submission ID] --master [spark://...]&#39;&quot;, 852274], [&quot;&#39;\\r\\n&#39;&quot;, 852274], [&quot;&#39;Usage: spark-submit --status [submission ID] --master [spark://...]&#39;&quot;, 852274], [&quot;&#39;\\r\\n&#39;&quot;, 852275], [&quot;&#39;\\r\\n&#39;&quot;, 852282], [&quot;&#39;Options:&#39;&quot;, 852282], [&quot;&#39;\\r\\n&#39;&quot;, 852282], [&quot;&#39;  --master MASTER_URL         spark://host:port, mesos://host:port, yarn, or local.&#39;&quot;, 852283], [&quot;&#39;\\r\\n&#39;&quot;, 852283], [&quot;&#39;  --deploy-mode DEPLOY_MODE   Whether to launch the driver program locally (\&quot;client\&quot;) or&#39;&quot;, 852283], [&quot;&#39;\\r\\n&#39;&quot;, 852283], [&quot;&#39;                              on one of the worker machines inside the cluster (\&quot;cluster\&quot;)&#39;&quot;, 852284], [&quot;&#39;\\r\\n&#39;&quot;, 852284], [&quot;&#39;                              (Default: client).&#39;&quot;, 852284], [&quot;&#39;\\r\\n&#39;&quot;, 852284], [&quot;&#39;  --class CLASS_NAME          Your application\\&#39;s main class (for Java / Scala apps).&#39;&quot;, 852285], [&quot;&#39;\\r\\n&#39;&quot;, 852285], [&quot;&#39;  --name NAME                 A name of your application.\\r\\n  --jars JARS                 Comma-separated list of local jars to include on the driver\\r\\n                              and executor classpaths.\\r\\n  --packages                  Comma-separated list of maven coordinates of jars to include\\r\\n                              on the driver and executor classpaths. Will search the local\\r\\n                              maven repo, then maven central and any additional remote\\r\\n                              repositories given by --repositories. The format for the\\r\\n                              coordinates should be groupId:artifactId:version.\\r\\n  --exclude-packages          Comma-separated list of groupId:artifactId, to exclude while\\r\\n                              resolving the dependencies provided in --packages to avoid\\r\\n                              dependency conflicts.\\r\\n  --repositories              Comma-separated list of additional remote repositories to\\r\\n                              search for the maven co&#39;&quot;, 852286], [&quot;&#39;ordinates given with --packages.\\r\\n  --py-files PY_FILES         Comma-separated list of .zip, .egg, or .py files to place\\r\\n                              on the PYTHONPATH for Python apps.\\r\\n  --files FILES               Comma-separated list of files to be placed in the working\\r\\n                              directory of each executor.\\r\\n\\r\\n  --conf PROP=VALUE           Arbitrary Spark configuration property.\\r\\n  --properties-file FILE      Path to a file from which to load extra properties. If not\\r\\n                              specified, this will look for conf/spark-defaults.conf.\\r\\n\\r\\n  --driver-memory MEM         Memory for driver (e.g. 1000M, 2G) (Default: 1024M).\\r\\n  --driver-java-options       Extra Java options to pass to the driver.\\r\\n  --driver-library-path       Extra library path entries to pass to the driver.\\r\\n  --driver-class-path         Extra class path entries to pass to the driver. Note that\\r\\n                              jars added with --jars are automatically included in the\\r\\n                    &#39;&quot;, 852286], [&quot;&#39;          classpath.\\r\\n\\r\\n  --executor-memory MEM       Memory per executor (e.g. 1000M, 2G) (Default: 1G).\\r\\n\\r\\n  --proxy-user NAME           User to impersonate when submitting the application.\\r\\n\\r\\n  --help, -h                  Show this help message and exit\\r\\n  --verbose, -v               Print additional debug output\\r\\n  --version,                  Print the version of current Spark\\r\\n\\r\\n Spark standalone with cluster deploy mode only:\\r\\n  --driver-cores NUM          Cores for driver (Default: 1).\\r\\n\\r\\n Spark standalone or Mesos with cluster deploy mode only:\\r\\n  --supervise                 If given, restarts the driver on failure.\\r\\n  --kill SUBMISSION_ID        If given, kills the driver specified.\\r\\n  --status SUBMISSION_ID      If given, requests the status of the driver specified.\\r\\n\\r\\n Spark standalone and Mesos only:\\r\\n  --total-executor-cores NUM  Total cores for all executors.\\r\\n\\r\\n Spark standalone and YARN only:\\r\\n  --executor-cores NUM        Number of cores per executor. (Default: 1 in YARN mode,\\r\\n              &#39;&quot;, 852286], [&quot;&#39;                or all available cores on the worker in standalone mode)\\r\\n\\r\\n YARN-only:\\r\\n  --driver-cores NUM          Number of cores used by the driver, only in cluster mode\\r\\n                              (Default: 1).\\r\\n  --queue QUEUE_NAME          The YARN queue to submit to (Default: \&quot;default\&quot;).\\r\\n  --num-executors NUM         Number of executors to launch (Default: 2).\\r\\n  --archives ARCHIVES         Comma separated list of archives to be extracted into the\\r\\n                              working directory of each executor.\\r\\n  --principal PRINCIPAL       Principal to be used to login to KDC, while running on\\r\\n                              secure HDFS.\\r\\n  --keytab KEYTAB             The full path to the file that contains the keytab for the\\r\\n                              principal specified above. This keytab will be copied to\\r\\n                              the node running the Application Master via the Secure\\r\\n                              Distributed Cache, for renewing the login tickets and the\\r\\n      &#39;&quot;, 852286], [&quot;&#39;                        delegation tokens periodically.\\r\\n      \\r\\n&#39;&quot;, 852289], [&quot;&#39;bash-4.1# &#39;&quot;, 852290], [&quot;&#39;s&#39;&quot;, 852937], [&quot;&#39;p&#39;&quot;, 853677], [&quot;&#39;\\x08 \\x08&#39;&quot;, 854001], [&quot;&#39;\\x08 \\x08&#39;&quot;, 854177], [&quot;&#39;\\x07&#39;&quot;, 854329], [&quot;&#39;s&#39;&quot;, 854529], [&quot;&#39;p&#39;&quot;, 854673], [&quot;&#39;a&#39;&quot;, 854841], [&quot;&#39;r&#39;&quot;, 854897], [&quot;&#39;k&#39;&quot;, 854977], [&quot;&#39;-&#39;&quot;, 855209], [&quot;&#39;s&#39;&quot;, 856073], [&quot;&#39;u&#39;&quot;, 856193], [&quot;&#39;b&#39;&quot;, 856721], [&quot;&#39;m&#39;&quot;, 856993], [&quot;&#39;i&#39;&quot;, 857161], [&quot;&#39;t&#39;&quot;, 857257], [&quot;&#39; &#39;&quot;, 857393], [&quot;&#39;-&#39;&quot;, 857993], [&quot;&#39;-&#39;&quot;, 858153], [&quot;&#39;c&#39;&quot;, 858265], [&quot;&#39;l&#39;&quot;, 858409], [&quot;&#39;a&#39;&quot;, 858465], [&quot;&#39;s&#39;&quot;, 858633], [&quot;&#39;s&#39;&quot;, 858769], [&quot;&#39; &#39;&quot;, 858857], [&quot;&#39;o&#39;&quot;, 859025], [&quot;&#39;r&#39;&quot;, 859114], [&quot;&#39;g&#39;&quot;, 859273], [&quot;&#39;.&#39;&quot;, 859425], [&quot;&#39;a&#39;&quot;, 859649], [&quot;&#39;p&#39;&quot;, 859761], [&quot;&#39;a&#39;&quot;, 859849], [&quot;&#39;c&#39;&quot;, 860041], [&quot;&#39;h&#39;&quot;, 860249], [&quot;&#39;e&#39;&quot;, 860313], [&quot;&#39;.&#39;&quot;, 860721], [&quot;&#39;s&#39;&quot;, 861249], [&quot;&#39;p&#39;&quot;, 861377], [&quot;&#39;a&#39;&quot;, 861481], [&quot;&#39;r&#39;&quot;, 861537], [&quot;&#39;k&#39;&quot;, 861641], [&quot;&#39;.&#39;&quot;, 861833], [&quot;&#39;e&#39;&quot;, 862145], [&quot;&#39;x&#39;&quot;, 862305], [&quot;&#39;a&#39;&quot;, 862449], [&quot;&#39;m&#39;&quot;, 862505], [&quot;&#39;p&#39;&quot;, 862569], [&quot;&#39;l&#39;&quot;, 862737], [&quot;&#39;e&#39;&quot;, 862770], [&quot;&#39;s&#39;&quot;, 862890], [&quot;&#39;.&#39;&quot;, 863041], [&quot;&#39;s&#39;&quot;, 863217], [&quot;&#39;p&#39;&quot;, 863337], [&quot;&#39;\\x08 \\x08&#39;&quot;, 863625], [&quot;&#39;\\x08 \\x08&#39;&quot;, 863769], [&quot;&#39;S&#39;&quot;, 863930], [&quot;&#39;p&#39;&quot;, 864162], [&quot;&#39;a&#39;&quot;, 864265], [&quot;&#39;r&#39;&quot;, 864329], [&quot;&#39;k&#39;&quot;, 864442], [&quot;&#39;P&#39;&quot;, 864841], [&quot;&#39;I&#39;&quot;, 864897], [&quot;&#39;\\x08 \\x08&#39;&quot;, 865602], [&quot;&#39;i&#39;&quot;, 865817], [&quot;&#39; &#39;&quot;, 865994], [&quot;&#39;-&#39;&quot;, 866353], [&quot;&#39;-&#39;&quot;, 866505], [&quot;&#39;m&#39;&quot;, 866713], [&quot;&#39;a&#39;&quot;, 866777], [&quot;&#39;s&#39;&quot;, 866937], [&quot;&#39;t&#39;&quot;, 867082], [&quot;&#39;e&#39;&quot;, 867202], [&quot;&#39;r&#39;&quot;, 867257], [&quot;&#39; &#39;&quot;, 867357], [&quot;&#39;y&#39;&quot;, 867745], [&quot;&#39;a&#39;&quot;, 867873], [&quot;&#39;r&#39;&quot;, 868034], [&quot;&#39;n&#39;&quot;, 868130], [&quot;&#39;-&#39;&quot;, 868329], [&quot;&#39;c&#39;&quot;, 868553], [&quot;&#39;l&#39;&quot;, 868642], [&quot;&#39;i&#39;&quot;, 868705], [&quot;&#39;e&#39;&quot;, 868817], [&quot;&#39;n&#39;&quot;, 868937], [&quot;&#39;t&#39;&quot;, 869010], [&quot;&#39; &#39;&quot;, 869097], [&quot;&#39;-&#39;&quot;, 869250], [&quot;&#39;-&#39;&quot;, 869425], [&quot;&#39;d&#39;&quot;, 869522], [&quot;&#39;r&#39;&quot;, 869641], [&quot;&#39;i&#39;&quot;, 869802], [&quot;&#39;v&#39;&quot;, 869865], [&quot;&#39;e&#39;&quot;, 870009], [&quot;&#39;r&#39;&quot;, 870057], [&quot;&#39;-&#39;&quot;, 870697], [&quot;&#39;m&#39;&quot;, 870962], [&quot;&#39;e&#39;&quot;, 871057], [&quot;&#39;m&#39;&quot;, 871169], [&quot;&#39;o&#39;&quot;, 871282], [&quot;&#39;r&#39;&quot;, 871370], [&quot;&#39;y&#39;&quot;, 871474], [&quot;&#39; &#39;&quot;, 871626], [&quot;&#39;1&#39;&quot;, 871770], [&quot;&#39;g&#39;&quot;, 871954], [&quot;&#39; &#39;&quot;, 872105], [&quot;&#39;-&#39;&quot;, 872482], [&quot;&#39;-&#39;&quot;, 872642], [&quot;&#39;e&#39;&quot;, 872737], [&quot;&#39;x&#39;&quot;, 872906], [&quot;&#39;e&#39;&quot;, 873050], [&quot;&#39;c&#39;&quot;, 873194], [&quot;&#39;u&#39;&quot;, 873354], [&quot;&#39;t&#39;&quot;, 873490], [&quot;&#39;o&#39;&quot;, 873633], [&quot;&#39;r&#39;&quot;, 873706], [&quot;&#39;-&#39;&quot;, 873922], [&quot;&#39;m&#39;&quot;, 874202], [&quot;&#39;e&#39;&quot;, 874274], [&quot;&#39;m&#39;&quot;, 874394], [&quot;&#39;o&#39;&quot;, 874497], [&quot;&#39;r&#39;&quot;, 874602], [&quot;&#39;y&#39;&quot;, 874706], [&quot;&#39; &#39;&quot;, 874857], [&quot;&#39;1&#39;&quot;, 874961], [&quot;&#39;g&#39;&quot;, 875161], [&quot;&#39; &#39;&quot;, 875802], [&quot;&#39;-&#39;&quot;, 876017], [&quot;&#39;-&#39;&quot;, 876170], [&quot;&#39;e&#39;&quot;, 876266], [&quot;&#39;x&#39;&quot;, 876459], [&quot;&#39;e&#39;&quot;, 876626], [&quot;&#39;c&#39;&quot;, 876793], [&quot;&#39;u&#39;&quot;, 876921], [&quot;&#39;t&#39;&quot;, 877010], [&quot;&#39;o&#39;&quot;, 877162], [&quot;&#39;r&#39;&quot;, 877226], [&quot;&#39;-&#39;&quot;, 877413], [&quot;&#39;c&#39;&quot;, 877578], [&quot;&#39;o&#39;&quot;, 877682], [&quot;&#39;r&#39;&quot;, 877770], [&quot;&#39;e&#39;&quot;, 877906], [&quot;&#39;s&#39;&quot;, 878042], [&quot;&#39; &#39;&quot;, 878186], [&quot;&#39;1&#39;&quot;, 878338], [&quot;&#39; &#39;&quot;, 878522], [&quot;&#39;/&#39;&quot;, 890099], [&quot;&#39;u&#39;&quot;, 890100], [&quot;&#39;s&#39;&quot;, 890100], [&quot;&#39;r&#39;&quot;, 890100], [&quot;&#39;/&#39;&quot;, 890100], [&quot;&#39;l&#39;&quot;, 890100], [&quot;&#39;o&#39;&quot;, 890101], [&quot;&#39;c&#39;&quot;, 890101], [&quot;&#39;a&#39;&quot;, 890101], [&quot;&#39;l&#39;&quot;, 890101], [&quot;&#39;/&#39;&quot;, 890101], [&quot;&#39;h&#39;&quot;, 890101], [&quot;&#39;a&#39;&quot;, 890102], [&quot;&#39;d&#39;&quot;, 890102], [&quot;&#39;o&#39;&quot;, 890102], [&quot;&#39;o&#39;&quot;, 890102], [&quot;&#39;p&#39;&quot;, 890102], [&quot;&#39;-&#39;&quot;, 890102], [&quot;&#39;2&#39;&quot;, 890102], [&quot;&#39;.&#39;&quot;, 890103], [&quot;&#39;6&#39;&quot;, 890103], [&quot;&#39;.&#39;&quot;, 890103], [&quot;&#39;0&#39;&quot;, 890103], [&quot;&#39;/&#39;&quot;, 890103], [&quot;&#39;s&#39;&quot;, 890104], [&quot;&#39;hare/hado \\rop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar&#39;&quot;, 890104], [&quot;&#39;\\x08 \\x08&#39;&quot;, 892034], [&quot;&#39;\\x08 \\x08&#39;&quot;, 892535], [&quot;&#39;\\x1b[Ak.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 \\x1b[K&#39;&quot;, 892770], [&quot;&#39;\\r\\n&#39;&quot;, 892771], [&quot;&#39;\\r\\x1b[K\\x1b[Abash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 &#39;&quot;, 892771], [&quot;&#39;/&#39;&quot;, 894268], [&quot;&#39;u&#39;&quot;, 894268], [&quot;&#39;s&#39;&quot;, 894268], [&quot;&#39;r&#39;&quot;, 894268], [&quot;&#39;/&#39;&quot;, 894268], [&quot;&#39;l&#39;&quot;, 894269], [&quot;&#39;oc&#39;&quot;, 894269], [&quot;&#39;a&#39;&quot;, 894269], [&quot;&#39;l&#39;&quot;, 894269], [&quot;&#39;/&#39;&quot;, 894269], [&quot;&#39;h&#39;&quot;, 894269], [&quot;&#39;a&#39;&quot;, 894270], [&quot;&#39;d&#39;&quot;, 894270], [&quot;&#39;o&#39;&quot;, 894270], [&quot;&#39;o&#39;&quot;, 894270], [&quot;&#39;p&#39;&quot;, 894270], [&quot;&#39;-&#39;&quot;, 894271], [&quot;&#39;2&#39;&quot;, 894271], [&quot;&#39;.&#39;&quot;, 894271], [&quot;&#39;6&#39;&quot;, 894271], [&quot;&#39;.&#39;&quot;, 894271], [&quot;&#39;0&#39;&quot;, 894271], [&quot;&#39;/&#39;&quot;, 894272], [&quot;&#39;s&#39;&quot;, 894272], [&quot;&#39;h&#39;&quot;, 894272], [&quot;&#39;a&#39;&quot;, 894272], [&quot;&#39;r&#39;&quot;, 894272], [&quot;&#39;e&#39;&quot;, 894273], [&quot;&#39;/hado \\rop/mapreduc&#39;&quot;, 894274], [&quot;&#39;e/hadoop-mapreduce-exam&#39;&quot;, 894275], [&quot;&#39;ples-2.6.0.jar&#39;&quot;, 894275], [&quot;&#39;\\x08 \\x08&#39;&quot;, 895195], [&quot;&#39;\\x08 \\x08&#39;&quot;, 895696], [&quot;&#39;\\x08 \\x08&#39;&quot;, 895779], [&quot;&#39;\\x08 \\x08&#39;&quot;, 895863], [&quot;&#39;\\x08 \\x08&#39;&quot;, 895947], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896032], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896115], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896200], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896283], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896367], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896451], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896536], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896620], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896704], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896787], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896871], [&quot;&#39;\\x08 \\x08&#39;&quot;, 896956], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897040], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897124], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897208], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897293], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897377], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897461], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897545], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897629], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897714], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897798], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897882], [&quot;&#39;\\x08 \\x08&#39;&quot;, 897966], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898051], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898135], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898220], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898304], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898388], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898472], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898556], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898640], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898725], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898808], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898893], [&quot;&#39;\\x08 \\x08&#39;&quot;, 898977], [&quot;&#39;\\x08 \\x08&#39;&quot;, 899060], [&quot;&#39;\\x08 \\x08&#39;&quot;, 899145], [&quot;&#39;\\x08 \\x08&#39;&quot;, 899229], [&quot;&#39;\\x08 \\x08&#39;&quot;, 899313], [&quot;&#39;\\x08 \\x08&#39;&quot;, 899397], [&quot;&#39;/&#39;&quot;, 899844], [&quot;&#39;\\x07&#39;&quot;, 900020], [&quot;&#39;\\r\\n&#39;&quot;, 900244], [&quot;&#39;common/    hdfs/      httpfs/    kms/       mapreduce/ tools/     yarn/      &#39;&quot;, 900249], [&quot;&#39;\\r\\n&#39;&quot;, 900249], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/hadoo\\rop/&#39;&quot;, 900250], [&quot;&#39;y&#39;&quot;, 903731], [&quot;&#39;a&#39;&quot;, 903795], [&quot;&#39;r&#39;&quot;, 903907], [&quot;&#39;n/&#39;&quot;, 904083], [&quot;&#39;\\x07&#39;&quot;, 904283], [&quot;&#39;\\r\\n&#39;&quot;, 904467], [&quot;&#39;hadoop-yarn-api-2.6.0.jar                                 hadoop-yarn-registry-2.6.0.jar                            hadoop-yarn-server-tests-2.6.0.jar&#39;&quot;, 904468], [&quot;&#39;\\r\\n&#39;&quot;, 904468], [&quot;&#39;hadoop-yarn-applications-distributedshell-2.6.0.jar       hadoop-yarn-server-applicationhistoryservice-2.6.0.jar    hadoop-yarn-server-web-proxy-2.6.0.jar&#39;&quot;, 904468], [&quot;&#39;\\r\\n&#39;&quot;, 904468], [&quot;&#39;hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar  hadoop-yarn-server-common-2.6.0.jar                       lib/&#39;&quot;, 904469], [&quot;&#39;\\r\\n&#39;&quot;, 904469], [&quot;&#39;hadoop-yarn-client-2.6.0.jar                              hadoop-yarn-server-nodemanager-2.6.0.jar                  sources/&#39;&quot;, 904473], [&quot;&#39;\\r\\n&#39;&quot;, 904473], [&quot;&#39;hadoop-yarn-common-2.6.0.jar                              hadoop-yarn-server-resourcemanager-2.6.0.jar              test/&#39;&quot;, 904474], [&quot;&#39;\\r\\n&#39;&quot;, 904474], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/hadoo\\rop/yarn/&#39;&quot;, 904474], [&quot;&#39;\\r\\n&#39;&quot;, 904683], [&quot;&#39;hadoop-yarn-api-2.6.0.jar                                 hadoop-yarn-registry-2.6.0.jar                            hadoop-yarn-server-tests-2.6.0.jar&#39;&quot;, 904683], [&quot;&#39;\\r\\n&#39;&quot;, 904683], [&quot;&#39;hadoop-yarn-applications-distributedshell-2.6.0.jar       hadoop-yarn-server-applicationhistoryservice-2.6.0.jar    hadoop-yarn-server-web-proxy-2.6.0.jar&#39;&quot;, 904684], [&quot;&#39;\\r\\n&#39;&quot;, 904684], [&quot;&#39;hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar  hadoop-yarn-server-common-2.6.0.jar                       lib/&#39;&quot;, 904685], [&quot;&#39;\\r\\n&#39;&quot;, 904685], [&quot;&#39;hadoop-yarn-client-2.6.0.jar                              hadoop-yarn-server-nodemanager-2.6.0.jar                  sources/&#39;&quot;, 904685], [&quot;&#39;\\r\\n&#39;&quot;, 904685], [&quot;&#39;hadoop-yarn-common-2.6.0.jar                              hadoop-yarn-server-resourcemanager-2.6.0.jar              test/&#39;&quot;, 904686], [&quot;&#39;\\r\\n&#39;&quot;, 904686], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/hadoo\\rop/yarn/&#39;&quot;, 904686], [&quot;&#39;\\x08 \\x08&#39;&quot;, 909283], [&quot;&#39;\\x08 \\x08&#39;&quot;, 909784], [&quot;&#39;\\x08 \\x08&#39;&quot;, 909867], [&quot;&#39;\\x08 \\x08&#39;&quot;, 909951], [&quot;&#39;\\x08 \\x08&#39;&quot;, 910211], [&quot;&#39;\\x08 \\x08&#39;&quot;, 912132], [&quot;&#39;\\x08 \\x08&#39;&quot;, 912634], [&quot;&#39;\\x08 \\x08\\x1b[Abash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/hado \\r\\x1b[K&#39;&quot;, 912716], [&quot;&#39;\\x1b[Abash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/had\\x1b[K&#39;&quot;, 912801], [&quot;&#39;\\r\\n&#39;&quot;, 912802], [&quot;&#39;\\r\\x1b[K\\x1b[Abash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop-2.6.0/share/had&#39;&quot;, 912802], [&quot;&#39;\\x08 \\x08&#39;&quot;, 912885], [&quot;&#39;\\x08 \\x08&#39;&quot;, 912970], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913054], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913138], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913222], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913306], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913390], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913475], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913559], [&quot;&#39;\\x08 \\x08&#39;&quot;, 913644], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914019], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914520], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914604], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914688], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914773], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914857], [&quot;&#39;\\x08 \\x08&#39;&quot;, 914941], [&quot;&#39;\\x08 \\x08&#39;&quot;, 915025], [&quot;&#39;\\x08 \\x08&#39;&quot;, 915110], [&quot;&#39;\\x08 \\x08&#39;&quot;, 915347], [&quot;&#39;\\x08 \\x08&#39;&quot;, 915531], [&quot;&#39;\\x07&#39;&quot;, 915724], [&quot;&#39;adoop&#39;&quot;, 915724], [&quot;&#39;\\x07&#39;&quot;, 915884], [&quot;&#39;\\r\\n&#39;&quot;, 916219], [&quot;&#39;hadoop/       hadoop-2.6.0/ &#39;&quot;, 916220], [&quot;&#39;\\r\\n&#39;&quot;, 916220], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop&#39;&quot;, 916220], [&quot;&#39;\\r\\n&#39;&quot;, 916404], [&quot;&#39;hadoop/       hadoop-2.6.0/ &#39;&quot;, 916404], [&quot;&#39;\\r\\n&#39;&quot;, 916405], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop&#39;&quot;, 916405], [&quot;&#39;/&#39;&quot;, 918811], [&quot;&#39;\\x07&#39;&quot;, 918939], [&quot;&#39;\\r\\n&#39;&quot;, 919116], [&quot;&#39;LICENSE.txt  NOTICE.txt   README.txt   bin/         etc/         include/     input/       lib/         libexec/     logs/        sbin/        share/       &#39;&quot;, 919119], [&quot;&#39;\\r\\n&#39;&quot;, 919120], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/&#39;&quot;, 919120], [&quot;&#39;\\r\\n&#39;&quot;, 919268], [&quot;&#39;LICENSE.txt  NOTICE.txt   README.txt   bin/         etc/         include/     input/       lib/         libexec/     logs/        sbin/        share/       &#39;&quot;, 919268], [&quot;&#39;\\r\\n&#39;&quot;, 919268], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/&#39;&quot;, 919269], [&quot;&#39;s&#39;&quot;, 921979], [&quot;&#39;h&#39;&quot;, 922067], [&quot;&#39;are/&#39;&quot;, 922244], [&quot;&#39;\\x07&#39;&quot;, 922435], [&quot;&#39;\\r\\n&#39;&quot;, 922597], [&quot;&#39;doc/    hadoop/ &#39;&quot;, 922599], [&quot;&#39;\\r\\n&#39;&quot;, 922600], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/&#39;&quot;, 922600], [&quot;&#39;\\r\\n&#39;&quot;, 922796], [&quot;&#39;doc/    hadoop/ &#39;&quot;, 922796], [&quot;&#39;\\r\\n&#39;&quot;, 922796], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/&#39;&quot;, 922797], [&quot;&#39;h&#39;&quot;, 924524], [&quot;&#39;a&#39;&quot;, 924577], [&quot;&#39;d&#39;&quot;, 924627], [&quot;&#39;oop/&#39;&quot;, 924828], [&quot;&#39;\\x07&#39;&quot;, 925019], [&quot;&#39;\\r\\n&#39;&quot;, 925180], [&quot;&#39;common/    hdfs/      httpfs/    kms/       mapreduce/ tools/     yarn/      &#39;&quot;, 925180], [&quot;&#39;\\r\\n&#39;&quot;, 925180], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/hadoop/&#39;&quot;, 925181], [&quot;&#39;y&#39;&quot;, 927460], [&quot;&#39;a&#39;&quot;, 927542], [&quot;&#39;r \\r&#39;&quot;, 927620], [&quot;&#39;n&#39;&quot;, 927756], [&quot;&#39;/&#39;&quot;, 927884], [&quot;&#39;\\x07&#39;&quot;, 928068], [&quot;&#39;\\r\\n&#39;&quot;, 928236], [&quot;&#39;hadoop-yarn-api-2.6.0.jar                                 hadoop-yarn-registry-2.6.0.jar                            hadoop-yarn-server-tests-2.6.0.jar&#39;&quot;, 928237], [&quot;&#39;\\r\\n&#39;&quot;, 928237], [&quot;&#39;hadoop-yarn-applications-distributedshell-2.6.0.jar       hadoop-yarn-server-applicationhistoryservice-2.6.0.jar    hadoop-yarn-server-web-proxy-2.6.0.jar&#39;&quot;, 928238], [&quot;&#39;\\r\\n&#39;&quot;, 928238], [&quot;&#39;hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar  hadoop-yarn-server-common-2.6.0.jar                       lib/&#39;&quot;, 928238], [&quot;&#39;\\r\\n&#39;&quot;, 928238], [&quot;&#39;hadoop-yarn-client-2.6.0.jar                              hadoop-yarn-server-nodemanager-2.6.0.jar                  sources/&#39;&quot;, 928239], [&quot;&#39;\\r\\n&#39;&quot;, 928239], [&quot;&#39;hadoop-yarn-common-2.6.0.jar                              hadoop-yarn-server-resourcemanager-2.6.0.jar              test/&#39;&quot;, 928239], [&quot;&#39;\\r\\n&#39;&quot;, 928239], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/hadoop/yarn\\rn/&#39;&quot;, 928240], [&quot;&#39;\\r\\n&#39;&quot;, 928404], [&quot;&#39;hadoop-yarn-api-2.6.0.jar                                 hadoop-yarn-registry-2.6.0.jar                            hadoop-yarn-server-tests-2.6.0.jar&#39;&quot;, 928404], [&quot;&#39;\\r\\n&#39;&quot;, 928404], [&quot;&#39;hadoop-yarn-applications-distributedshell-2.6.0.jar       hadoop-yarn-server-applicationhistoryservice-2.6.0.jar    hadoop-yarn-server-web-proxy-2.6.0.jar&#39;&quot;, 928405], [&quot;&#39;\\r\\n&#39;&quot;, 928405], [&quot;&#39;hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar  hadoop-yarn-server-common-2.6.0.jar                       lib/&#39;&quot;, 928405], [&quot;&#39;\\r\\n&#39;&quot;, 928406], [&quot;&#39;hadoop-yarn-client-2.6.0.jar                              hadoop-yarn-server-nodemanager-2.6.0.jar                  sources/&#39;&quot;, 928406], [&quot;&#39;\\r\\n&#39;&quot;, 928406], [&quot;&#39;hadoop-yarn-common-2.6.0.jar                              hadoop-yarn-server-resourcemanager-2.6.0.jar              test/&#39;&quot;, 928406], [&quot;&#39;\\r\\n&#39;&quot;, 928407], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/hadoop/yarn\\rn/&#39;&quot;, 928407], [&quot;&#39;\\r\\n&#39;&quot;, 928596], [&quot;&#39;hadoop-yarn-api-2.6.0.jar                                 hadoop-yarn-registry-2.6.0.jar                            hadoop-yarn-server-tests-2.6.0.jar&#39;&quot;, 928597], [&quot;&#39;\\r\\n&#39;&quot;, 928597], [&quot;&#39;hadoop-yarn-applications-distributedshell-2.6.0.jar       hadoop-yarn-server-applicationhistoryservice-2.6.0.jar    hadoop-yarn-server-web-proxy-2.6.0.jar&#39;&quot;, 928598], [&quot;&#39;\\r\\n&#39;&quot;, 928598], [&quot;&#39;hadoop-yarn-applications-unmanaged-am-launcher-2.6.0.jar  hadoop-yarn-server-common-2.6.0.jar                       lib/&#39;&quot;, 928598], [&quot;&#39;\\r\\n&#39;&quot;, 928599], [&quot;&#39;hadoop-yarn-client-2.6.0.jar                              hadoop-yarn-server-nodemanager-2.6.0.jar                  sources/&#39;&quot;, 928599], [&quot;&#39;\\r\\n&#39;&quot;, 928599], [&quot;&#39;hadoop-yarn-common-2.6.0.jar                              hadoop-yarn-server-resourcemanager-2.6.0.jar              test/&#39;&quot;, 928600], [&quot;&#39;\\r\\n&#39;&quot;, 928600], [&quot;&#39;bash-4.1# spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --driver-memory 1g --executor-memory 1g --executor-cores 1 /usr/local/hadoop/share/hadoop/yarn\\rn/&#39;&quot;, 928600], [&quot;&#39;^C&#39;&quot;, 930876], [&quot;&#39;\\r\\n&#39;&quot;, 930876], [&quot;&#39;bash-4.1# &#39;&quot;, 930876], [&quot;&#39;c&#39;&quot;, 932452], [&quot;&#39;l&#39;&quot;, 933068], [&quot;&#39;e&#39;&quot;, 933148], [&quot;&#39;a&#39;&quot;, 933452], [&quot;&#39;r&#39;&quot;, 933516], [&quot;&#39;\\r\\n&#39;&quot;, 933724], [&quot;&#39;\\x1b[H\\x1b[2J&#39;&quot;, 933743], [&quot;&#39;bash-4.1# &#39;&quot;, 933743], [&quot;&#39;f&#39;&quot;, 935324], [&quot;&#39;i&#39;&quot;, 935428], [&quot;&#39;n&#39;&quot;, 935492], [&quot;&#39;d&#39;&quot;, 935524], [&quot;&#39; &#39;&quot;, 935676], [&quot;&#39;/&#39;&quot;, 935964], [&quot;&#39; &#39;&quot;, 936140], [&quot;&#39;-&#39;&quot;, 936252], [&quot;&#39;n&#39;&quot;, 936492], [&quot;&#39;a&#39;&quot;, 936580], [&quot;&#39;m&#39;&quot;, 936708], [&quot;&#39;e&#39;&quot;, 936758], [&quot;&#39; &#39;&quot;, 936852], [&quot;&#39;\&quot;&#39;&quot;, 937052], [&quot;&#39;s&#39;&quot;, 937460], [&quot;&#39;p&#39;&quot;, 937572], [&quot;&#39;a&#39;&quot;, 937684], [&quot;&#39;r&#39;&quot;, 937764], [&quot;&#39;k&#39;&quot;, 937860], [&quot;&#39;-&#39;&quot;, 938084], [&quot;&#39;e&#39;&quot;, 938468], [&quot;&#39;x&#39;&quot;, 938620], [&quot;&#39;a&#39;&quot;, 938772], [&quot;&#39;m&#39;&quot;, 938876], [&quot;&#39;p&#39;&quot;, 938908], [&quot;&#39;l&#39;&quot;, 939124], [&quot;&#39;e&#39;&quot;, 939157], [&quot;&#39;s&#39;&quot;, 939300], [&quot;&#39;*&#39;&quot;, 939636], [&quot;&#39;\&quot;&#39;&quot;, 939908], [&quot;&#39;\\r\\n&#39;&quot;, 940676], [&quot;&#39;/usr/local/spark-1.6.0-bin-hadoop2.6/lib/spark-examples-1.6.0-hadoop2.6.0.jar&#39;&quot;, 941024], [&quot;&#39;\\r\\n&#39;&quot;, 941025], [&quot;&#39;bash-4.1# &#39;&quot;, 942490], [&quot;&#39;^C&#39;&quot;, 942628], [&quot;&#39;\\r\\n&#39;&quot;, 942629], [&quot;&#39;bash-4.1# &#39;&quot;, 942629], [&quot;&#39;find / -name \&quot;spark-examples*\&quot;&#39;&quot;, 943037], [&quot;&#39;\\rbash-4.1# clear\\x1b[K&#39;&quot;, 943228], [&quot;&#39;\\x08\\x08\\x08\\x08\\x08spark-submit&#39;&quot;, 943525], [&quot;&#39;\\rbash-4.1# hdfs dfs -cat output/*&#39;&quot;, 943868], [&quot;&#39;\\rbash-4.1# \\x1b[10Pspark-submit&#39;&quot;, 944677], [&quot;&#39;\\rbash-4.1# \\x1b[K&#39;&quot;, 949285], [&quot;&#39;s&#39;&quot;, 949759], [&quot;&#39;p&#39;&quot;, 949759], [&quot;&#39;a&#39;&quot;, 949759], [&quot;&#39;r&#39;&quot;, 949759], [&quot;&#39;k&#39;&quot;, 949760], [&quot;&#39;-&#39;&quot;, 949760], [&quot;&#39;s&#39;&quot;, 949760], [&quot;&#39;u&#39;&quot;, 949760], [&quot;&#39;b&#39;&quot;, 949760], [&quot;&#39;m&#39;&quot;, 949760], [&quot;&#39;i&#39;&quot;, 949761], [&quot;&#39;t&#39;&quot;, 949761], [&quot;&#39; &#39;&quot;, 949761], [&quot;&#39;\\\\&#39;&quot;, 949761], [&quot;&#39;\\r\\n&#39;&quot;, 949761], [&quot;&#39;&gt; --class org.apache.spark.examples.SparkPi \\\\\\r\\n&#39;&quot;, 949766], [&quot;&#39;&gt; --master yarn-client \\\\\\r\\n&#39;&quot;, 949773], [&quot;&#39;&gt; --driver-memory 1g \\\\\\r\\n&#39;&quot;, 949778], [&quot;&#39;&gt; --executor-memory 1g \\\\\\r\\n&#39;&quot;, 949783], [&quot;&#39;&gt; --executor-cores 1 \\\\\\r\\n&#39;&quot;, 949787], [&quot;&#39;&gt; $SPARK_HOME/lib/spark-examples-1.6.0-hadoop2.6.0.jar\\r\\n&#39;&quot;, 949797], [&quot;&#39;16/02/12 00:15:52 INFO spark.SparkContext: Running Spark version 1.6.0&#39;&quot;, 950866], [&quot;&#39;\\r\\n&#39;&quot;, 950866], [&quot;&#39;16/02/12 00:15:53 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable&#39;&quot;, 951458], [&quot;&#39;\\r\\n&#39;&quot;, 951458], [&quot;&#39;^C&#39;&quot;, 951789], [&quot;&#39;bash-4.1# &#39;&quot;, 951821], [&quot;&#39;s&#39;&quot;, 953447], [&quot;&#39;p&#39;&quot;, 953447], [&quot;&#39;a&#39;&quot;, 953448], [&quot;&#39;r&#39;&quot;, 953448], [&quot;&#39;k&#39;&quot;, 953448], [&quot;&#39;-&#39;&quot;, 953448], [&quot;&#39;s&#39;&quot;, 953448], [&quot;&#39;u&#39;&quot;, 953449], [&quot;&#39;b&#39;&quot;, 953449], [&quot;&#39;m&#39;&quot;, 953449], [&quot;&#39;i&#39;&quot;, 953449], [&quot;&#39;t&#39;&quot;, 953449], [&quot;&#39; &#39;&quot;, 953449], [&quot;&#39;\\\\&#39;&quot;, 953450], [&quot;&#39;\\r\\n&#39;&quot;, 953452], [&quot;&#39;&gt; --class org.apache.spark.examples.SparkPi \\\\\\r\\n&#39;&quot;, 953456], [&quot;&#39;&gt; --master yarn-client \\\\\\r\\n&#39;&quot;, 953461], [&quot;&#39;&gt; --driver-memory 1g \\\\\\r\\n&#39;&quot;, 953466], [&quot;&#39;&gt; --executor-memory 1g \\\\\\r\\n&#39;&quot;, 953470], [&quot;&#39;&gt; --executor-cores 1 \\\\\\r\\n&#39;&quot;, 953475], [&quot;&#39;&gt; $SPARK_HOME/lib/spark-examples-1.6.0-hadoop2.6.0.jar\\r\\n&#39;&quot;, 953480], [&quot;&#39;16/02/12 00:15:56 INFO spark.SparkContext: Running Spark version 1.6.0&#39;&quot;, 954426], [&quot;&#39;\\r\\n&#39;&quot;, 954430], [&quot;&#39;\\r\\n&#39;&quot;, 954548], [&quot;&#39;16/02/12 00:15:56 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable&#39;&quot;, 954898], [&quot;&#39;\\r\\n&#39;&quot;, 954898], [&quot;&#39;16/02/12 00:15:56 INFO spark.SecurityManager: Changing view acls to: root&#39;&quot;, 955220], [&quot;&#39;\\r\\n&#39;&quot;, 955220], [&quot;&#39;16/02/12 00:15:56 INFO spark.SecurityManager: Changing modify acls to: root&#39;&quot;, 955224], [&quot;&#39;\\r\\n&#39;&quot;, 955225], [&quot;&#39;16/02/12 00:15:56 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); users with modify permissions: Set(root)&#39;&quot;, 955227], [&quot;&#39;\\r\\n&#39;&quot;, 955229], [&quot;&#39;16/02/12 00:15:57 INFO util.Utils: Successfully started service \\&#39;sparkDriver\\&#39; on port 60418.&#39;&quot;, 956018], [&quot;&#39;\\r\\n&#39;&quot;, 956020], [&quot;&#39;16/02/12 00:15:58 INFO slf4j.Slf4jLogger: Slf4jLogger started&#39;&quot;, 956565], [&quot;&#39;\\r\\n&#39;&quot;, 956567], [&quot;&#39;16/02/12 00:15:58 INFO Remoting: Starting remoting&#39;&quot;, 956655], [&quot;&#39;\\r\\n&#39;&quot;, 956657], [&quot;&#39;16/02/12 00:15:58 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriverActorSystem@172.17.0.11:36939]&#39;&quot;, 956869], [&quot;&#39;\\r\\n&#39;&quot;, 956870], [&quot;&#39;16/02/12 00:15:58 INFO util.Utils: Successfully started service \\&#39;sparkDriverActorSystem\\&#39; on port 36939.&#39;&quot;, 956881], [&quot;&#39;\\r\\n&#39;&quot;, 956881], [&quot;&#39;16/02/12 00:15:58 INFO spark.SparkEnv: Registering MapOutputTracker&#39;&quot;, 956977], [&quot;&#39;\\r\\n&#39;&quot;, 956978], [&quot;&#39;16/02/12 00:15:58 INFO spark.SparkEnv: Registering BlockManagerMaster&#39;&quot;, 957037], [&quot;&#39;\\r\\n&#39;&quot;, 957037], [&quot;&#39;16/02/12 00:15:58 INFO storage.DiskBlockManager: Created local directory at /tmp/blockmgr-492ae3ad-0abd-4425-a7a2-0eef2a0f78d4&#39;&quot;, 957058], [&quot;&#39;\\r\\n&#39;&quot;, 957059], [&quot;&#39;16/02/12 00:15:58 INFO storage.MemoryStore: MemoryStore started with capacity 517.4 MB&#39;&quot;, 957090], [&quot;&#39;\\r\\n&#39;&quot;, 957090], [&quot;&#39;16/02/12 00:15:59 INFO spark.SparkEnv: Registering OutputCommitCoordinator&#39;&quot;, 957556], [&quot;&#39;\\r\\n&#39;&quot;, 957557], [&quot;&#39;16/02/12 00:15:59 INFO server.Server: jetty-8.y.z-SNAPSHOT&#39;&quot;, 958096], [&quot;&#39;\\r\\n&#39;&quot;, 958106], [&quot;&#39;16/02/12 00:15:59 INFO server.AbstractConnector: Started SelectChannelConnector@0.0.0.0:4040&#39;&quot;, 958176], [&quot;&#39;\\r\\n&#39;&quot;, 958176], [&quot;&#39;16/02/12 00:15:59 INFO util.Utils: Successfully started service \\&#39;SparkUI\\&#39; on port 4040.&#39;&quot;, 958177], [&quot;&#39;\\r\\n&#39;&quot;, 958177], [&quot;&#39;16/02/12 00:15:59 INFO ui.SparkUI: Started SparkUI at http://172.17.0.11:4040&#39;&quot;, 958180], [&quot;&#39;\\r\\n&#39;&quot;, 958180], [&quot;&#39;16/02/12 00:15:59 INFO spark.HttpFileServer: HTTP File server directory is /tmp/spark-78ffcfea-37b3-4b14-ad03-33a2cd86705a/httpd-aad710b9-3ebf-4e97-b478-fb765471f028&#39;&quot;, 958242], [&quot;&#39;\\r\\n&#39;&quot;, 958244], [&quot;&#39;16/02/12 00:15:59 INFO spark.HttpServer: Starting HTTP Server&#39;&quot;, 958249], [&quot;&#39;\\r\\n&#39;&quot;, 958250], [&quot;&#39;16/02/12 00:15:59 INFO server.Server: jetty-8.y.z-SNAPSHOT&#39;&quot;, 958263], [&quot;&#39;\\r\\n&#39;&quot;, 958270], [&quot;&#39;16/02/12 00:15:59 INFO server.AbstractConnector: Started SocketConnector@0.0.0.0:45849&#39;&quot;, 958286], [&quot;&#39;\\r\\n&#39;&quot;, 958286], [&quot;&#39;16/02/12 00:15:59 INFO util.Utils: Successfully started service \\&#39;HTTP file server\\&#39; on port 45849.&#39;&quot;, 958291], [&quot;&#39;\\r\\n&#39;&quot;, 958291], [&quot;&#39;16/02/12 00:16:00 INFO spark.SparkContext: Added JAR file:/usr/local/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar at http://172.17.0.11:45849/jars/spark-examples-1.6.0-hadoop2.6.0.jar with timestamp 1455254160583&#39;&quot;, 958954], [&quot;&#39;\\r\\n&#39;&quot;, 958954], [&quot;&#39;16/02/12 00:16:00 INFO client.RMProxy: Connecting to ResourceManager at /0.0.0.0:8032&#39;&quot;, 959354], [&quot;&#39;\\r\\n&#39;&quot;, 959355], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Requesting a new application from cluster with 1 NodeManagers&#39;&quot;, 960013], [&quot;&#39;\\r\\n&#39;&quot;, 960013], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Verifying our application has not requested more than the maximum memory capability of the cluster (8192 MB per container)&#39;&quot;, 960042], [&quot;&#39;\\r\\n&#39;&quot;, 960042], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Will allocate AM container, with 896 MB memory including 384 MB overhead&#39;&quot;, 960043], [&quot;&#39;\\r\\n&#39;&quot;, 960043], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Setting up container launch context for our AM&#39;&quot;, 960044], [&quot;&#39;\\r\\n&#39;&quot;, 960045], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Setting up the launch environment for our AM container&#39;&quot;, 960052], [&quot;&#39;\\r\\n&#39;&quot;, 960052], [&quot;&#39;16/02/12 00:16:01 INFO yarn.Client: Preparing resources for our AM container&#39;&quot;, 960069], [&quot;&#39;\\r\\n&#39;&quot;, 960069], [&quot;&#39;16/02/12 00:16:02 INFO yarn.Client: Source and destination file systems are the same. Not copying hdfs:/spark/spark-assembly-1.6.0-hadoop2.6.0.jar&#39;&quot;, 961232], [&quot;&#39;\\r\\n&#39;&quot;, 961232], [&quot;&#39;16/02/12 00:16:03 INFO yarn.Client: Uploading resource file:/tmp/spark-78ffcfea-37b3-4b14-ad03-33a2cd86705a/__spark_conf__6852998024674697982.zip -&gt; hdfs://f4491d85c28c:9000/user/root/.sparkStaging/application_1455253236417_0003/__spark_conf__6852998024674697982.zip&#39;&quot;, 961438], [&quot;&#39;\\r\\n&#39;&quot;, 961439], [&quot;&#39;16/02/12 00:16:03 INFO spark.SecurityManager: Changing view acls to: root&#39;&quot;, 962287], [&quot;&#39;\\r\\n&#39;&quot;, 962291], [&quot;&#39;16/02/12 00:16:03 INFO spark.SecurityManager: Changing modify acls to: root&#39;&quot;, 962296], [&quot;&#39;\\r\\n&#39;&quot;, 962296], [&quot;&#39;16/02/12 00:16:03 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(root); users with modify permissions: Set(root)&#39;&quot;, 962297], [&quot;&#39;\\r\\n&#39;&quot;, 962297], [&quot;&#39;16/02/12 00:16:03 INFO yarn.Client: Submitting application 3 to ResourceManager&#39;&quot;, 962325], [&quot;&#39;\\r\\n&#39;&quot;, 962325], [&quot;&#39;16/02/12 00:16:04 INFO impl.YarnClientImpl: Submitted application application_1455253236417_0003&#39;&quot;, 962381], [&quot;&#39;\\r\\n&#39;&quot;, 962383], [&quot;&#39;16/02/12 00:16:05 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 963401], [&quot;&#39;\\r\\n&#39;&quot;, 963402], [&quot;&#39;16/02/12 00:16:05 INFO yarn.Client: &#39;&quot;, 963405], [&quot;&#39;\\r\\n&#39;&quot;, 963418], [&quot;&#39;\\t&#39;&quot;, 963418], [&quot;&#39; client token: N/A&#39;&quot;, 963419], [&quot;&#39;\\r\\n&#39;&quot;, 963419], [&quot;&#39;\\t&#39;&quot;, 963419], [&quot;&#39; diagnostics: N/A&#39;&quot;, 963420], [&quot;&#39;\\r\\n&#39;&quot;, 963420], [&quot;&#39;\\t&#39;&quot;, 963420], [&quot;&#39; ApplicationMaster host: N/A&#39;&quot;, 963421], [&quot;&#39;\\r\\n&#39;&quot;, 963421], [&quot;&#39;\\t&#39;&quot;, 963421], [&quot;&#39; ApplicationMaster RPC port: -1&#39;&quot;, 963421], [&quot;&#39;\\r\\n&#39;&quot;, 963422], [&quot;&#39;\\t&#39;&quot;, 963422], [&quot;&#39; queue: default\\r\\n\\t start time: 1455254163991\\r\\n\\t final status: UNDEFINED\\r\\n\\t tracking URL: http://f4491d85c28c:8088/proxy/application_1455253236417_0003/\\r\\n\\t user: root\\r\\n&#39;&quot;, 963424], [&quot;&#39;16/02/12 00:16:06 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 964425], [&quot;&#39;\\r\\n&#39;&quot;, 964425], [&quot;&#39;16/02/12 00:16:07 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 965429], [&quot;&#39;\\r\\n&#39;&quot;, 965429], [&quot;&#39;16/02/12 00:16:08 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 966432], [&quot;&#39;\\r\\n&#39;&quot;, 966432], [&quot;&#39;16/02/12 00:16:09 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 967436], [&quot;&#39;\\r\\n&#39;&quot;, 967437], [&quot;&#39;16/02/12 00:16:10 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 968441], [&quot;&#39;\\r\\n&#39;&quot;, 968442], [&quot;&#39;16/02/12 00:16:11 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 969444], [&quot;&#39;\\r\\n&#39;&quot;, 969445], [&quot;&#39;16/02/12 00:16:12 INFO cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: ApplicationMaster registered as NettyRpcEndpointRef(null)&#39;&quot;, 970406], [&quot;&#39;\\r\\n&#39;&quot;, 970407], [&quot;&#39;16/02/12 00:16:12 INFO cluster.YarnClientSchedulerBackend: Add WebUI Filter. org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter, Map(PROXY_HOSTS -&gt; f4491d85c28c, PROXY_URI_BASES -&gt; http://f4491d85c28c:8088/proxy/application_1455253236417_0003), /proxy/application_1455253236417_0003&#39;&quot;, 970431], [&quot;&#39;\\r\\n&#39;&quot;, 970431], [&quot;&#39;16/02/12 00:16:12 INFO ui.JettyUtils: Adding filter: org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter&#39;&quot;, 970433], [&quot;&#39;\\r\\n&#39;&quot;, 970435], [&quot;&#39;16/02/12 00:16:12 INFO yarn.Client: Application report for application_1455253236417_0003 (state: ACCEPTED)&#39;&quot;, 970447], [&quot;&#39;\\r\\n&#39;&quot;, 970448], [&quot;&#39;16/02/12 00:16:13 INFO yarn.Client: Application report for application_1455253236417_0003 (state: RUNNING)&#39;&quot;, 971451], [&quot;&#39;\\r\\n&#39;&quot;, 971451], [&quot;&#39;16/02/12 00:16:13 INFO yarn.Client: &#39;&quot;, 971452], [&quot;&#39;\\r\\n&#39;&quot;, 971453], [&quot;&#39;\\t&#39;&quot;, 971453], [&quot;&#39; client token: N/A&#39;&quot;, 971453], [&quot;&#39;\\r\\n&#39;&quot;, 971454], [&quot;&#39;\\t&#39;&quot;, 971454], [&quot;&#39; diagnostics: N/A&#39;&quot;, 971454], [&quot;&#39;\\r\\n&#39;&quot;, 971454], [&quot;&#39;\\t&#39;&quot;, 971454], [&quot;&#39; ApplicationMaster host: 172.17.0.11&#39;&quot;, 971455], [&quot;&#39;\\r\\n&#39;&quot;, 971455], [&quot;&#39;\\t&#39;&quot;, 971455], [&quot;&#39; ApplicationMaster RPC port: 0&#39;&quot;, 971455], [&quot;&#39;\\r\\n&#39;&quot;, 971456], [&quot;&#39;\\t&#39;&quot;, 971456], [&quot;&#39; queue: default\\r\\n\\t start time: 1455254163991\\r\\n\\t final status: UNDEFINED\\r\\n\\t tracking URL: http://f4491d85c28c:8088/proxy/application_1455253236417_0003/\\r\\n\\t user: root\\r\\n&#39;&quot;, 971457], [&quot;&#39;16/02/12 00:16:13 INFO cluster.YarnClientSchedulerBackend: Application application_1455253236417_0003 has started running.&#39;&quot;, 971458], [&quot;&#39;\\r\\n&#39;&quot;, 971458], [&quot;&#39;16/02/12 00:16:13 INFO util.Utils: Successfully started service \\&#39;org.apache.spark.network.netty.NettyBlockTransferService\\&#39; on port 60332.&#39;&quot;, 971465], [&quot;&#39;\\r\\n&#39;&quot;, 971465], [&quot;&#39;16/02/12 00:16:13 INFO netty.NettyBlockTransferService: Server created on 60332&#39;&quot;, 971466], [&quot;&#39;\\r\\n&#39;&quot;, 971467], [&quot;&#39;16/02/12 00:16:13 INFO storage.BlockManagerMaster: Trying to register BlockManager&#39;&quot;, 971470], [&quot;&#39;\\r\\n&#39;&quot;, 971471], [&quot;&#39;16/02/12 00:16:13 INFO storage.BlockManagerMasterEndpoint: Registering block manager 172.17.0.11:60332 with 517.4 MB RAM, BlockManagerId(driver, 172.17.0.11, 60332)&#39;&quot;, 971477], [&quot;&#39;\\r\\n&#39;&quot;, 971477], [&quot;&#39;16/02/12 00:16:13 INFO storage.BlockManagerMaster: Registered BlockManager&#39;&quot;, 971483], [&quot;&#39;\\r\\n&#39;&quot;, 971483], [&quot;&#39;16/02/12 00:16:23 INFO cluster.YarnClientSchedulerBackend: Registered executor NettyRpcEndpointRef(null) (f4491d85c28c:57567) with ID 1&#39;&quot;, 982275], [&quot;&#39;\\r\\n&#39;&quot;, 982275], [&quot;&#39;16/02/12 00:16:24 INFO storage.BlockManagerMasterEndpoint: Registering block manager f4491d85c28c:39979 with 517.4 MB RAM, BlockManagerId(1, f4491d85c28c, 39979)&#39;&quot;, 982877], [&quot;&#39;\\r\\n&#39;&quot;, 982877], [&quot;&#39;16/02/12 00:16:25 INFO cluster.YarnClientSchedulerBackend: Registered executor NettyRpcEndpointRef(null) (f4491d85c28c:57568) with ID 2&#39;&quot;, 983447], [&quot;&#39;\\r\\n&#39;&quot;, 983447], [&quot;&#39;16/02/12 00:16:25 INFO cluster.YarnClientSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.8&#39;&quot;, 983483], [&quot;&#39;\\r\\n&#39;&quot;, 983484], [&quot;&#39;16/02/12 00:16:25 INFO storage.BlockManagerMasterEndpoint: Registering block manager f4491d85c28c:37614 with 517.4 MB RAM, BlockManagerId(2, f4491d85c28c, 37614)&#39;&quot;, 983588], [&quot;&#39;\\r\\n&#39;&quot;, 983588], [&quot;&#39;16/02/12 00:16:25 INFO spark.SparkContext: Starting job: reduce at SparkPi.scala:36&#39;&quot;, 983952], [&quot;&#39;\\r\\n&#39;&quot;, 983952], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Got job 0 (reduce at SparkPi.scala:36) with 2 output partitions&#39;&quot;, 983978], [&quot;&#39;\\r\\n&#39;&quot;, 983978], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Final stage: ResultStage 0 (reduce at SparkPi.scala:36)&#39;&quot;, 983980], [&quot;&#39;\\r\\n&#39;&quot;, 983980], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Parents of final stage: List()&#39;&quot;, 983981], [&quot;&#39;\\r\\n&#39;&quot;, 983981], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Missing parents: List()&#39;&quot;, 983984], [&quot;&#39;\\r\\n&#39;&quot;, 983984], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Submitting ResultStage 0 (MapPartitionsRDD[1] at map at SparkPi.scala:32), which has no missing parents&#39;&quot;, 984009], [&quot;&#39;\\r\\n&#39;&quot;, 984009], [&quot;&#39;16/02/12 00:16:25 INFO storage.MemoryStore: Block broadcast_0 stored as values in memory (estimated size 1888.0 B, free 1888.0 B)&#39;&quot;, 984233], [&quot;&#39;\\r\\n&#39;&quot;, 984233], [&quot;&#39;16/02/12 00:16:25 INFO storage.MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 1202.0 B, free 3.0 KB)&#39;&quot;, 984251], [&quot;&#39;\\r\\n&#39;&quot;, 984252], [&quot;&#39;16/02/12 00:16:25 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on 172.17.0.11:60332 (size: 1202.0 B, free: 517.4 MB)&#39;&quot;, 984255], [&quot;&#39;\\r\\n&#39;&quot;, 984255], [&quot;&#39;16/02/12 00:16:25 INFO spark.SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:1006&#39;&quot;, 984261], [&quot;&#39;\\r\\n&#39;&quot;, 984261], [&quot;&#39;16/02/12 00:16:25 INFO scheduler.DAGScheduler: Submitting 2 missing tasks from ResultStage 0 (MapPartitionsRDD[1] at map at SparkPi.scala:32)&#39;&quot;, 984267], [&quot;&#39;\\r\\n&#39;&quot;, 984267], [&quot;&#39;16/02/12 00:16:25 INFO cluster.YarnScheduler: Adding task set 0.0 with 2 tasks&#39;&quot;, 984271], [&quot;&#39;\\r\\n&#39;&quot;, 984271], [&quot;&#39;16/02/12 00:16:26 INFO scheduler.TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, f4491d85c28c, partition 0,PROCESS_LOCAL, 2154 bytes)&#39;&quot;, 984467], [&quot;&#39;\\r\\n&#39;&quot;, 984467], [&quot;&#39;16/02/12 00:16:26 INFO scheduler.TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, f4491d85c28c, partition 1,PROCESS_LOCAL, 2154 bytes)&#39;&quot;, 984477], [&quot;&#39;\\r\\n&#39;&quot;, 984477], [&quot;&#39;16/02/12 00:16:30 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on f4491d85c28c:37614 (size: 1202.0 B, free: 517.4 MB)&#39;&quot;, 989063], [&quot;&#39;\\r\\n&#39;&quot;, 989063], [&quot;&#39;16/02/12 00:16:30 INFO storage.BlockManagerInfo: Added broadcast_0_piece0 in memory on f4491d85c28c:39979 (size: 1202.0 B, free: 517.4 MB)&#39;&quot;, 989072], [&quot;&#39;\\r\\n&#39;&quot;, 989073], [&quot;&#39;16/02/12 00:16:31 INFO scheduler.TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 5572 ms on f4491d85c28c (1/2)&#39;&quot;, 989875], [&quot;&#39;\\r\\n&#39;&quot;, 989876], [&quot;&#39;16/02/12 00:16:31 INFO scheduler.TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 5401 ms on f4491d85c28c (2/2)&#39;&quot;, 989877], [&quot;&#39;\\r\\n&#39;&quot;, 989878], [&quot;&#39;16/02/12 00:16:31 INFO cluster.YarnScheduler: Removed TaskSet 0.0, whose tasks have all completed, from pool &#39;&quot;, 989880], [&quot;&#39;\\r\\n&#39;&quot;, 989880], [&quot;&#39;16/02/12 00:16:31 INFO scheduler.DAGScheduler: ResultStage 0 (reduce at SparkPi.scala:36) finished in 5.591 s&#39;&quot;, 989882], [&quot;&#39;\\r\\n&#39;&quot;, 989883], [&quot;&#39;16/02/12 00:16:31 INFO scheduler.DAGScheduler: Job 0 finished: reduce at SparkPi.scala:36, took 5.948255 s&#39;&quot;, 989901], [&quot;&#39;\\r\\n&#39;&quot;, 989908], [&quot;&#39;Pi is roughly 3.13724&#39;&quot;, 989918], [&quot;&#39;\\r\\n&#39;&quot;, 989919], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/metrics/json,null}&#39;&quot;, 989947], [&quot;&#39;\\r\\n&#39;&quot;, 989947], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/stage/kill,null}&#39;&quot;, 989948], [&quot;&#39;\\r\\n&#39;&quot;, 989948], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/api,null}&#39;&quot;, 989949], [&quot;&#39;\\r\\n&#39;&quot;, 989949], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/,null}&#39;&quot;, 989950], [&quot;&#39;\\r\\n&#39;&quot;, 989950], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/static,null}&#39;&quot;, 989951], [&quot;&#39;\\r\\n&#39;&quot;, 989951], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/executors/threadDump/json,null}&#39;&quot;, 989952], [&quot;&#39;\\r\\n&#39;&quot;, 989952], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/executors/threadDump,null}&#39;&quot;, 989952], [&quot;&#39;\\r\\n&#39;&quot;, 989953], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/executors/json,null}&#39;&quot;, 989953], [&quot;&#39;\\r\\n&#39;&quot;, 989953], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/executors,null}&#39;&quot;, 989954], [&quot;&#39;\\r\\n&#39;&quot;, 989954], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/environment/json,null}&#39;&quot;, 989955], [&quot;&#39;\\r\\n&#39;&quot;, 989955], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/environment,null}&#39;&quot;, 989955], [&quot;&#39;\\r\\n&#39;&quot;, 989956], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/storage/rdd/json,null}&#39;&quot;, 989956], [&quot;&#39;\\r\\n&#39;&quot;, 989957], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/storage/rdd,null}&#39;&quot;, 989958], [&quot;&#39;\\r\\n&#39;&quot;, 989958], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/storage/json,null}&#39;&quot;, 989958], [&quot;&#39;\\r\\n&#39;&quot;, 989958], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/storage,null}&#39;&quot;, 989959], [&quot;&#39;\\r\\n&#39;&quot;, 989960], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/pool/json,null}&#39;&quot;, 989960], [&quot;&#39;\\r\\n&#39;&quot;, 989961], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/pool,null}&#39;&quot;, 989961], [&quot;&#39;\\r\\n&#39;&quot;, 989962], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/stage/json,null}&#39;&quot;, 989962], [&quot;&#39;\\r\\n&#39;&quot;, 989963], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/stage,null}&#39;&quot;, 989963], [&quot;&#39;\\r\\n&#39;&quot;, 989964], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages/json,null}&#39;&quot;, 989964], [&quot;&#39;\\r\\n&#39;&quot;, 989965], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/stages,null}&#39;&quot;, 989966], [&quot;&#39;\\r\\n&#39;&quot;, 989967], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/jobs/job/json,null}&#39;&quot;, 989968], [&quot;&#39;\\r\\n&#39;&quot;, 989968], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/jobs/job,null}&#39;&quot;, 989968], [&quot;&#39;\\r\\n&#39;&quot;, 989969], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/jobs/json,null}&#39;&quot;, 989970], [&quot;&#39;\\r\\n&#39;&quot;, 989971], [&quot;&#39;16/02/12 00:16:31 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/jobs,null}&#39;&quot;, 989971], [&quot;&#39;\\r\\n&#39;&quot;, 989971], [&quot;&#39;16/02/12 00:16:31 INFO ui.SparkUI: Stopped Spark web UI at http://172.17.0.11:4040&#39;&quot;, 990028], [&quot;&#39;\\r\\n&#39;&quot;, 990030], [&quot;&#39;16/02/12 00:16:31 INFO cluster.YarnClientSchedulerBackend: Interrupting monitor thread&#39;&quot;, 990042], [&quot;&#39;\\r\\n&#39;&quot;, 990042], [&quot;&#39;16/02/12 00:16:31 INFO cluster.YarnClientSchedulerBackend: Shutting down all executors&#39;&quot;, 990043], [&quot;&#39;\\r\\n&#39;&quot;, 990043], [&quot;&#39;16/02/12 00:16:31 INFO cluster.YarnClientSchedulerBackend: Asking each executor to shut down&#39;&quot;, 990044], [&quot;&#39;\\r\\n&#39;&quot;, 990045], [&quot;&#39;16/02/12 00:16:31 INFO cluster.YarnClientSchedulerBackend: Stopped&#39;&quot;, 990082], [&quot;&#39;\\r\\n&#39;&quot;, 990082], [&quot;&#39;16/02/12 00:16:31 INFO spark.MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!&#39;&quot;, 990123], [&quot;&#39;\\r\\n&#39;&quot;, 990123], [&quot;&#39;16/02/12 00:16:31 INFO storage.MemoryStore: MemoryStore cleared&#39;&quot;, 990176], [&quot;&#39;\\r\\n&#39;&quot;, 990182], [&quot;&#39;16/02/12 00:16:31 INFO storage.BlockManager: BlockManager stopped&#39;&quot;, 990201], [&quot;&#39;\\r\\n&#39;&quot;, 990203], [&quot;&#39;16/02/12 00:16:31 INFO storage.BlockManagerMaster: BlockManagerMaster stopped&#39;&quot;, 990262], [&quot;&#39;\\r\\n&#39;&quot;, 990262], [&quot;&#39;16/02/12 00:16:31 INFO scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!&#39;&quot;, 990274], [&quot;&#39;\\r\\n&#39;&quot;, 990274], [&quot;&#39;16/02/12 00:16:31 INFO spark.SparkContext: Successfully stopped SparkContext&#39;&quot;, 990285], [&quot;&#39;\\r\\n&#39;&quot;, 990286], [&quot;&#39;16/02/12 00:16:31 INFO remote.RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.&#39;&quot;, 990303], [&quot;&#39;\\r\\n&#39;&quot;, 990304], [&quot;&#39;16/02/12 00:16:31 INFO util.ShutdownHookManager: Shutdown hook called&#39;&quot;, 990309], [&quot;&#39;\\r\\n&#39;&quot;, 990312], [&quot;&#39;16/02/12 00:16:31 INFO remote.RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.&#39;&quot;, 990313], [&quot;&#39;\\r\\n&#39;&quot;, 990313], [&quot;&#39;16/02/12 00:16:31 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-78ffcfea-37b3-4b14-ad03-33a2cd86705a&#39;&quot;, 990324], [&quot;&#39;\\r\\n&#39;&quot;, 990324], [&quot;&#39;16/02/12 00:16:32 INFO util.ShutdownHookManager: Deleting directory /tmp/spark-78ffcfea-37b3-4b14-ad03-33a2cd86705a/httpd-aad710b9-3ebf-4e97-b478-fb765471f028&#39;&quot;, 990372], [&quot;&#39;\\r\\n&#39;&quot;, 990374], [&quot;&#39;bash-4.1# &#39;&quot;, 990740], [&quot;&#39;\\r\\n&#39;&quot;, 990741], [&quot;&#39;bash-4.1# &#39;&quot;, 990745], [&quot;&#39;e&#39;&quot;, 1000279], [&quot;&#39;x&#39;&quot;, 1000447], [&quot;&#39;i&#39;&quot;, 1000759], [&quot;&#39;t&#39;&quot;, 1000847], [&quot;&#39;\\r\\n&#39;&quot;, 1001054], [&quot;&#39;exit\\r\\n&#39;&quot;, 1001060], [&quot;&#39;\\x1b[1m\\x1b[7m%\\x1b[27m\\x1b[1m\\x1b[0m                                                                                                                                                                                  \\r \\r&#39;&quot;, 1001227], [&quot;&#39;\\x1b]2;dongmingang@dongmin-ui-MacBook-Pro: ~\\x07\\x1b]1;~\\x07&#39;&quot;, 1001228], [&quot;&#39;\\r\\x1b[0m\\x1b[27m\\x1b[24m\\x1b[J\\x1b[32mdongmingang\\x1b[00m@\\x1b[36mdongmin-ui-MacBook-Pro\\x1b[00m:\\x1b[35m~ \\x1b[31m\\xbb\\x1b[00m &#39;&quot;, 1001259], [&quot;&#39;\\x1b[K&#39;&quot;, 1001260], [&quot;&#39;\\x1b[?1h\\x1b=&#39;&quot;, 1001260], [&quot;&#39;e&#39;&quot;, 1001759], [&quot;&#39;\\x08ex&#39;&quot;, 1001926], [&quot;&#39;i&#39;&quot;, 1002118], [&quot;&#39;t&#39;&quot;, 1002198], [&quot;&#39;\\x1b[?1l\\x1b&gt;&#39;&quot;, 1002486], [&quot;&#39;\\r\\r\\n&#39;&quot;, 1002486], [&quot;&#39;\\x1b]2;exit\\x07&#39;&quot;, 1002499], [&quot;&#39;\\x1b]1;exit\\x07&#39;&quot;, 1002499]];
            var toggle = true;
            var totalTime = 0;
            var TICK = 33;
            var TIMESTEP = 33;
            var time = 33;
            var pos = 0;
            var timer;

            // Thanks http://stackoverflow.com/a/2998822
            function zeroPad(num, size) {
                var s = &quot;0&quot; + num;
                return s.substr(s.length-size);
            }

            function scrub() {
               setPercent = document.getElementById(&#39;scrubber&#39;).value;
               time = (setPercent / 100) * totalTime;
               restart(time); 
            }

            function buildTimeString(millis) {
                hours   = zeroPad(Math.floor(millis / (1000 * 60 * 60)), 2);
                millis -= hours * (1000 * 60 * 60)
                minutes = zeroPad(Math.floor(millis / (1000 * 60)), 2);
                millis -= minutes * (1000 * 60);
                seconds = zeroPad(Math.floor(millis / 1000), 2);
                return hours + &#39;:&#39; + minutes + &#39;:&#39; + seconds;
            }

            function advance() {
                document.getElementById(&#39;scrubber&#39;).value =
                                           Math.ceil((time / totalTime) * 100);
                timestr = buildTimeString(time);
                document.getElementById(&quot;beforeScrubberText&quot;).innerHTML = 
                                                                       timestr;
                for (; pos &lt; data.length; pos++) {
                    if (data[pos][1] &lt;= time) {
                        term.write(eval(data[pos][0]));
                    } else {
                        break;
                    }
                }

                if (pos &gt;= data.length) {
                    clearInterval(timer);
                }

                time += TIMESTEP;
            }

            function pause(test) {
                if (!toggle &amp;&amp; test) {
                    return;
                }
                if (toggle) {
                    clearInterval(timer);
                    toggle = !toggle;
                } else {
                   timer = setInterval(advance, TICK);
                   toggle = !toggle; 
                }
            }

            function setSpeed() {
                speed = document.getElementById(&#39;speed&#39;).value;
                if (speed == 0) {
                    TIMESTEP = TICK;
                } else if (speed &lt; 0) {
                    TIMESTEP = TICK / -speed;
                } else {
                    TIMESTEP = TICK * speed;
                }
            }

            function restart(millis) {
                    clearInterval(timer);
                    term.reset();
                    time = millis;
                    pos = 0;
                    toggle = true;
                    timer = setInterval(advance, TICK);
            }

            var term = new Terminal({
                                        cols: 179,
                                        rows: 40,
                                        screenKeys: true
                                    });
            totalTime = data[data.length - 1][1];
            timestr = buildTimeString(totalTime);
            document.getElementById(&quot;afterScrubberText&quot;).innerHTML = timestr;
            term.open(document.body);
            timer = setInterval(advance, TICK);
            &lt;/script&gt;
        &lt;/body&gt;
    &lt;/html&gt;</description>
        <pubDate>Fri, 12 Feb 2016 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2016/02/12/hadoop-basic/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2016/02/12/hadoop-basic/</guid>
        
        
      </item>
    
      <item>
        <title>django-start</title>
        <description>&lt;h1&gt;Commands&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Virtual Environment로 시작하기
&lt;code&gt;
mkdir ~/Work/new_project
cd ~/Work/new_project
$ virtualenv venv
$ source venv/bin/activate
&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Sat, 11 Jul 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/07/11/django-start/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/07/11/django-start/</guid>
        
        
      </item>
    
      <item>
        <title>load_testing</title>
        <description>&lt;h1&gt;Load Testing Tools&lt;/h1&gt;

&lt;h2&gt;Grinder&lt;/h2&gt;

&lt;h3&gt;Key Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;TCP proxy - records network activity into the Grinder test script&lt;/li&gt;
&lt;li&gt;Distributed testing - can scale with the increasing number of agent instances&lt;/li&gt;
&lt;li&gt;Power of Python or Closure combined with any Java API for test script creation or modification&lt;/li&gt;
&lt;li&gt;Flexible parameterization which includes creating test data on-the-fly and the capability to use external data sources like files, databases, etc.&lt;/li&gt;
&lt;li&gt;Post processing and assertion - full access to test results for correlation and content verification&lt;/li&gt;
&lt;li&gt;Support of multiple protocols&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Gatling&lt;/h2&gt;

&lt;h3&gt;Key Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTTP Recorder&lt;/li&gt;
&lt;li&gt;An expressive self-explanatory DSL for test development&lt;/li&gt;
&lt;li&gt;Scala-based&lt;/li&gt;
&lt;li&gt;Produces higher load by using an asynchronous non-blocking approach&lt;/li&gt;
&lt;li&gt;Full support of HTTP(S) protocols &amp;amp; can also be used for JDBC and JMS load testing&lt;/li&gt;
&lt;li&gt;Multiple input sources for data-driven tests&lt;/li&gt;
&lt;li&gt;Powerful and flexible validation and assertions system&lt;/li&gt;
&lt;li&gt;Comprehensive informative load reports&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Tsung&lt;/h2&gt;

&lt;h3&gt;Key Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Distributed by design&lt;/li&gt;
&lt;li&gt;High performance. Underlying multithreaded-oriented Erlang architecture enables the simulation of thousands of virtual users on mid-end developer machines&lt;/li&gt;
&lt;li&gt;Support of multiple protocols&lt;/li&gt;
&lt;li&gt;A test recorder which supports HTTP and Postgres&lt;/li&gt;
&lt;li&gt;OS monitoring. Both the load generator and application under the test operating system metrics can be collected via several protocols&lt;/li&gt;
&lt;li&gt;Dynamic scenarios and mixed behaviours. The flexible load scenarios definition mechanism allows for any number of load patterns to be combined in a single test&lt;/li&gt;
&lt;li&gt;Post processing and correlation&lt;/li&gt;
&lt;li&gt;External data sources for data driven testing&lt;/li&gt;
&lt;li&gt;Embedded easy-readable load reports which can be collected and visualized during load&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;JMeter&lt;/h2&gt;

&lt;h3&gt;Key Features&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cross-platform. JMeter can be run on any operating system with Java&lt;/li&gt;
&lt;li&gt;Scalable. When you need to create a higher load than a single machine can create, JMeter can be executed in a distributed mode - meaning one master JMeter machine will control a number of remote hosts.&lt;/li&gt;
&lt;li&gt;Multi-protocol support. The following protocols are all supported ‘out-of-the-box’: HTTP, SMTP, POP3, LDAP, JDBC, FTP, JMS, SOAP, TCP&lt;/li&gt;
&lt;li&gt;Multiple implementations of pre and post processors around sampler. This provides advanced setup, teardown parametrization and correlation capabilities&lt;/li&gt;
&lt;li&gt;Various assertions to define criteria&lt;/li&gt;
&lt;li&gt;Multiple built-in and external listeners to visualize and analyze performance test results&lt;/li&gt;
&lt;li&gt;Integration with major build and continuous integration systems - making JMeter performance tests part of the full software development life cycle&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 10 Jul 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/07/10/load_testing/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/07/10/load_testing/</guid>
        
        
      </item>
    
      <item>
        <title>Writing Plan</title>
        <description>&lt;h1&gt;Fullstack Development with Python&lt;/h1&gt;

&lt;h2&gt;Infra&lt;/h2&gt;

&lt;h3&gt;Vagrant&lt;/h3&gt;

&lt;h3&gt;Docker&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Command&lt;/li&gt;
&lt;li&gt;Container Management&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Network&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Netfilter&lt;/li&gt;
&lt;li&gt;DNS&lt;/li&gt;
&lt;li&gt;NAT&lt;/li&gt;
&lt;li&gt;DHCP&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Protocol&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TCP&lt;/li&gt;
&lt;li&gt;UDP&lt;/li&gt;
&lt;li&gt;HTTP&lt;/li&gt;
&lt;li&gt;SPDY&lt;/li&gt;
&lt;li&gt;HTTP2&lt;/li&gt;
&lt;li&gt;SSL&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Proxy&lt;/h2&gt;

&lt;h3&gt;Load Balancer&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HA Proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Reverse Proxy&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Squid&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Varnish&lt;/li&gt;
&lt;li&gt;ATS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;HA&lt;/h2&gt;

&lt;h2&gt;WebServer&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Apache&lt;/li&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;li&gt;Lighthttpd&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;WSGI Server&lt;/h2&gt;

&lt;h2&gt;WAS&lt;/h2&gt;

&lt;h3&gt;Django&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ORM&lt;/li&gt;
&lt;li&gt;Admin&lt;/li&gt;
&lt;li&gt;RestFramework&lt;/li&gt;
&lt;li&gt;OAuth&lt;/li&gt;
&lt;li&gt;JWT&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Flask&lt;/h3&gt;

&lt;h2&gt;Async Programming&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;gevent&lt;/li&gt;
&lt;li&gt;twisted&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Task Queue&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;celery&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;WebSocket&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;authbahn&lt;/li&gt;
&lt;li&gt;async.io&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;DB&lt;/h2&gt;

&lt;h3&gt;RDB&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;NoSQL&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Memcached&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;Cassandra&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Front-End&lt;/h2&gt;

&lt;h3&gt;Framework&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;jQuery&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Foundation&lt;/li&gt;
&lt;li&gt;AngularJS&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Polymer&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Chart&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;D3&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Graphics&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;opencv&lt;/li&gt;
&lt;li&gt;imagemagick&lt;/li&gt;
&lt;li&gt;html5 canvas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Hybrid App&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ionic&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Logging&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Logger&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Crash Logging&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Pin Point&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Monitoring&lt;/h2&gt;

&lt;h3&gt;Performance Monitoring&lt;/h3&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;h3&gt;Unit Testing&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Unittest&lt;/li&gt;
&lt;li&gt;Nosetest&lt;/li&gt;
&lt;li&gt;BDD?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;UI Testing&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Selenium&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Performance&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;YSlow&lt;/li&gt;
&lt;li&gt;PageSpeed&lt;/li&gt;
&lt;li&gt;How to caching&lt;/li&gt;
&lt;li&gt;Optimization&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Build &amp;amp; Deployment&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;buildout&lt;/li&gt;
&lt;li&gt;Grunt&lt;/li&gt;
&lt;li&gt;Bower&lt;/li&gt;
&lt;li&gt;Django Pipeline&lt;/li&gt;
&lt;li&gt;Fabric&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Configuration Management&lt;/h2&gt;

&lt;h3&gt;Puppet&lt;/h3&gt;

&lt;h3&gt;Chef&lt;/h3&gt;

&lt;h3&gt;SaltStack&lt;/h3&gt;

&lt;h3&gt;Ansible&lt;/h3&gt;

&lt;h2&gt;Continuous Integration&lt;/h2&gt;

&lt;h2&gt;Debugging&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GDB&lt;/li&gt;
&lt;li&gt;PDB&lt;/li&gt;
&lt;li&gt;Strace&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Documentation&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sphinx&lt;/li&gt;
&lt;li&gt;docstring&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 03 Jul 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/07/03/writing_plan/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/07/03/writing_plan/</guid>
        
        
      </item>
    
      <item>
        <title>Welcome to Jekyll!</title>
        <description>&lt;p&gt;You’ll find this post in your &lt;code&gt;_posts&lt;/code&gt; directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run &lt;code&gt;jekyll serve&lt;/code&gt;, which launches a web server and auto-regenerates your site when a file is updated.&lt;/p&gt;

&lt;p&gt;To add new posts, simply add a file in the &lt;code&gt;_posts&lt;/code&gt; directory that follows the convention &lt;code&gt;YYYY-MM-DD-name-of-post.ext&lt;/code&gt; and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.&lt;/p&gt;

&lt;p&gt;Jekyll also offers powerful support for code snippets:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Hi, &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;print_hi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&#39;Tom&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;#=&amp;gt; prints &#39;Hi, Tom&#39; to STDOUT.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Check out the &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll docs&lt;/a&gt; for more info on how to get the most out of Jekyll. File all bugs/feature requests at &lt;a href=&quot;https://github.com/jekyll/jekyll&quot;&gt;Jekyll’s GitHub repo&lt;/a&gt;. If you have questions, you can ask them on &lt;a href=&quot;https://github.com/jekyll/jekyll-help&quot;&gt;Jekyll’s dedicated Help repository&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Mon, 29 Jun 2015 09:52:30 +0000</pubDate>
        <link>http://bootinge.github.io/jekyll/update/2015/06/29/welcome-to-jekyll/</link>
        <guid isPermaLink="true">http://bootinge.github.io/jekyll/update/2015/06/29/welcome-to-jekyll/</guid>
        
        
        <category>jekyll</category>
        
        <category>update</category>
        
      </item>
    
      <item>
        <title>Automated Testing with Selenium</title>
        <description>&lt;hr&gt;

&lt;h1&gt;UI Testing&lt;/h1&gt;

&lt;h2&gt;Selenium&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Selenium automates browsers!!!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Features&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;navigate (windows, frames, links)&lt;/li&gt;
&lt;li&gt;find elements and parse attributes&lt;/li&gt;
&lt;li&gt;interact and trigger events (click, type, ...)&lt;/li&gt;
&lt;li&gt;capture screenshots&lt;/li&gt;
&lt;li&gt;run javascript&lt;/li&gt;
&lt;li&gt;let the browser take care of the hard stuff(cookies, javascript, sessions, profiles, DOM)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Parts of Selenium&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Selenium Webdriver&lt;/li&gt;
&lt;li&gt;Selenium IDE&lt;/li&gt;
&lt;li&gt;Selenium Server&lt;/li&gt;
&lt;li&gt;Selenium-Grid&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Commands&lt;/h2&gt;

&lt;h3&gt;find&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;find_element_by_id&lt;/li&gt;
&lt;li&gt;find_element_by_name&lt;/li&gt;
&lt;li&gt;find_element_by_xpath&lt;/li&gt;
&lt;li&gt;find_element_by_link_text&lt;/li&gt;
&lt;li&gt;find_element_by_partial_link_text&lt;/li&gt;
&lt;li&gt;find_element_by_tag_name&lt;/li&gt;
&lt;li&gt;find_element_by_class_name&lt;/li&gt;
&lt;li&gt;find_element_by_css_selector&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;def login_field(self):
    return self.wait.until(EC.element_to_be_clickable((By.NAME, &#39;Login&#39;)))

def password_field(self):
    return self.wait.until(EC.element_to_be_clickable((By.NAME, &#39;Password&#39;)))

def login_button(self):
    return self.wait.until(EC.element_to_be_clickable((By.XPATH, &quot;//button[@type=&#39;submit&#39;]&quot;)))

def error_message(self):
    return self.wait.until(EC.element_to_be_clickable((By.XPATH, &quot;//div[@class=&#39;error-text&#39;]&quot;)))

def login_username(self):
    return self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, &quot;username&quot;)))

def logout_button(self):
    return self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, &quot;logout&quot;)))

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;interact&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;def login(self, name, password):
    self.login_field().send_keys(name)
    self.password_field().send_keys(password)
    self.login_button().click()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Actions&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;actions = ActionChains(driver)
test_plan = wait.until(EC.presence_of_element_located((By.XPATH, &quot;.//ul/li[1]&quot;))) actions.move_to_element(test_plan)
actions.click(test_plan)
actions.perform()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Asserts&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;assertEqual(a, b)&lt;/li&gt;
&lt;li&gt;assertNotEqual(a, b)&lt;/li&gt;
&lt;li&gt;assertTrue(x)&lt;/li&gt;
&lt;li&gt;assertFalse(x)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;General Recipe&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install requirements
&lt;code&gt;
$ pip install selenium pyvirtualdisplay
&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Start up Firefox and Selenium IDE or You can create a test code in your editor.&lt;/li&gt;
&lt;li&gt;Record a &amp;#39;test&amp;#39; run through site.&lt;/li&gt;
&lt;li&gt;Export test as python script&lt;/li&gt;
&lt;li&gt;Hack from there

&lt;ul&gt;
&lt;li&gt;Loops&lt;/li&gt;
&lt;li&gt;Image/data extraction&lt;/li&gt;
&lt;li&gt;Wrangling data into a database&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Running Selenium Server&lt;/h2&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ java -jar selenium-server-standalone-2.x.x.jar
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Selenium Script Example&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://selenium-python.readthedocs.org/en/latest/getting-started.html&quot;&gt;http://selenium-python.readthedocs.org/en/latest/getting-started.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_search_in_python_org(self):
        driver = self.driver
        driver.get(&quot;http://www.python.org&quot;)
        self.assertIn(&quot;Python&quot;, driver.title)
        elem = driver.find_element_by_name(&quot;q&quot;)
        elem.send_keys(&quot;pycon&quot;)
        elem.send_keys(Keys.RETURN)
        assert &quot;No results found.&quot; not in driver.page_source


    def tearDown(self):
        self.driver.close()

if __name__ == &quot;__main__&quot;:
    unittest.main()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
        <pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/06/29/selenium/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/06/29/selenium/</guid>
        
        
      </item>
    
      <item>
        <title>Openstack Horizon</title>
        <description>&lt;h1&gt;horizon&lt;/h1&gt;

&lt;h2&gt;프로젝트 구성&lt;/h2&gt;

&lt;h3&gt;의존성&lt;/h3&gt;

&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Depencencies&lt;/th&gt;
&lt;th style=&quot;text-align: center&quot;&gt;설명&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;pbr&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;injects some useful and sensible default behaviors into your setuptools run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Babel&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Babel is an internationalization library for Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Web Framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pint&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Python package to define, operate and manipulate physical quantities&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;django_compressor&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;static 파일 compressor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;django_openstack_auth&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;openstack auth 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;django-pyscss&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;django scss(stylesheet) 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;eventlet&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;비동기 I/O 프로그래밍 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;httplib2&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;http 통신 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iso8601&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;날짜 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kombu&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Kombu is a messaging library for Python.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;netaddr&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;네트워크 주소 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oslo.*&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;OpenStack 관련 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pyScss&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;compiler for the Sass language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pytz&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;WorldWide Timezone 모듈&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyYAML&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;YAML implementations for Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;six&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Python 2 and 3 compatibility library&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;tatic file packages with minimal overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Angular&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Angular-Bootstrap&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Angular-lrdragndrop&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;A drag and drop module for angularjs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Bootstrap-Datepicker&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Bootstrap-SCSS&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-D3&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Graphics Library&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Hogan&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Twitter related Library.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Font-Awesome&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Jasmine&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;BDD Framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-jQuery&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-JQuery-Migrate&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-JQuery.quicksearch&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;A jQuery based plug-in for filtering large data sets with user input&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-JQuery.TableSorter&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Flexible client-side table sorting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-jquery-ui&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-JSEncrypt&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;RSA Encrypt/Decrypt Library&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Magic-Search&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;AngularJS directive that provides a UI for both faceted filtering and as-you-type filtering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-QUnit&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Javascript Unit Test Framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Rickshaw&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;JavaScript toolkit for creating interactive time-series graphs and charts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-smart-table&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;Smart table is a table module for angular js&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-Spin&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XStatic-term.js&lt;/td&gt;
&lt;td style=&quot;text-align: center&quot;&gt;A terminal written in javascript.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;h3&gt;파일 설명&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;manifest.in : Specifying the files to distribute.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;디렉토리 구조&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;.
├── doc                               # Sphinx Documentation
├── horizon                           # Django Base Path
│   ├── browsers                  # Resource Browser(?)
│   ├── conf
│   │   ├── dash_template
│   │   └── panel_template
│   ├── contrib                       # 국제 시간 관련 유틸.
│   ├── forms                     # From Controller
│   ├── locale                        # 국제화.
│   ├── management                    # manage.py에 관리 명령을 추가
│   │   └── commands              # startdash, startpanel 명령 정의 클래스.
│   ├── static                        # Static Files
│   ├── tables
│   ├── tabs
│   ├── templates                 # View Files
│   ├── templatetags              # Filters for template
│   ├── test                      # Test Cases
│   ├── utils
│   └── workflows             # A Workflow is a collection of Steps.
├── openstack_dashboard               # App Folder
│   ├── api               # Rest API와 관련된 폴더.
│   │   └── rest          # API의 Controller에 해당하는 부분.
│   ├── conf
│   ├── dashboards        # 각 구성요소에 대한 대시보드 부분.
│   │   ├── admin
│   │   ├── identity
│   │   ├── project       # 프로젝트에 대한 대시보드(Model, View, Controller)
│   │   ├── router
│   │   └── settings
│   ├── django_pyscss_fix
│   ├── enabled
│   ├── local
│   │   └── enabled
│   ├── locale                        # 국제화
│   ├── management        # manage.py에 관리 명령을 추가
│   │   └── commands      # nginx, apache, wsgi 관련 명령도 추가.
│   ├── openstack         # 공통 유틸리티들.
│   │   └── common
│   ├── static                        # Static Files
│   ├── templates
│   ├── templatetags          # Filters for template
│   ├── test                        # Test Cases
│   ├── usage             # 사용량에 대한 View를 제공.
│   ├── utils
│   └── wsgi
└── tools                         # Virtual Envronment 구성 툴.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
        <pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/06/29/openstack-horizon/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/06/29/openstack-horizon/</guid>
        
        
      </item>
    
      <item>
        <title>How to use fabric.</title>
        <description>&lt;hr&gt;

&lt;h1&gt;배포&lt;/h1&gt;

&lt;h2&gt;Fabrid&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Command-Line Tool&lt;/li&gt;
&lt;li&gt;Streaming the use of SSH for application deployment or systems administration tasks.&lt;/li&gt;
&lt;li&gt;Less codes than shell script&lt;/li&gt;
&lt;li&gt;Less mistakes than handwork&lt;/li&gt;
&lt;li&gt;Less time to operate many servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Basics&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install&lt;br&gt;
&lt;code&gt;&lt;br&gt;
$ pip install fabric&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setting(Make fabfile.py)&lt;br&gt;
&lt;code&gt;&lt;br&gt;
def hello(who=&amp;quot;world&amp;quot;):&lt;br&gt;
print &amp;quot;Hello {who}!&amp;quot;.format(who=who)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run&lt;br&gt;
&lt;code&gt;&lt;br&gt;
$ fab hello:who=Fab&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Running a command on remote hosts&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Setting(Make fabfile.py)&lt;br&gt;
&lt;code&gt;&lt;br&gt;
from fabric.api import *&lt;br&gt;
env.hosts=[&amp;quot;irteam@10.77.0.1&amp;quot;, &amp;quot;10.77.0.2&amp;quot;]&lt;br&gt;
env.user=&amp;quot;irteam&amp;quot;&lt;br&gt;
env.password=&amp;quot;password&amp;quot;&lt;br&gt;
env.parallel=True&lt;br&gt;
def hostname_check():&lt;br&gt;
    run(&amp;quot;hostname&amp;quot;)&lt;br&gt;
def command(cmd):&lt;br&gt;
    run(cmd)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run&lt;br&gt;
&lt;code&gt;&lt;br&gt;
$ fab hostname_check&lt;br&gt;
$ fab command:date&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Core Functionality&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;local() : Run a command locally&lt;/li&gt;
&lt;li&gt;run() : Run a command remotely&lt;/li&gt;
&lt;li&gt;sudo() : Run a command remotely as another user&lt;/li&gt;
&lt;li&gt;put() : Copy a file from local to remote&lt;/li&gt;
&lt;li&gt;get() : Copy a file from remote to local&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Problems&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tailing log file (tail -f /var/log/messages) is difficult.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Fabrid SSH 설정&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SSH 키를 사용해서 로그인한다면, SSH 키가 기본 위치에 있고, 서버와 동일 사용자명을 사용하는 한 Fabrid이 정상 동작해야 한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Examples&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/duointeractive/django-fabtastic/blob/master/examples/fabfile.py&quot;&gt;django-fabrid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/gcollazo/495372&quot;&gt;https://gist.github.com/gcollazo/495372&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/06/29/fabric-usage/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/06/29/fabric-usage/</guid>
        
        
      </item>
    
      <item>
        <title>Django Registration and authentication</title>
        <description>&lt;hr&gt;

&lt;h1&gt;Django Registration 구현&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Django에서 Registraion을 구현하는 방법을 설명&lt;/li&gt;
&lt;li&gt;기본적인 회원 등록, E-mail Verification, 로그인 기능들을 제공함.

&lt;ul&gt;
&lt;li&gt;Django Allauth 모듈을 사용함&lt;/li&gt;
&lt;li&gt;AllAuth에서는 Facebook, Google 등 다양한 서비스에 대한  OAuth 로그인을 제공함.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;JWT(JSon Web Token) 기반의 인증 처리.

&lt;ul&gt;
&lt;li&gt;django-rest-framework-jwt 사용.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Registration Form 만들기&lt;/h1&gt;

&lt;h2&gt;Django Allauth 설치&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;폴더 내부에 example이 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ git clone git://github.com/pennersr/django-allauth.git
$ cd django-allauth/example
$ virtualenv venv
$ . venv/bin/activate
$ pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;DB 생성하기&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ python manage.py syncdb
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;URL 설정하기&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Allauth에서 사용하는 URL을 설정.&lt;/li&gt;
&lt;li&gt;example/urls.py에 설정.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;urlpatterns = patterns(&#39;&#39;,
                       (r&#39;^accounts/&#39;, include(&#39;allauth.urls&#39;)),
                       ...
)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;SMTP 서버 테스트하기&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Registration 과정 중에 E-mail Verification이 있음.&lt;/li&gt;
&lt;li&gt;Python의 기본 모듈을 통해서 임의의 SMTP 서버를 띄울 수 있음.

&lt;ul&gt;
&lt;li&gt;아래 명령어는 1025번 포트로 smtp 서버를 띄움&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ python -m smtpd -n -c DebuggingServer localhost:1025
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;settings.py에서 localhost, 1025번 포트로 설정을 변경하고 테스트.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;EMAIL_HOST=&#39;localhost&#39;
EMAIL_PORT=1025
EMAIL_HOST_USER=&#39;&#39;
EMAIL_HOST_PASSWORD=&#39;&#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Real SMTP 서버 설정하기&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;사용자가 회원 가입한 e-mail verification 서버 변경.&lt;/li&gt;
&lt;li&gt;SMTP 서버 정보를 변경해야 함.&lt;/li&gt;
&lt;li&gt;example/settings.py 내부 설정 변경
.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ pip install django-smtp-ssl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;사용할 SMTP 서버 정보 설정.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;EMAIL_BACKEND = &#39;django_smtp_ssl.SSLEmailBackend&#39;
EMAIL_USE_TLS = True
EMAIL_HOST = &#39;smtp.daum.net&#39;
EMAIL_PORT = 465
EMAIL_HOST_USER = &#39;ADMIN_ID&#39;
EMAIL_HOST_PASSWORD = &#39;ADMIN_PASSWORD&#39;
DEFAULT_FROM_EMAIL = &#39;Verified-email &amp;lt;admin@localhost&amp;gt;&#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;SSL을 사용하는 SMTP 서버는 django.core.mail.backends.smtp.EmailBackend를 사용하면 동작하지 않았음.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;실행하기&lt;/h2&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;여기까지 진행하면, 기본적인 회원 Registration, Login은 가능함.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr&gt;

&lt;h1&gt;JWT(JSON Web Token) 설정&lt;/h1&gt;

&lt;h2&gt;설치하기&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Django Rest Framework 및 JWT 모듈 설치.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ pip install djangorestframework
$ pip install djangorestframework-jwt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;설정하기&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rest Framework에 대한 설정(settings.py)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;REST_FRAMEWORK = {
    &#39;DEFAULT_PERMISSION_CLASSES&#39;: (
        &#39;rest_framework.permissions.IsAuthenticated&#39;,
    ),
    &#39;DEFAULT_AUTHENTICATION_CLASSES&#39;: (
        &#39;rest_framework.authentication.SessionAuthentication&#39;,
        &#39;rest_framework.authentication.BasicAuthentication&#39;,
        &#39;rest_framework_jwt.authentication.JSONWebTokenAuthentication&#39;,
    ),
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;INSTALLED APPS에 Rest Framework 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;INSTALLED_APPS = (
  ...
  &#39;rest_framework&#39;,
  ...
)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;URL 및 View 설정하기.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = (&#39;url&#39;, &#39;username&#39;, &#39;email&#39;, &#39;is_staff&#39;)

# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r&#39;users&#39;, UserViewSet)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;example/urls.py의 urlpatterns에 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;url(r&#39;^api-auth/&#39;, include(&#39;rest_framework.urls&#39;, namespace=&#39;rest_framework&#39;)),
url(r&#39;^api-token-auth/&#39;, &#39;rest_framework_jwt.views.obtain_jwt_token&#39;),
url(r&#39;^api-token-refresh/&#39;, &#39;rest_framework_jwt.views.refresh_jwt_token&#39;),
url(r&#39;^api-token-verify/&#39;, &#39;rest_framework_jwt.views.verify_jwt_token&#39;),
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;테스트하기&lt;/h2&gt;

&lt;h3&gt;Login.&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;JSON으로 ID와 PW를 전달하면 JSON Web Token를 얻을 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ curl -X POST -H &quot;Content-Type: application/json&quot; -d &#39;{&quot;username&quot;:&quot;admin&quot;,&quot;password&quot;:&quot;admin&quot;}&#39; http://127.0.0.1:8000/api-token-auth/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;실행 결과 얻어진 JSON Web Token&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;token&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwidXNlcl9pZCI6MSwiZW1haWwiOiJhZG1pbkBuYXZlci5jb20iLCJleHAiOjE0MzU1MDY3NzF9.dsqiJDuJPCifRm0wt3qCdgQnuZSZYvIDeZQmCH62D1A&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Token Verification&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;얻은 JWT가 유효한지를 체크.

&lt;ul&gt;
&lt;li&gt;정상적으로 호출됐으면 호출한 Token을 반환함.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ curl -X POST -H &quot;Content-Type: application/json&quot; -d &#39;{&quot;token&quot;:&quot;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwidXNlcl9pZCI6MSwiZW1haWwiOiJhZG1pbkBuYXZlci5jb20iLCJleHAiOjE0MzU1MDY3NzF9.dsqiJDuJPCifRm0wt3qCdgQnuZSZYvIDeZQmCH62D1A&quot;}&#39; http://127.0.0.1:8000/api-token-verify/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;접근 제한된 URL 추가하기.&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;example/demo/views.py에 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated

from rest_framework_jwt.authentication import JSONWebTokenAuthentication

class RestrictedView(APIView):
    permission_classes = (IsAuthenticated, )
    authentication_classes = (JSONWebTokenAuthentication, )

    def get(self, request):
        data = {
            &#39;id&#39;: request.user.id,
            &#39;username&#39;: request.user.username,
            &#39;token&#39;: str(request.auth)
        }
        return Response(data)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;example/urls.py의 urlpatterns에 추가.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;from example.demo.views import RestrictedView
...
urlpatterns = patterns(&#39;&#39;,
  ...
  url(r&#39;^restricted/$&#39;, RestrictedView.as_view()),
  ...
)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;테스트하기&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;$ curl -H &quot;Authorization: JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwidXNlcl9pZCI6MSwiZW1haWwiOiJhZG1pbkBuYXZlci5jb20iLCJleHAiOjE0MzU1MDgwNjJ9.Zd9MSdA41HYJTAjW7JEMsK3TUv5EYXAj5X0S1IdKwFY&quot; http://127.0.0.1:8000/restricted/

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;hr&gt;

&lt;h1&gt;참고&lt;/h1&gt;

&lt;h2&gt;Django-Rest-Auth&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://django-rest-auth.readthedocs.org/en/latest/installation.html&quot;&gt;사이트&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Django에 Rest Framework와 Auth를 연동시켜둔 모듈&lt;/li&gt;
&lt;li&gt;Demo Project를 따라해보면, 어떤식으로 페이지를 구성할 수 있을지 알 수 있음.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Django-Rest-Auth with AngularJS&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/Tivix/angular-django-registration-auth&quot;&gt;사이트&lt;/a&gt;&lt;br&gt;
- AngularJS와 Django-Rest-Auth를 결합한 샘플 프로젝트&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;참고 : CORS 오류(Access-Control-Allow-Origin) 발생시.&lt;br&gt;
- settings.py에 추가&lt;br&gt;
&lt;code&gt;&lt;br&gt;
CORS_ORIGIN_ALLOW_ALL = True&lt;br&gt;
INSTALLED_APPS = (&lt;br&gt;
  ...&lt;br&gt;
  &amp;#39;corsheaders&amp;#39;,&lt;br&gt;
  ...&lt;br&gt;
)&lt;br&gt;
MIDDLEWARE_CLASSES = (&lt;br&gt;
  ...&lt;br&gt;
  &amp;#39;corsheaders.middleware.CorsMiddleware&amp;#39;,&lt;br&gt;
  ...&lt;br&gt;
)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/06/29/django-registration-and-auth/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/06/29/django-registration-and-auth/</guid>
        
        
      </item>
    
      <item>
        <title>Django Mocking</title>
        <description>&lt;h1&gt;Mocking in Python&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Mocking makes unit testing easier!!!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Great Unit Testing Myths&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;They’re good when the problem is easy.&lt;/li&gt;
&lt;li&gt;I spend too much time writing lots of code to test, so I give up&lt;/li&gt;
&lt;li&gt;There’s just some stuff you can’t unit test.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;What are Mocks?&lt;/h2&gt;

&lt;h3&gt;Test Double&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dummy Object&lt;/li&gt;
&lt;li&gt;Test Stub

&lt;ul&gt;
&lt;li&gt;Provide a canned response to method calls&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Test Spy

&lt;ul&gt;
&lt;li&gt;Real objects that behave like normal except when a specific condition is met&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Mock Object

&lt;ul&gt;
&lt;li&gt;Provide a canned response to method calls&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Fake Object&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Quick Guide&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://mock.readthedocs.org/en/latest/&quot;&gt;http://mock.readthedocs.org/en/latest/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Mock, MagicMock&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Mock&lt;/em&gt; and &lt;em&gt;MagicMock&lt;/em&gt; objects create all attributes and methods as you access them and store details of how they have been used.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; from mock import MagicMock
&amp;gt;&amp;gt;&amp;gt; thing = ProductionClass()
&amp;gt;&amp;gt;&amp;gt; thing.method = MagicMock(return_value=3)
&amp;gt;&amp;gt;&amp;gt; thing.method(3, 4, 5, key=&#39;value&#39;)
3
&amp;gt;&amp;gt;&amp;gt; thing.method.assert_called_with(3, 4, 5, key=&#39;value&#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;side_effect&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;side_effect&lt;/em&gt; allows you to perform side effects, including raising an exception when a mock is called&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; mock = Mock(side_effect=KeyError(&#39;foo&#39;))
&amp;gt;&amp;gt;&amp;gt; mock()
Traceback (most recent call last):
 ...
KeyError: &#39;foo&#39;

&amp;gt;&amp;gt;&amp;gt; values = {&#39;a&#39;: 1, &#39;b&#39;: 2, &#39;c&#39;: 3}
&amp;gt;&amp;gt;&amp;gt; def side_effect(arg):
...     return values[arg]
...
&amp;gt;&amp;gt;&amp;gt; mock.side_effect = side_effect
&amp;gt;&amp;gt;&amp;gt; mock(&#39;a&#39;), mock(&#39;b&#39;), mock(&#39;c&#39;)
(1, 2, 3)
&amp;gt;&amp;gt;&amp;gt; mock.side_effect = [5, 4, 3, 2, 1]
&amp;gt;&amp;gt;&amp;gt; mock(), mock(), mock()
(5, 4, 3)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;patch&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The patch() decorator / context manager makes it easy to mock classes or objects in a module under test.&lt;/li&gt;
&lt;li&gt;The object you specify will be replaced with a mock (or other object) during the test and restored when the test ends&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&amp;gt;&amp;gt;&amp;gt; from mock import patch
&amp;gt;&amp;gt;&amp;gt; @patch(&#39;module.ClassName2&#39;)
... @patch(&#39;module.ClassName1&#39;)
... def test(MockClass1, MockClass2):
...     module.ClassName1()
...     module.ClassName2()

...     assert MockClass1 is module.ClassName1
...     assert MockClass2 is module.ClassName2
...     assert MockClass1.called
...     assert MockClass2.called
...
&amp;gt;&amp;gt;&amp;gt; test()
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;Example - Fear System Calls&lt;/h2&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;TestCase without Mock&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mymodule&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os.path&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;tempfile&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;unittest&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RmTestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;unittest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;

    &lt;span class=&quot;n&quot;&gt;tmpfilepath&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tempfile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;gettempdir&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;tmp-testfile&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;setUp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tmpfilepath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;wb&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;write&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Delete me!&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# remove the file&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tmpfilepath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# test that it was actually removed&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assertFalse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tmpfilepath&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Failed to remove the file.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Testcase with Mock&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mymodule&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mock&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;unittest&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RmTestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;unittest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;

    &lt;span class=&quot;nd&quot;&gt;@mock.patch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mymodule.os&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# test that rm called os.remove with the right parameters&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assert_called_with&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Adding Validation to &amp;#39;rm&amp;#39;&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os.path&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mymodule&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mock&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;unittest&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RmTestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;unittest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;

    &lt;span class=&quot;nd&quot;&gt;@mock.patch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mymodule.os.path&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;nd&quot;&gt;@mock.patch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mymodule.os&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# set up the mock&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;return_value&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;c&quot;&gt;# test that the remove call was NOT called.&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assertFalse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;called&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Failed to not remove the file if not present.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;c&quot;&gt;# make the file &#39;exist&#39;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;return_value&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assert_called_with&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;We now can verify and validate internal functionality of methods without any side-effects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;File-Removal as a Service&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;os.path&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RemovalService&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;object&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;&quot;&quot;A service for removing objects from the filesystem.&quot;&quot;&quot;&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Tetscase for Service&lt;/h3&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-&quot; data-lang=&quot;&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/env python&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# -*- coding: utf-8 -*-&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mymodule&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RemovalService&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;mock&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;unittest&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;RemovalServiceTestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;unittest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;TestCase&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;

    &lt;span class=&quot;nd&quot;&gt;@mock.patch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mymodule.os.path&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;nd&quot;&gt;@mock.patch&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&#39;mymodule.os&#39;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;test_rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;c&quot;&gt;# instantiate our service&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;reference&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;RemovalService&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

        &lt;span class=&quot;c&quot;&gt;# set up the mock&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;return_value&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;reference&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;c&quot;&gt;# test that the remove call was NOT called.&lt;/span&gt;
        &lt;span class=&quot;bp&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assertFalse&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;called&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Failed to not remove the file if not present.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;c&quot;&gt;# make the file &#39;exist&#39;&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;mock_path&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;return_value&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;reference&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;rm&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;mock_os&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;remove&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;assert_called_with&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;any path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h1&gt;테스트시 주의할 점.&lt;/h1&gt;

&lt;h2&gt;시나리오 기반 테스트&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;testscenarios 모듈을 기반으로 한 테스트를 하지 말것.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Edit 2/7/2012: This is a moderately &lt;strong&gt;bad approach to the problem&lt;/strong&gt;. While an interesting hack I highly discourage using this in a production environment. If you want this approach in python I recommend checking out the &lt;strong&gt;lettuce&lt;/strong&gt; project for a much more sane approach.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Cucumber 사용&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Cucumber를 사용할 경우 feature 문서를 변경하면 StepDefinitions 소스 코드까지 수정해야 하기 때문에 유지보수 비용이 좀 발생할 듯하다.&lt;/li&gt;
&lt;li&gt;프로그래머 레벨에서는 cucumber를 사용하지 마라.
&amp;gt; - 많은 프로그래머들이 cucumber를 integration test로 잘못 사용하고 있다.

&lt;ul&gt;
&lt;li&gt;cucumber의 용도는 보다 하이 레벨의 분석툴이며, 이를 acceptance test용으로 사용하기에는 프로그래머 입장에선 불편한 점이 많다.&lt;/li&gt;
&lt;li&gt;당신이 프로그래머라면 cucumber를 integration test로 사용하면서 불편하게 살지 말고, 그럴 바에야 acceptance test 안한다는거 인정하고 Capybara 같은 pure integration test 도구를 사용해라.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 29 Jun 2015 00:00:00 +0000</pubDate>
        <link>http://bootinge.github.io/2015/06/29/django-mocking/</link>
        <guid isPermaLink="true">http://bootinge.github.io/2015/06/29/django-mocking/</guid>
        
        
      </item>
    
  </channel>
</rss>
