<!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" lang="en-US" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" lang="en-US" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
<![endif]-->
<!--[if !(IE 7) & !(IE 8)]><!-->
<html lang="en-US" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://ogp.me/ns/fb#">
<!--<![endif]-->
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="http://columns.chicken-house.net/xmlrpc.php" />
<!--[if lt IE 9]>
<script src="http://columns.chicken-house.net/wp-content/themes/rubbersoul/js/html5.js" type="text/javascript"></script>
<![endif]-->
<title>Andrew&#039;s Blog | .NET, Azure, OOP, C#</title>
<link rel="alternate" type="application/rss+xml" title="Andrew&#039;s Blog &raquo; Feed" href="http://columns.chicken-house.net/?feed=rss2" />
<link rel="alternate" type="application/rss+xml" title="Andrew&#039;s Blog &raquo; Comments Feed" href="http://columns.chicken-house.net/?feed=comments-rss2" />
		<script type="text/javascript">
			window._wpemojiSettings = {"baseUrl":"http:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/columns.chicken-house.net\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.3.1"}};
			!function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
		</script>
		<style type="text/css">
img.wp-smiley,
img.emoji {
	display: inline !important;
	border: none !important;
	box-shadow: none !important;
	height: 1em !important;
	width: 1em !important;
	margin: 0 .07em !important;
	vertical-align: -0.1em !important;
	background: none !important;
	padding: 0 !important;
}
</style>
<link rel='stylesheet' id='crayon-css'  href='http://columns.chicken-house.net/wp-content/plugins/crayon-syntax-highlighter/css/min/crayon.min.css?ver=2.7.1' type='text/css' media='all' />
<link rel='stylesheet' id='crayon-theme-classic-css'  href='http://columns.chicken-house.net/wp-content/plugins/crayon-syntax-highlighter/themes/classic/classic.css?ver=2.7.1' type='text/css' media='all' />
<link rel='stylesheet' id='crayon-font-monaco-css'  href='http://columns.chicken-house.net/wp-content/plugins/crayon-syntax-highlighter/fonts/monaco.css?ver=2.7.1' type='text/css' media='all' />
<link rel='stylesheet' id='fcbk_stylesheet-css'  href='http://columns.chicken-house.net/wp-content/plugins/facebook-button-plugin/css/style.css?ver=4.3.1' type='text/css' media='all' />
<link rel='stylesheet' id='rubbersoul-fonts-css'  href='https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700&#038;subset=latin,latin-ext' type='text/css' media='all' />
<link rel='stylesheet' id='rubbersoul-style-css'  href='http://columns.chicken-house.net/wp-content/themes/rubbersoul/style.css?ver=1.5.7' type='text/css' media='all' />
<link rel='stylesheet' id='rsoul-custom-style-css'  href='http://columns.chicken-house.net/wp-content/themes/rubbersoul/custom-style.css?ver=4.3.1' type='text/css' media='all' />
<!--[if lt IE 9]>
<link rel='stylesheet' id='rubbersoul-ie-css'  href='http://columns.chicken-house.net/wp-content/themes/rubbersoul/css/ie.css?ver=20121010' type='text/css' media='all' />
<![endif]-->
<link rel='stylesheet' id='dashicons-css'  href='http://columns.chicken-house.net/wp-includes/css/dashicons.min.css?ver=4.3.1' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css'  href='http://columns.chicken-house.net/wp-content/themes/rubbersoul/css/font-awesome-4.4.0/css/font-awesome.min.css?ver=4.3.1' type='text/css' media='all' />
<script type='text/javascript' src='http://columns.chicken-house.net/wp-includes/js/jquery/jquery.js?ver=1.11.3'></script>
<script type='text/javascript' src='http://columns.chicken-house.net/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var CrayonSyntaxSettings = {"version":"2.7.1","is_admin":"0","ajaxurl":"http:\/\/columns.chicken-house.net\/wp-admin\/admin-ajax.php","prefix":"crayon-","setting":"crayon-setting","selected":"crayon-setting-selected","changed":"crayon-setting-changed","special":"crayon-setting-special","orig_value":"data-orig-value","debug":""};
var CrayonSyntaxStrings = {"copy":"Press %s to Copy, %s to Paste","minimize":"Click To Expand Code"};
/* ]]> */
</script>
<script type='text/javascript' src='http://columns.chicken-house.net/wp-content/plugins/crayon-syntax-highlighter/js/min/crayon.min.js?ver=2.7.1'></script>
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://columns.chicken-house.net/xmlrpc.php?rsd" />
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://columns.chicken-house.net/wp-includes/wlwmanifest.xml" /> 
<meta name="generator" content="WordPress 4.3.1" />
<meta name="google-site-verification" content="n6zztbaGNtkwXJKe1aihxnaZI1EeoXxSYQoxMga6Nzw" />	<style type='text/css'>
		a {color: #0098D3;}
	a:hover {color: #0098D3;}
	.social-icon-wrapper a:hover {color: #0098D3;}
	.prefix-widget-title {color: #0098D3;}
	.term-icon {color: #0098D3;}
	.wrapper-search-top-bar {background-color:#0098D3;}
	.sub-title a:hover {color:#0098D3;}
	.entry-content a:visited,.comment-content a:visited {color:#0098D3;}
	input[type="submit"] {background-color:#0098D3 !important;}
	.bypostauthor cite span {background-color:#0098D3;}
	.wrapper-cabecera {background-color:#0098D3;}
	.main-navigation {background-color:#0098D3;}
	.entry-header .entry-title a:hover {color:#0098D3 ;}
	.archive-header {border-left-color:#0098D3;}
	.featured-post {border-left-color:#0098D3 !important;}
	.main-navigation a:hover,
	.main-navigation a:focus {
		color: #0098D3;
	}
	.widget-area .widget a:hover {
		color: #0098D3 !important;
	}
	footer[role="contentinfo"] a:hover {
		color: #0098D3;
	}
	.entry-meta a:hover {
	color: #0098D3;
	}
	.format-status .entry-header header a:hover {
		color: #0098D3;
	}
	.comments-area article header a:hover {
		color: #0098D3;
	}
	a.comment-reply-link:hover,
	a.comment-edit-link:hover {
		color: #0098D3;
	}
	.template-front-page .widget-area .widget li a:hover {
		color: #0098D3;
	}
	.currenttext, .paginacion a:hover {background-color:#0098D3;}
	.aside{border-left-color:#0098D3 !important;}
	blockquote{border-left-color:#0098D3;}
	h2.comments-title {border-left-color:#0098D3;}
	
		
			.wrapper-cabecera {height:70px; height:5rem;}
		
		
		
		
			.wrapper-excerpt-thumbnail img {
	 		border-radius:0;
		}
		
		
			
		body.custom-font-enabled {font-family: "Open Sans", Arial, Verdana;}
	
			@media screen and (min-width: 600px) {
			#primary {float:left;}
			#secondary {float:right;}
			.site-content {
				border-left: none;
				padding-left:0;
				padding-right: 24px;
				padding-right:1.714285714285714rem;
			}
		}
		
	@media screen and (max-width: 599px) {
		.menu-toggle, .menu-toggle:hover {
			background:#0098D3 !important;
			color:#ffffff !important;
			width:100%;
		}
	}
	</style>
	
	<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>

<!-- BEGIN GADWP v4.9 Universal Tracking - https://deconf.com/google-analytics-dashboard-wordpress/ -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-68797023-1', 'auto');
  ga('send', 'pageview');
</script>

<!-- END GADWP Universal Tracking -->


<!-- START - Facebook Open Graph, Google+ and Twitter Card Tags 1.6.3 -->
<meta property="og:site_name" content="Andrew&#039;s Blog"/>
<meta property="og:title" content="Andrew&#039;s Blog"/>
<meta itemprop="name" content="Andrew&#039;s Blog"/>
<meta property="og:url" content="http://columns.chicken-house.net"/>
<meta property="og:type" content="website"/>
<meta property="og:description" content=".NET, Azure, OOP, C#"/>
<meta name="description" content=".NET, Azure, OOP, C#"/>
<meta itemprop="description" content=".NET, Azure, OOP, C#"/>
<!-- END - Facebook Open Graph, Google+ and Twitter Card Tags -->


<script type='text/javascript' src='http://columns.chicken-house.net/wp-content/plugins/wp-spamshield/js/jscripts.php'></script> 
<meta data-pso-pv="1.2.0" data-pso-pt="front" data-pso-th="77c478b5a6769895437ab1d3aa7cfd3d"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><script pagespeed_no_defer="" data-pso-version="20151206_221008">window.dynamicgoogletags={config:[]};dynamicgoogletags.config=["ca-pub-4244658577287067",[[[["ASIDE",,"recent-posts-2",[]],["10px","28px",0],3,[0],"1148442332",0,,,6],[["HEADER",0,,[]],["10px","10px",1],3,[2],"2625175532",0,,,3],[["DIV",,"secondary",[]],["10px","10px",1],2,[0],"4101908736",0,,,5]]],[[[[,[[0,19]],,16,1,1],[,[[40,59]],,21,1,1],[,[[180,199]],,17,1,1],[,[[240,259]],,28,1,1],[,[[320,339]],,32,1,1]],[[["BODY",0,,[]],["10px","10px",1],1,[4],,0,,,2],[["BODY",0,,[]],["10px","10px",1],2,[5],,0,,,2],[["HEADER",0,,[]],["10px","10px",1],3,[2],,0,,,3],[["DIV",,"content",[]],["28px","10px",1],3,[1],,0,,,6],[["DIV",,,["wrapper-navigation-below"]],["10px","10px",1],0,[1],,0,,,8],[["DIV",,"secondary",[]],["10px","10px",1],2,[0],,0,,,5],[["DIV",,"secondary",[]],["24px","10px",1],3,[3],,0,,,5],[["ASIDE",,"search-2",[]],["10px","28px",1],3,[1],,0,,,6],[["ASIDE",,"recent-posts-2",[]],["10px","28px",1],3,[1],,0,,,6],[["ASIDE",,"recent-comments-2",[]],["10px","28px",1],3,[1],,0,,,6],[["ASIDE",,"archives-2",[]],["10px","28px",1],3,[1],,0,,,6],[["ASIDE",,"categories-2",[]],["10px","28px",1],3,[3],,0,,,6],[["DIV",,,["social-icon-wrapper"]],["10px","10px",1],0,[3],,0,,,4],[["DIV",,,["site-info"]],["10px","10px",1],0,[3],,0,,,4],[["DIV",,,["site-info"]],["10px","10px",1],3,[5],,0,,,4],[["ARTICLE",0,,[],0],["10px","10px",0],0,[0],,0,,,9],[["ARTICLE",0,,[],1],["10px","10px",0],0,[0],,0],[["ARTICLE",0,,[],2],["10px","10px",0],0,[0],,0],[["ARTICLE",0,,[],-1],["10px","10px",0],3,[0],,0,,,9],[["ARTICLE",1,,[],0],["10px","10px",0],0,[0],,0,,,9],[["ARTICLE",1,,[],1],["10px","10px",0],0,[0],,0],[["ARTICLE",1,,[],2],["10px","10px",0],0,[0],,0],[["ARTICLE",1,,[],-1],["10px","10px",0],3,[0],,0,,,9],[["ARTICLE",2,,[],0],["10px","10px",0],0,[0],,0,,,9],[["ARTICLE",2,,[],1],["10px","10px",0],0,[0],,0],[["ARTICLE",2,,[],2],["10px","10px",0],0,[0],,0],[["ARTICLE",2,,[],-1],["10px","10px",0],3,[0],,0,,,9]],["2668874739","4145607932","5622341135","7099074331","8575807531"],["ARTICLE",,,[]],"20151207_041111"]],"WordPressFront","2764776334",,0.01,,[,1450724038007],0.01,0];(function(){var h=this,aa=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
else if("function"==b&&"undefined"==typeof a.call)return"object";return b},r=function(a){return"number"==typeof a},t=function(a,b){function c(){}c.prototype=b.prototype;a.Fa=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.za=function(a,c,f){for(var g=Array(arguments.length-2),k=2;k<arguments.length;k++)g[k-2]=arguments[k];return b.prototype[c].apply(a,g)}};var ba=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},ca=function(a,b){return a<b?-1:a>b?1:0};var u=function(){},v=function(a,b,c){a.b=null;b||(b=[]);a.Ea=void 0;a.O=-1;a.g=b;a:{if(a.g.length){b=a.g.length-1;var d=a.g[b];if(d&&"object"==typeof d&&"array"!=aa(d)){a.W=b-a.O;a.K=d;break a}}a.W=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)d=c[b],d<a.W?(d+=a.O,a.g[d]=a.g[d]||da):a.K[d]=a.K[d]||da},da=[],w=function(a,b){if(b<a.W){var c=b+a.O,d=a.g[c];return d===da?a.g[c]=[]:d}d=a.K[b];return d===da?a.K[b]=[]:d},x=function(a,b,c){b<a.W?a.g[b+a.O]=c:a.K[b]=c},y=function(a,b,c){a.b||(a.b={});if(!a.b[c]){var d=
w(a,c);d&&(a.b[c]=new b(d))}return a.b[c]},z=function(a,b,c){a.b||(a.b={});if(!a.b[c]){for(var d=w(a,c),e=[],f=0;f<d.length;f++)e[f]=new b(d[f]);a.b[c]=e}b=a.b[c];b==da&&(b=a.b[c]=[]);return b},ea=function(a,b,c){a.b||(a.b={});var d=c?c.g:c;a.b[b]=c;x(a,b,d)},fa=function(a,b,c){a.b||(a.b={});c=c||[];for(var d=[],e=0;e<c.length;e++)d[e]=c[e].g;a.b[b]=c;x(a,b,d)};u.prototype.toString=function(){return this.g.toString()};
var A=function(a){return new a.constructor(ga(a.g))},ga=function(a){var b;if("array"==aa(a)){for(var c=Array(a.length),d=0;d<a.length;d++)null!=(b=a[d])&&(c[d]="object"==typeof b?ga(b):b);return c}c={};for(d in a)null!=(b=a[d])&&(c[d]="object"==typeof b?ga(b):b);return c};var ja=function(a){v(this,a,ia)};t(ja,u);var ia=[4];ja.prototype.i=function(){return A(this)};var B=function(a){return w(a,5)},D=function(a){v(this,a,null)};t(D,u);D.prototype.i=function(){return A(this)};var ka=function(a){v(this,a,null)};t(ka,u);ka.prototype.i=function(){return A(this)};ka.prototype.A=function(){return w(this,1)};ka.prototype.setPosition=function(a){x(this,1,a)};var E=function(a){v(this,a,null)};t(E,u);E.prototype.i=function(){return A(this)};var F=function(a){return y(a,ja,1)};E.prototype.A=function(){return w(this,3)};E.prototype.setPosition=function(a){x(this,3,a)};var G=function(a){v(this,a,la)};t(G,u);var la=[1];G.prototype.i=function(){return A(this)};G.prototype.j=function(){return z(this,E,1)};G.prototype.na=function(a){fa(this,1,a)};var H=function(a){v(this,a,ma)};t(H,u);var ma=[2];H.prototype.i=function(){return A(this)};
H.prototype.la=function(){return w(this,3)};var na=function(a){v(this,a,null)};t(na,u);na.prototype.i=function(){return A(this)};var I=function(a){v(this,a,oa)};t(I,u);var oa=[1,2,3];I.prototype.i=function(){return A(this)};I.prototype.j=function(){return z(this,E,2)};I.prototype.na=function(a){fa(this,2,a)};var pa=function(a){return y(a,ja,4)},J=function(a){v(this,a,qa)};t(J,u);var qa=[3];J.prototype.i=function(){return A(this)};J.prototype.B=function(){return w(this,1)};
J.prototype.C=function(){return y(this,G,2)};J.prototype.U=function(){return w(this,4)};J.prototype.la=function(){return w(this,5)};J.prototype.T=function(){return y(this,ra,9)};var ra=function(a){v(this,a,null)};t(ra,u);ra.prototype.i=function(){return A(this)};var ta=function(a){var b=sa,c=new E;a=a.i();void 0!==b.V?-1==b.V?(x(a,2,b.D),x(a,5,-1),c.setPosition(3)):0==b.V?(x(a,2,b.D),x(a,5,0),c.setPosition(0)):(x(a,2,b.D),x(a,5,b.V-1),c.setPosition(3)):-1==b.D?(x(a,2,-1),c.setPosition(3)):0==b.D?(x(a,2,0),c.setPosition(0)):(x(a,2,b.D-1),c.setPosition(3));ea(c,1,a);return c},xa=function(a,b){var c=b||document,d=null,e=w(a,3);if(e)if(d=c.getElementById(e))d=[d];else return[];if(e=w(a,1))if(d){for(var f=[],g=0;g<d.length;++g)d[g].tagName&&d[g].tagName.toUpperCase()==
e.toUpperCase()&&f.push(d[g]);d=f}else{d=c.getElementsByTagName(e);e=[];for(f=0;f<d.length;++f)e.push(d[f]);d=e}if((e=w(a,4))&&0<e.length)if(d)for(c=d,d=[],f=0;f<c.length;++f)ua(c[f],e)&&d.push(c[f]);else{if(!c.body)return[];d=va(e,c.body)}c=w(a,2);if(r(c)&&d)if(0>c&&(c+=d.length),d.length>c)d=[d[c]];else return[];c=B(a);if(r(c)&&d){e=[];for(f=0;f<d.length;f++)g=wa(d[f]),0>c&&(c+=g.length),0<=c&&c<g.length&&e.push(g[c]);d=e}c=w(a,6);if(void 0!==c&&d)switch(c){case 0:return d.slice(1);case 1:return d.slice(0,
d.length-1);case 2:return d.slice(1,d.length-1)}return d?d:[]},ya=function(a){return"INS"==a.tagName&&ua(a,["adsbygoogle-placeholder"])},wa=function(a){var b=[];a=a.getElementsByTagName("p");for(var c=0;c<a.length;++c)100<=za(a[c])&&b.push(a[c]);return b},Aa=function(a,b){if(a==b)return!0;if(!a||!b||w(a,1)!=w(b,1)||w(a,2)!=w(b,2)||w(a,3)!=w(b,3)||B(a)!=B(b)||w(a,6)!=w(b,6))return!1;var c=w(a,4),d=w(b,4);if(c||d)if(c&&d&&c.length==d.length)for(var e=0;e<c.length;e++){if(c[e]!=d[e])return!1}else return!1;
return!0},za=function(a){if(3==a.nodeType)return a.length;if(1!=a.nodeType||"SCRIPT"==a.tagName)return 0;for(var b=0,c=0;c<a.childNodes.length;++c)b+=za(a.childNodes[c]);return b},va=function(a,b){if(b.getElementsByClassName){for(var c=b.getElementsByClassName(a.join(" ")),d=[],e=0;e<c.length;++e)d.push(c[e]);return d}c=[];ua(b,a)&&c.push(b);for(e=0;e<b.childNodes.length;++e)1==b.childNodes[e].nodeType&&(c=c.concat(va(a,b.childNodes[e])));return c},ua=function(a,b){for(var c=a.className?a.className.split(/\s+/):
[],d={},e=0;e<c.length;++e)d[c[e]]=!0;for(e=0;e<b.length;++e)if(!d[b[e]])return!1;return!0};var K;a:{var Ba=h.navigator;if(Ba){var Ca=Ba.userAgent;if(Ca){K=Ca;break a}}K=""}var L=function(a){return-1!=K.indexOf(a)};var Da=L("Opera")||L("OPR"),M=L("Trident")||L("MSIE"),Ea=L("Edge"),Fa=L("Gecko")&&!(-1!=K.toLowerCase().indexOf("webkit")&&!L("Edge"))&&!(L("Trident")||L("MSIE"))&&!L("Edge"),Ga=-1!=K.toLowerCase().indexOf("webkit")&&!L("Edge"),Ha=function(){var a=K;if(Fa)return/rv\:([^\);]+)(\)|;)/.exec(a);if(Ea)return/Edge\/([\d\.]+)/.exec(a);if(M)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(Ga)return/WebKit\/(\S+)/.exec(a)},Ia=function(){var a=h.document;return a?a.documentMode:void 0},Ja=function(){if(Da&&
h.opera){var a;var b=h.opera.version;try{a=b()}catch(c){a=b}return a}a="";(b=Ha())&&(a=b?b[1]:"");return M&&(b=Ia(),b>parseFloat(a))?String(b):a}(),Ka={},La=function(a){if(!Ka[a]){for(var b=0,c=ba(String(Ja)).split("."),d=ba(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f<e;f++){var g=c[f]||"",k=d[f]||"",m=RegExp("(\\d*)(\\D*)","g"),l=RegExp("(\\d*)(\\D*)","g");do{var p=m.exec(g)||["","",""],n=l.exec(k)||["","",""];if(0==p[0].length&&0==n[0].length)break;b=ca(0==p[1].length?0:parseInt(p[1],
10),0==n[1].length?0:parseInt(n[1],10))||ca(0==p[2].length,0==n[2].length)||ca(p[2],n[2])}while(0==b)}Ka[a]=0<=b}},Ma=h.document,Na=Ma&&M?Ia()||("CSS1Compat"==Ma.compatMode?parseInt(Ja,10):5):void 0;var Oa;if(!(Oa=!Fa&&!M)){var Pa;if(Pa=M)Pa=9<=Na;Oa=Pa}Oa||Fa&&La("1.9.1");M&&La("9");var N=function(a,b,c,d){this.top=a;this.right=b;this.bottom=c;this.left=d};N.prototype.contains=function(a){return this&&a?a instanceof N?a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom:a.x>=this.left&&a.x<=this.right&&a.y>=this.top&&a.y<=this.bottom:!1};N.prototype.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};var Qa=function(a,b){var c=9==a.nodeType?a:a.ownerDocument||a.document;return c.defaultView&&c.defaultView.getComputedStyle&&(c=c.defaultView.getComputedStyle(a,null))?c[b]||c.getPropertyValue(b)||"":""};var Ra=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.call(void 0,a[c],c,a)},Sa=function(a,b){var c=a.length;if(0==c)return 0;for(var d=b||305419896,e=0;e<c;e++)d^=(d<<5)+(d>>2)+a.charCodeAt(e)&4294967295;return 0<d?d:4294967296+d};var Va=function(a,b,c,d){var e=Ta;try{if((c?e.ya:Math.random())<(d||e.sa)){var f=e.ra+a+Ua(b),f=f.substring(0,2E3);h.google_image_requests||(h.google_image_requests=[]);var g=h.document.createElement("img");g.src=f;h.google_image_requests.push(g)}}catch(k){}},Ua=function(a){var b="";Ra(a,function(a,d){if(0===a||a)b+="&"+d+"="+encodeURIComponent(String(a))});return b};var Wa=window;var Xa=/(^| )adsbygoogle($| )/;var Ya=function(a,b,c){this.ba=a;this.ua=c?c:new ra};Ya.prototype.T=function(){return this.ua||new ra};var O=function(a){return a.dynamicgoogletags=a.dynamicgoogletags||{}};var Za=function(a){a=a.document;return("CSS1Compat"==a.compatMode?a.documentElement:a.body)||{}};var $a=function(){this.document=document};var ab=function(a,b,c){switch(a){case 0:b.parentNode&&b.parentNode.insertBefore(c,b);break;case 3:if(a=b.parentNode){var d=b.nextSibling;if(d&&d.parentNode!=a)for(;d&&8==d.nodeType;)d=d.nextSibling;a.insertBefore(c,d)}break;case 1:b.insertBefore(c,b.firstChild);break;case 2:b.appendChild(c)}ya(b)&&(b.style.display="block")};var bb=function(a){return!!a.nextSibling||!!a.parentNode&&bb(a.parentNode)},cb=function(a,b){var c=F(b);if(!c)return null;c=xa(c,a);return 0<c.length?c[0]:null},eb=function(a,b){var c=db(a.document,b,!0);return r(c)&&!(c<=Za(a).clientHeight)},fb=function(a,b){return a.body?b-a.body.getBoundingClientRect().top:b},db=function(a,b,c){if(!c||!r(w(b,8)))if(c=cb(a,b)){var d=y(b,D,2);a=a.createElement("div");a.className="googlepublisherpluginad";var e=a.style;e.textAlign="center";e.width="100%";e.height=
"0px";e.clear=d&&w(d,3)?"both":"none";ab(b.A(),c,a);c=a.getBoundingClientRect().top;a.parentNode.removeChild(a);x(b,8,c)}return w(b,8)},ib=function(a,b,c){switch(b){case 0:return!!gb(a,hb(c));case 3:return!!gb(a,c);case 1:return!1;case 2:return b=c.lastChild,!!gb(a,b?1==b.nodeType?b:hb(b):null);default:return!1}},gb=function(a,b){if(!b)return!1;var c;c=a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle;if(!c)return!1;c=c.cssFloat||c.styleFloat;return"left"==c||"right"==c},jb=function(a){return a.adsbygoogle=
a.adsbygoogle||[]},kb=function(a){switch(a){case 0:return"auto";case 1:return"horizontal";case 2:return"vertical";case 3:return"rectangle";default:return"auto"}},hb=function(a){for(a=a.previousSibling;a&&1!=a.nodeType;)a=a.previousSibling;return a?a:null},lb=function(a,b){a.sort(function(a,d){var e=db(b,a,!0),e=r(e)?e:Number.POSITIVE_INFINITY,f=db(b,d,!0),f=r(f)?f:Number.POSITIVE_INFINITY;return e-f})};var mb=function(a){this.o=a;this.qa=[]};mb.prototype.f=function(){return 0<z(this.o,I,3).length?z(this.o,I,3)[0]:null};var nb=function(a,b){for(var c=a.google_ad_modifications=a.google_ad_modifications||{},c=c.loeids=c.loeids||[],d=0;d<b.length;d++)c.push(""+b[d])},ob=function(a,b){var c=a.google_ad_modifications=a.google_ad_modifications||{};(c.ad_channels=c.ad_channels||[]).push(b)},rb=function(a){a+=pb;var b=Sa(a);return((b%512*2+1)*qb+Sa(a,b)%1024)%1024},sb=function(a,b,c){var d=a.length;c-=0;return 0>c||c>=b*d?null:a[c%d]};var Ta;Ta=new function(){this.ra="http"+("http:"==Wa.location.protocol?"":"s")+"://pagead2.googlesyndication.com/pagead/gen_204?id=";this.sa=.01;this.ya=Math.random()};var tb={"120x90":!0,"160x90":!0,"180x90":!0,"200x90":!0,"468x15":!0,"728x15":!0};var ub=function(a,b){var c=Za(a).clientWidth,d=Za(a).clientHeight;if(!r(c)||!r(d))throw Error("No VP width and/or height.");c=new N(0,c,d,0);return(b.left<c.right&&c.left<b.right&&b.top<c.bottom&&c.top<b.bottom?new N(Math.max(b.top,c.top),Math.min(b.right,c.right),Math.min(b.bottom,c.bottom),Math.max(b.left,c.left)):null)||new N(0,0,0,0)};var vb=function(a){this.L=null;this.u=[];1==a.nodeType&&Qa(a,"zIndex")};vb.prototype.X=function(a){this.L=a};vb.prototype.getParent=function(){return this.L};vb.prototype.Z=function(a){a.X(this);this.u.push(a)};vb.prototype.ka=function(){return this.u};var P=function(a){this.l=a;this.L=null;this.u=[];this.P={};this.I=this.aa=null},wb=function(a){if(!a.l.ownerDocument)throw Error("Wrapped node should have an owner document.");return a.l.ownerDocument},xb=function(a){a=wb(a);return a.defaultView||a.parentWindow};P.prototype.X=function(a){this.L=a};P.prototype.getParent=function(){return this.L};P.prototype.Z=function(a){a.X(this);this.u.push(a)};
P.prototype.removeChild=function(a){for(var b=0;b<this.u.length;++b)if(this.u[b]==a){this.u[b].X(null);this.u.splice(b,1);break}};P.prototype.ka=function(){return this.u};
var zb=function(a){if(!a.ia){var b;b=a.getBoundingClientRect();var c=Q(a,"position");if("fixed"==c)b=ub(xb(a),b);else if(a.getParent()){var d=yb(a.getParent(),0,"absolute"==c);if(d){var d=zb(d),e=d.left,d=d.right;b=b.left>=d||b.right<=e?null:new N(b.top,Math.min(b.right,d),b.bottom,Math.max(b.left,e))}b&&(c=yb(a.getParent(),1,"absolute"==c))&&(d=zb(c),c=d.top,d=d.bottom,b=b.top>=d||b.bottom<=c?null:new N(Math.max(b.top,c),b.right,Math.min(b.bottom,d),b.left));b=b&&Ab(a)&&"fixed"==Q(Ab(a),"position")?
ub(xb(a),b):b||new N(0,0,0,0)}a.ia=b}return a.ia};P.prototype.getBoundingClientRect=function(){if(!this.aa){var a;this.l.getBoundingClientRect?(a=this.l.getBoundingClientRect(),a=new N(a.top,a.right,a.bottom,a.left)):(a=wb(this).createRange(),a.selectNodeContents(this.l),a.collapsed?a=new N(0,0,0,0):(a=a.getBoundingClientRect(),a=new N(a.top,a.right,a.bottom,a.left)));this.aa=a}return this.aa};
var Ab=function(a){if(void 0!==a.da)return a.da;var b;b=Q(a,"position");if("fixed"==b)b=a;else{var c=a.getParent();b=c&&"BODY"!=a.l.tagName?(c=Ab(c))||"absolute"!=b&&"relative"!=b?c:a:null}a.da=b;return a.da},yb=function(a,b,c){if(void 0!==a.P[b])return a.P[b];a.P[b]=Bb(a,b,c);return a.P[b]},Bb=function(a,b,c){var d=Q(a,"position"),e;a:switch(b){case 0:e="hidden"==Q(a,"overflow")||"scroll"==Q(a,"overflow")||"hidden"==Q(a,"overflow-x")||"scroll"==Q(a,"overflow-x");break a;case 1:e="hidden"==Q(a,"overflow")||
"scroll"==Q(a,"overflow")||"hidden"==Q(a,"overflow-y")||"scroll"==Q(a,"overflow-y");break a;default:throw"Unknown pageAxis: "+b;}switch(d){case "fixed":if(e)return a;break;case "static":case "":if(e&&!c)return a;if(a.getParent())return yb(a.getParent(),b,c);break;case "absolute":case "relative":if(e)return a;if(a.getParent())return yb(a.getParent(),b,"absolute"==d);break;default:window.console.error("Unknown position value.")}return null},Q=function(a,b){if(1!=a.l.nodeType)return null;a.I=a.I||xb(a).getComputedStyle(a.l);
return a.I?a.I[b]||a.I.getPropertyValue(b)||"":""},Cb=function(a,b,c){if(c&&3==a.nodeType?!/\S/.test(a.data):1!=a.nodeType&&3!=a.nodeType||a.tagName&&("SCRIPT"==a.tagName.toUpperCase()||"STYLE"==a.tagName.toUpperCase()))return null;var d=new P(a),e;(e=!b)||(1!=a.nodeType?e=!1:(e=Qa(a,"position"),"HTML"==a.tagName||"fixed"==e||"auto"!=Qa(a,"z-index")&&("absolute"==e||"relative"==e)?e=!0:(e=Qa(a,"opacity"),e="1"!=e&&""!=e?!0:!1)));e&&(e=b,b=new vb(a),e&&e.Z(b));for(e=0;e<a.childNodes.length;++e){var f=
Cb(a.childNodes[e],b,c);f&&d.Z(f)}return d};var Eb=function(a){this.pa=a;this.R=null;a={};var b=this.pa.Ca;try{if(b&&"function"==typeof b.xa)for(var c=b.xa().Ba(),b=0;b<c.length;b++){var d=c[b].Aa();a[d]=!0}}catch(e){Va("ladd_evt",{ok:0,err:e.toString()},!0,.1)}this.va=a;this.S=[];this.ja=[];this.oa=!0;Db(this)},Fb=function(a,b){var c=a.id;return!!c&&!!c.indexOf&&"function"===typeof c.indexOf&&0===c.indexOf(b)},Gb=function(a){Db(a);return 0<a.S.length},Db=function(a){if(a.oa){a.oa=!1;if(!a.R){var b;b=(b=a.pa.document.body)?Cb(b):null;a.R=b}a.R&&
Hb(a,a.R,a.S,a.ja)}},Hb=function(a,b,c,d){var e;if(e=1===b.l.nodeType){e=b.l;var f;(f="INS"==e.tagName&&Xa.test(e.className))||(f=e.id,f=a.va[f]?!0:"DIV"==e.tagName&&0==f.indexOf("div-gpt-ad"));e=f||Fb(e,"google_ads_frame")||Fb(e,"aswift_")||e.classList.contains("lru_res")}e&&(c.push(b),e=b.l,"IFRAME"!=e.tagName||!Fb(e,"google_ads_frame")&&!Fb(e,"aswift_")?e=!1:(e=zb(b),f=e.bottom-e.top,e=!(tb[e.right-e.left+"x"+f]&&50>f)),e&&d.push(b));b=b.ka();for(e=0;e<b.length;e++)Hb(a,b[e],c,d)};var R=function(a){this.a=a;this.m=[];this.ga=0;this.J=[];this.Y=[];this.ha=this.ca=null;this.ma=!1},Ib=function(a,b){var c=pa(a.f());if(!(c&&b&&w(b,1)==w(c,1)&&w(b,3)==w(c,3)&&r(w(b,2))&&r(B(b))))return!1;var c=w(c,4),d=w(b,4);if(c.length!=d.length)return!1;for(var e=0;e<c.length;++e)if(d[e]!=c[e])return!1;return!0},Jb=function(a){var b=r(void 0)?void 0:20,c=a.f(),d=c.j(),e=pa(c);if(!(a.ma||0>=b)&&e&&0!=xa(e,a.a.document).length){a.ma=!0;for(var c=[],f=0;f<d.length;++f){var g=d[f],k=F(g);if(Ib(a,
k)){var m=w(k,2),k=B(k);0<=m&&0<=k&&(!c[m]||B(F(c[m]))<k)&&(c[m]=g)}}k=0;d=xa(e,a.a.document);for(m=0;m<c.length&&k<b;++m){var e=k,f=a,l=d[m],g=c[m],k=b-k,p=f.f().j(),n=0;if(l&&g){var l=wa(l).length,q=F(g);switch(w(q,6)){case 0:case 1:--l;break;case 2:l-=2}for(q=B(F(g))+1;q<l&&n<k;++q){var C=g.i(),ha=F(C);x(ha,5,q);p.push(C);n++}}n&&f.f().na(p);k=e+n}}},S=function(a,b){for(var c=0;c<a.J.length;++c)if(a.J[c]==b)return;a.J.push(b)},Kb=function(a,b){for(var c=0;c<a.Y.length;++c)if(a.Y[c]==b)return;a.Y.push(b)},
T=function(a,b,c){var d=cb(a.a.document,b);if(!d)return 2;var e=b.A(),f;if(f=F(b))f=F(b),f=void 0!==w(f,2);return f&&ib(a.a,e,d)?7:2!=e||c||bb(d)?(c=1==e||2==e?d:d.parentNode)&&0>=c.offsetWidth&&!ya(c)?3:Lb(a,b,d):4},Lb=function(a,b,c){if(null!=a.ha&&!a.ha.Da(a.a,b))return 4;if(w(b,7))return Kb(a,8),6;var d;a:if(w(b,5))d=w(b,5);else{if(d=U(a).f())if(d=w(d,3),a.ga<d.length){d=d[a.ga++];break a}S(a,4);d=null}if(null==d)return 1;x(b,7,!0);var e=[],f=a.U();f&&e.push(f);for(var f=U(a).qa,g=0;g<f.length;++g)e.push(f[g]);
r(w(b,9))&&e.push("pso-lv-"+w(b,9));var k=a.a.document,f=a.B(),g=d,m=w(b,6),l=y(b,D,2),p,n,q;l&&(p=w(l,1),n=w(l,2),q=!!w(l,3));var l=k.createElement("div"),C=l.style;C.textAlign="center";C.width="100%";C.height="auto";C.clear=q?"both":"none";q=k.createElement("ins");k=q.style;k.display="block";k.margin="auto";k.backgroundColor="transparent";p&&(k.marginTop=p);n&&(k.marginBottom=n);l.appendChild(q);l.className="googlepublisherpluginad";q.className="adsbygoogle";q.setAttribute("data-ad-client",f);g&&
q.setAttribute("data-ad-slot",g);q.setAttribute("data-ad-format",kb(m));e.length&&q.setAttribute("data-ad-channel",e.join("+"));q.setAttribute("data-tag-origin","pso");ab(b.A(),c,l);try{jb(a.a).push({})}catch(ha){return w(b,5)!=d&&a.ga--,x(b,7,!1),Kb(a,6),l.parentNode&&l.parentNode.removeChild(l),5}a.m.push(l);return 0},Mb=function(a,b){for(var c=Number.POSITIVE_INFINITY,d=0;d<a.m.length;++d)var e=a.m[d].getBoundingClientRect().top,f=a.m[d].getBoundingClientRect().bottom,c=Math.min(c,b<e?e-b:f<b?
b-f:0);return c},Nb=function(a,b,c,d){for(var e=0;e<b.length;e++){var f=b[e],g=y(f,ka,4);if(g&&g.A()==c&&0==T(a,f,d))return!0}return!1},U=function(a){a=O(a.a).ps||null;if(!a)throw Error("No placementState");return a},Ob=function(a,b){var c=U(a).o;if(!c||!c.B())return S(a,5),!1;c=z(c,I,3)[0];return c?w(c,3).length<b?(S(a,4),S(a,5),!1):!0:(S(a,5),!1)};R.prototype.B=function(){return U(this).o.B()||""};R.prototype.U=function(){return U(this).o.U()||void 0};
R.prototype.C=function(){return U(this).o.C()||new G};R.prototype.f=function(){var a=U(this).f();if(!a)throw Error("No mConfig");return a};var Pb=function(a){a=a.f();a=w(a,6);return null!=a&&0<a};var sa={V:void 0,D:-1},Qb=function(a){R.call(this,a);this.H=this.G=this.$=!1};t(Qb,R);Qb.prototype.apply=function(a){if(Ob(this,3)){var b=this.f().j();this.$||(this.$=Nb(this,b,2,!!a));this.G||(this.G=Nb(this,b,3,!!a));if(a){this.G||(Kb(this,7),this.G=Rb(this,b));if(!this.H){a=pa(this.f());var c;if(c=a)c=ta(a),c=eb(this.a,c);c&&(a=ta(a),c=new D,x(c,1,"10px"),x(c,2,"10px"),ea(a,2,c),c=0==T(this,a,!0));this.H=c?!0:!1}this.H||(this.H=Rb(this,b))}}};Qb.prototype.v=function(){return this.$&&this.G&&this.H};
var Rb=function(a,b){for(var c=0;c<b.length;c++){var d=b[c];if(eb(a.a,d)&&!w(d,7)&&0==T(a,d,!0))return!0}return!1};var V=function(a){R.call(this,a)};t(V,R);V.prototype.apply=function(a){var b;(b=U(this).o)&&b.B()&&b.C()?b=!0:(S(this,5),b=!1);if(b){b=this.C().j();for(var c=0;c<b.length;c++){var d=b[c];w(d,7)||T(this,d,a)}}};V.prototype.v=function(){return(0==this.C().j().length||0<this.m.length)&&0==this.J.length};var Sb=function(a){R.call(this,a);if(Ob(this,0)){a=this.C().j();for(var b=this.f().j(),c=0;c<a.length;c++){var d=a[c],e;a:{e=d;var f=b;if(e&&F(e))for(var g=0;g<f.length;g++){var k=f[g];if(e.A()==k.A()&&Aa(F(e),F(k))){e=k;break a}}e=null}e&&y(e,D,2)&&(e=y(e,D,2),ea(d,2,e))}}};t(Sb,V);var W=function(a){R.call(this,a)};t(W,R);W.prototype.apply=function(){};W.prototype.v=function(){return Pb(this)?Gb(new Eb(this.a)):!0};var Tb=function(a){R.call(this,a);this.F=null};t(Tb,R);
Tb.prototype.apply=function(a){if(a&&Ob(this,2)){Jb(this);a=Za(this.a).clientHeight||640;null==this.F&&(this.F=new Eb(this.a));var b=this.F.ja.length;if(!(5<=b)){var b=Math.min(2,5-b),c=this.f().j(),d=this.a.document;lb(c,d);for(var e=0;e<c.length&&this.m.length<b;++e){var f=c[e];if(eb(this.a,f)){var g=db(d,f,!0);if(void 0!==g){var k;a:{k=this.F;for(var m=g,l=a,p=0;p<k.S.length;p++){var n=zb(k.S[p]);if(Math.abs(n.top-m)<l||Math.abs(n.bottom-m)<l){k=!0;break a}}k=!1}k||Mb(this,g)<a||T(this,f,!0)}}}0==
this.m.length&&Kb(this,1)}}};Tb.prototype.v=function(){return Pb(this)?Gb(this.F):!0};var Ub=function(a){R.call(this,a);this.ea=!1};t(Ub,W);
Ub.prototype.apply=function(a){if(a&&!this.ea){var b;a:{var c=this.a.document;b=c.body;if(a&&b){a=this.B();var d=c.createElement("div");d.className="googlepublisherpluginad";d.style.display="block";c=c.createElement("ins");c.className="adsbygoogle";c.setAttribute("data-ad-client",a);c.setAttribute("data-reactive-ad-format","1");c.setAttribute("data-tag-origin","pso");c.style.display="none";d.appendChild(c);ab(2,b,d);try{jb(this.a).push({})}catch(e){Kb(this,6);d.parentNode&&d.parentNode.removeChild(d);
b=5;break a}this.m.push(d);b=0}else b=4}this.ea=0==b}};Ub.prototype.v=function(){return this.ea&&W.prototype.v.call(this)};var Vb=function(a){R.call(this,a);a=Za(a).clientHeight;this.ta=.1*a;this.wa=.75*a};t(Vb,R);
Vb.prototype.apply=function(a){if(!Ob(this,3))return!1;Jb(this);var b=this.f().j();lb(b,this.a.document);var c;c=this.ta;var d;d=document;d=d.querySelectorAll?d.querySelectorAll("header,#header,#masthead,.header,.site-header"):[];for(var e=d.length,f=0<e?d[0]:null,g=1;g<e;g++)d[g].getBoundingClientRect().top<f.getBoundingClientRect().top&&(f=d[g]);(d=f)&&(d=d.getBoundingClientRect())&&d.top!=d.bottom&&d.left!=d.right&&(c=Math.min(c,fb(document,d.bottom)));for(d=0;d<b.length&&3>this.m.length;d++){e=
b[d];var f=c,g=this.a.document,k=db(g,e,!1);!r(k)||fb(g,k)<f?f=!1:(f=Mb(this,k),f=this.wa<f);f&&(f=eb(this.a,e),g=w(e,6)||0,f&&0==g&&x(e,6,3),!f&&a||T(this,e,a))}return this.v()};Vb.prototype.v=function(){return 3==this.m.length};var X={};X[16]=V;X[17]=V;X[19]=W;X[29]=Tb;X[33]=W;X[30]=Ub;X[21]=Qb;X[28]=Vb;X[32]=Sb;X[1]=V;X[3]=Qb;X[8]=W;X[11]=V;var Wb=[19,29,33,30,16,32,17],Xb=[19,16,8,1],Yb=[16,19,33,30,17,1,6,8,11];var Zb=function(a){return 0>a||99<a?null:10>a?"0"+a:""+a};var $b=function(){this.M=this.N=this.fa=null};var ac=function(a,b,c,d,e,f){var g=O(window).ss||null,k=O(window).ps||null,m;k&&(m=k.o);var l=a?"pso_success":"pso_failure",p;m&&(p=a?w(m,10):w(m,7));null!=p||(p=.01);a={};var n;a:{n=(new $a).document.getElementsByTagName("script");for(var q=0;q<n.length;++q)if(n[q].hasAttribute("data-pso-version")){n=n[q].getAttribute("data-pso-version");break a}n=null}a.sv=n;f?a.wpc=f:m&&(a.wpc=m.B());k&&m&&(a.tn=m.U(),f=k.f(),a.ev=f?w(f,5):null);g&&(a.s=g.N,a.st=g.fa);a.c=b;a.w=0<window.innerWidth?window.innerWidth:
null;a.h=0<window.innerHeight?window.innerHeight:null;0<c.length&&(a.err=c.join());0<d.length&&(a.warn=d.join());e&&e.name&&(a.excp_n=e.name);e&&e.message&&(a.excp_m=e.message.substring(0,512));if(e&&e.stack){var C;b=e.stack;try{-1==b.indexOf("")&&(b="\n"+b);for(var ha;b!=ha;)ha=b,b=b.replace(/((https?:\/..*\/)[^\/:]*:\d+(?:.|\n)*)\2/,"$1");C=b.replace(/\n */g,"\n")}catch(Kc){C=""}a.excp_s=C}Va(l,a,"jserror"!=l,p)};var bc=null,cc=!1,fc=function(a){var b=dc,c=ec;b.addEventListener?(a&&b.addEventListener("DOMContentLoaded",a,!1),c&&b.addEventListener("load",c,!1)):b.attachEvent&&c&&b.attachEvent("onload",c)},hc=function(){var a=window;r(bc)&&a.clearInterval&&(a.clearInterval(bc),bc=null);cc||gc(!1);gc(!0)},ec=function(){try{hc();var a=O(window).ss||null;if(a&&a.M){var b=a.M,c=b.v(),d=b.J,e=b.Y,f=b.ca,g=b.m.length;c||0!=g||d.push(6);c&&0==d.length&&null===f?ac(!0,g,[],e,null):ac(!1,g,d,e,f)}else ac(!1,0,[2],[],
null,void 0)}catch(k){ac(!1,null,[1],[],k)}O(window).loaded=!0},gc=function(a){a||(cc=!0);var b=O(window).ss||null;if(b&&b.M){b=b.M;try{b.apply(a)}catch(c){S(b,1),null===b.ca&&(b.ca=c)}}};var ic=function(a){var b=Y;a:if(r(a)){for(var c=0;c<Wb.length;++c)if(a==Wb[c]){a=!1;break a}a=!0}else a=!1;a&&(b=b.google_ad_modifications=b.google_ad_modifications||{},b.remove_ads_by_default=!0,b.ad_whitelist=[{ad_tag_origin:"pso"}],b.ad_blacklist=[],b.space_collapsing="slot")},nc=function(){var a=Y,b=jc,c=kc,d=b.f();if(!d)return lc(16);var e;a:{e=z(d,H,1);for(var f=0;f<e.length;++f){for(var g=!0,k=0;k<Yb.length;++k)w(e[f],4)==Yb[k]&&(g=!1);if(g){e=[];0==d.j().length&&e.push("PsoInvalidVariant");
0==w(d,3).length&&e.push("PsoNoAdSlotCodes");break a}}e=[]}if(0<e.length){a=e;for(c=0;c<a.length;++c)b.qa.push(a[c]);return lc(16)}a:{e=z(d,H,1);f=c.ba;if(r(f))for(g=0;g<e.length;g++)if(k=e[g],X[w(k,4)])for(var m=z(k,na,2),l=0;l<m.length;l++){var p=m[l],n=w(p,1),p=w(p,2);if(r(n)&&r(p)&&f>=n&&f<=p){e=k;break a}}e=null}if(!e)a:{e=z(d,H,1);f={};for(g=0;g<e.length;g++)f[w(e[g],4)]=e[g];for(g=0;g<Xb.length;g++)if(f[Xb[g]]){e=f[Xb[g]].i();x(e,6,3);break a}e=null}if(!e)return lc(16);2==w(e,6)&&((f=e.la())&&
ob(a,f),f=w(e,1),null!=f&&nb(a,[f]));f=!0;g=c.T();if(g=w(g,2))g=Date.now?Date.now():+new Date,k=c.T(),k=w(k,2),g=g<k;g||(ob(a,"pso-ama-exd"),f=!1);w(b.o,11)&&(ob(a,"pso-ama-stl-tmp"),f=!1);f&&ob(a,"pso-ama-elig");if(f&&(2==w(e,6)||1==w(e,6))&&(f=e,d=z(d,H,1),null!==c.ba)){c={};b=[];for(g=0;g<d.length;g++)k=mc(d[g]),null==k||c[k]||(c[k]=!0,b.push(k));d=mc(f);if(null!=d){c=[];d=Zb(d);f=!1;if(d)for(g=0;g<b.length;g++)k=Zb(b[g]),d==k&&(f=!0),k&&c.push(+("950"+d+k));f||(c=[]);nb(a,c)}}a=new $b;a.fa=w(e,
5);a.N=w(e,4);return a},lc=function(a){var b=new $b;b.N=a;return b},mc=function(a){var b;switch(w(a,6)){case 1:b=w(a,4);break;case 2:b=w(a,7)}return null!=b?b:null};try{var Y=window,oc,pc=O(Y).config;oc=pc?new J(pc):null;if(!oc)throw Error("No config");var jc=new mb(oc),qc=jc;O(Y).ps=qc;var Z,kc;if(L("iPad")||L("Android")&&!L("Mobile")||L("Silk")||!(L("iPod")||L("iPhone")||L("Android")||L("IEMobile")))Z=lc(16);else{var rc,sc=/^#([^=]*)=(\d+)$/.exec(Y.location.hash);if((rc=sc&&3==sc.length&&"pso_strategy"==sc[1]?+sc[2]:null)&&X[rc])Z=lc(rc),ic(rc);else{var tc=Y,uc=jc.o.T(),vc;try{var wc=parseInt(tc.localStorage.getItem("PSO_EXP0"),10);vc=isNaN(wc)?null:wc}catch(a){vc=
null}if(null==vc){vc=Math.floor(1024*Math.random());try{tc.localStorage.setItem("PSO_EXP0",vc.toString())}catch(a){}}kc=new Ya(vc,0,uc);Z=nc()}1==Z.fa&&ic(Z.N)}if(!Z)throw Error("No strategyState created!");var xc=Z;O(Y).ss=xc;var yc=Y,zc=Z,Ac=zc.N;if(r(Ac)){var Bc=X[Ac];Ac&&Bc&&(zc.M=new Bc(yc))}if(kc){var Cc=Y,qb=kc.ba,pb=Y.location.hostname,Dc=[],Ec=sb([17415655,17415656],1,rb("unif1"));null===Ec||Dc.push(Ec);var Fc=sb([17415657,17415658],10,rb("unif2"));null===Fc||Dc.push(Fc);var Gc=sb([17415659,
17415660],100,rb("unif3"));null===Gc||Dc.push(Gc);0<Dc.length&&nb(Cc,Dc)}var dc=Y;switch(dc.document.readyState){case "complete":ec();break;case "interactive":hc();fc();break;default:var Hc=dc,Ic=gc,Jc=jb(Hc);Jc.loaded||(Jc.onload=Ic);bc=Hc.setInterval(gc,10);fc(hc)}}catch(a){ac(!1,null,[],[],a)};})();
</script></head>

<body class="home blog custom-font-enabled single-author">

	<a name='inicio_pagina'></a>
	
	<header id="masthead" class="site-header" role="banner">
		<div class="wrapper-cabecera">
			<div class="blogname-y-menu">
				<div class="boton-menu-movil"><i class="fa fa-align-justify fa-2x"></i></div>
								
									<div class="titulo-descripcion">
						<h1 class="site-title"><a href="http://columns.chicken-house.net/" title="Andrew&#039;s Blog" rel="home">Andrew&#039;s Blog</a></h1>
						<h2 class="site-description">.NET, Azure, OOP, C#</h2>
					</div>
								
				<div class="toggle-search"><i class="fa fa-search"></i></div>
				
				<div class="wrapper-site-navigation">
					<nav id="site-navigation" class="main-navigation" role="navigation">
						
						<div class="nav-menu"><ul><li class="current_page_item"><a href="http://columns.chicken-house.net/">Home</a></li></ul></div>
					</nav><!-- #site-navigation -->
					<div class="wrapper-search-top-bar"><div class="search-top-bar">	<div>
		<form method="get" id="searchform-toggle" action="http://columns.chicken-house.net/">
			<label for="s" class="assistive-text">Search</label>
			<input type="search" class="txt-search" name="s" id="s" />
			<input type="submit" name="submit" id="btn-search" value="Search" />
		</form>
    </div></div></div>
				</div><!-- .wrapper-site-navigation -->
				
			</div><!-- .blogname-y-menu -->
			
			<div style="position:relative; clear:both;">
<div id="menu-movil">
	<div class="search-form-movil">
		<form method="get" id="searchform-movil" action="http://columns.chicken-house.net/">
			<label for="s" class="assistive-text">Search</label>
			<input type="search" class="txt-search-movil" placeholder="Search..." name="s" id="s" />
			<input type="submit" name="submit" id="btn-search-movil" value="Search" />
		</form>
    </div><!-- search-form-movil -->
	<div class="menu-movil-enlaces">
		<div class="nav-menu"><ul><li class="current_page_item"><a href="http://columns.chicken-house.net/">Home</a></li></ul></div>
	</div>
	
	<div class="social-icon-wrapper-movil">
							<a href="https://twitter.com" title="Twitter" target="_blank"><i class="fa fa-twitter"></i></a> 
						
							<a href="https://facebook.com" title="Facebook" target="_blank"><i class="fa fa-facebook"></i></a>
						
							<a href="https://plus.google.com" title="Google Plus" target="_blank"><i class="fa fa-google-plus"></i></a>
						
					 		<a href="https://linkedin.com" title="LindedIn" target="_blank"><i class="fa fa-linkedin"></i></a>
						
					 		<a href="https://youtube.com" title="YouTube" target="_blank"><i class="fa fa-youtube"></i></a>
						
					 		<a href="http://instagram.com" title="Instagram" target="_blank"><i class="fa fa-instagram"></i></a>
						
					 		<a href="https://pinterest.com" title="Pinterest" target="_blank"><i class="fa fa-pinterest"></i></a>
						
							<a class="rss" href="http://wordpress.org" title="RSS" target="_blank"><i class="fa fa-rss"></i></a>			
					</div><!-- .social-icon-wrapper -->	
</div><!-- #menu-movil --></div>	
			
		</div><!-- wrapper-cabecera -->
	
	</header><!-- #masthead -->
	
	<div id="page" class="hfeed site">
	
	<div id="main" class="wrapper">
	<div id="primary" class="site-content">
		<div id="content" role="main">
		
										
	<article id="post-560" class="post-560 post type-post status-publish format-standard has-post-thumbnail hentry category-net-core category-csharp category-docker">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=560" rel="bookmark">[.NET Core] Running .NET Core RC1 on Docker &#8211; DOTNET CLI</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-12-06&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=560#respond">No Comments<span class="screen-reader-text"> on [.NET Core] Running .NET Core RC1 on Docker &#8211; DOTNET CLI</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=560" title="[.NET Core] Running .NET Core RC1 on Docker &#8211; DOTNET CLI" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/12/connect14-e1449308872383-176x176.jpg" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="Microsoft Connect 2015" /></div>
						</a>
								<p>在半個月前，Microsoft Connect 2015 大會上正式宣布 .NET Core / ASP.NET 5 正式推出 RC1. RC 代表開發已經到了準備 release 的階段 (RC: release candidate), 功能都已完備 (FF: feature freeze), 品質也到一定的階段，RC 推出後若沒碰到重大問題，那接下來應該就是 RTM 了。 若你擔心 Beta 跟最終的版本落差太大，而不願意太早投入了解 .NET Core 的話，那現在是個適合的時間點了! 這次除了版本進展到 RC1 之外，Microsoft 除了在 Docker Hub 釋出了新版的 image 之外，也推出了另一個新的命令列工具集: DOTNET CLI, 同樣也提供 Docker Container 的 Image 可以使用。 原本開始研究&#8230; <a href="http://columns.chicken-house.net/?p=560">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=39" rel="tag">.Net Core</a>, <a href="http://columns.chicken-house.net/?cat=10" rel="tag">C#</a>, <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-543" class="post-543 post type-post status-publish format-standard has-post-thumbnail hentry category-benet category-docker category-tips category-writing">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=543" rel="bookmark">CaseStudy: 網站重構, NGINX (REVERSE PROXY) + 文章連結轉址 (Map)</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-12-03&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=543#respond">No Comments<span class="screen-reader-text"> on CaseStudy: 網站重構, NGINX (REVERSE PROXY) + 文章連結轉址 (Map)</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=543" title="CaseStudy: 網站重構, NGINX (REVERSE PROXY) + 文章連結轉址 (Map)" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/12/nginx-logo-176x176.png" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="nginx-logo" /></div>
						</a>
								<p>網站架構調整後有感: 要學習另一個陣營的技術，還真是條不歸路，越挖越覺得要摸索的東西越多 @@ 照例前面先來點碎碎念，正題後面再來。這年頭，大型的佈署是少不了 Linux + OpenSource Solution 的，再加上我吃飯的傢伙 ASP.NET 的下一版 (vNext, .NET Core) 也要正式跨各種平台了，不熟悉一下 Linux 以後怎麼會有能力把寫出來的 code 搬到 Linux 上面執行? 不過，要跨到完全另一個生態體系的環境，還真要下點決心才跨得過去&#8230; 所幸，我挑對了切入點 (把自己的 BLOG 從 BlogEngine 轉移到 WordPress, 架設在 NAS + DOCKER 環境)，這幾個月下來，也算累積了不少的心得 😀 要在 Linux 的世界裡打滾，最痛苦的就是安裝各種軟體了，只能說那真是地獄&#8230; @@，尤其是對於不熟 Linux 的人來說更是如此。現在有各種套件安裝的工具，向是 APT-GET 之類的，其實已經簡化很多了，但是難的在後頭，各種的 configuration 都要自己編 conf 檔，而每套系統用的語法都不一樣&#8230; 我不論是在 Coding 或是&#8230; <a href="http://columns.chicken-house.net/?p=543">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=9" rel="tag">BlogEngine.NET</a>, <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>, <a href="http://columns.chicken-house.net/?cat=32" rel="tag">Tips</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-507" class="post-507 post type-post status-publish format-standard has-post-thumbnail hentry category-writing category-3">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=507" rel="bookmark">Case Study: BlogEngine -> WordPress 大量(舊)網址轉址問題處理</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-11-06&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=507#respond">No Comments<span class="screen-reader-text"> on Case Study: BlogEngine -> WordPress 大量(舊)網址轉址問題處理</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=507" title="Case Study: BlogEngine -> WordPress 大量(舊)網址轉址問題處理" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/11/Wordpress-start-image1-176x176.jpg" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="Wordpress-start-image[1]" /></div>
						</a>
								<p>前情提要: 起因很簡單，上個月才把我的 BLOG 從 BlogEngine 轉移到 WordPress&#8230; 這種轉換系統一定會碰到的問題，就是新舊系統的 URL 格式一定不一樣的，不過好不容易累積起一些文章連結 (別人連到我的文章) 不處理的話，這些連結就失效了。算算文章數量，約 400 篇.. 統計一下每篇文章可能連到的格式，有 6 種，若不放掉每個連結，則有 400 x 6 = 2400 個連結要轉換.. 究竟，在 Apache 做這麼多網址轉換的動作，怎樣才是最理想的方法? 這就是這篇文章想探討的&#8230; 讓我們繼續看下去 😀 &nbsp; &nbsp; 到底有多少舊網址要轉換? 人家說做事要講究事實，開始動工前，先來了解一下到底有哪些情況需要轉址? 我之前用的 Blog 系統是 ASP.NET 寫的 BlogEngine 1.6, 算是老字號的 .NET 部落格了，先從我知道的開始: 預設的格式: 最基本的格式，按照日期 (年/月/日) 後面加上編碼過的文章標題。用我最常被引用的這篇當例子，像這樣: http://columns.chicken-house.net/post/2008/07/10/GoodProgrammer1.aspx  (這是第一類) 不過，不知哪個版本開始，多了&#8230; <a href="http://columns.chicken-house.net/?p=507">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>, <a href="http://columns.chicken-house.net/?cat=3" rel="tag">有的沒的</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-415" class="post-415 post type-post status-publish format-standard has-post-thumbnail hentry category-net category-net-core category-docker">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=415" rel="bookmark">同場加映: 用 Synology NAS 的 Docker 環境，執行 .NET Core CLR Console App</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-11-01&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=415#respond">No Comments<span class="screen-reader-text"> on 同場加映: 用 Synology NAS 的 Docker 環境，執行 .NET Core CLR Console App</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=415" title="同場加映: 用 Synology NAS 的 Docker 環境，執行 .NET Core CLR Console App" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/11/img_56358907f0c81-176x176.png" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="img_56358907f0c81" /></div>
						</a>
								<p>繼上一篇講完我落落長的研究過程後，這篇補上昨天想寫最後卻沒加進去的內容，就是一樣的動作改用我自己的 NAS 所提供的 Docker 環境來做 (官網)。試過之後只有一個感想&#8230; 果然買現成的實在輕鬆太多了 XD，如果不是很在意效能，只是想有個環境驗證看看，想避開整套 Linux 從無到有的 setup 過程的人可以試看看! 廢話上一篇都講過了，直接進入主題.. 這步驟跟昨天的比起來，實在是簡單太多了，這篇改一改就變成葉佩雯了，以後寫 ASPNET5 的人應該都去買台 NAS 才對&#8230; 不知以後會不會有 Visual Studio + NAS 同捆包? XD 以下是 step by step 的步驟: 開發環境準備: Core CLR 版 &#8220;Hello World !&#8221; 開啟 Visual Studio 2015, 新增專案。這邊要留意的是專案類型，不知 RTM 後會不會改.. 我是找 Visual C# / Web /&#8230; <a href="http://columns.chicken-house.net/?p=415">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=15" rel="tag">.NET</a>, <a href="http://columns.chicken-house.net/?cat=39" rel="tag">.Net Core</a>, <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-384" class="post-384 post type-post status-publish format-standard has-post-thumbnail hentry category-net category-net-core category-csharp category-docker category-writing">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=384" rel="bookmark">在 Docker 上面執行 .NET (CoreCLR) Console App</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-10-31&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=384#comments">2 Comments<span class="screen-reader-text"> on 在 Docker 上面執行 .NET (CoreCLR) Console App</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=384" title="在 Docker 上面執行 .NET (CoreCLR) Console App" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="159" src="http://columns.chicken-house.net/wp-content/uploads/2015/11/img_5634e81ed3baf-176x159.png" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="img_5634e81ed3baf" /></div>
						</a>
								<p>Microsoft 官方宣布能在 Linux 上面運行 .NET (v5) 應用程式.. 其實這已經不是什麼新聞了，去年 Microsoft TechEd 2014 North America 就正式的發布這個消息了，不過因為種種原因，去年看到這新聞的時候，只停留在 &#8220;看看&#8221; 的階段而已，直到現在時機成熟了才開始動手研究。一來是因為官方的開發工具 Visual Studio 2015 已經 RTM 了 (這麼大的軟體，實在不大想安裝 preview 版本).. 二來 Docker 用的很高興，NAS / Ubuntu Server 也都已經準備好，執行環境我也上手了.. 萬事俱備只欠東風，於是今天就趁周末，把 .NET Core 版的 &#8220;Hello World&#8221; 丟到 Docker 裡面執行的任務給搞定了 😀 Microsoft 自從新任 CEO Satya Nadella 上任後，宣布了一連串改變，我覺得對未來影響最大的就是 .NET Open&#8230; <a href="http://columns.chicken-house.net/?p=384">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=15" rel="tag">.NET</a>, <a href="http://columns.chicken-house.net/?cat=39" rel="tag">.Net Core</a>, <a href="http://columns.chicken-house.net/?cat=10" rel="tag">C#</a>, <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-375" class="post-375 post type-post status-publish format-standard has-post-thumbnail hentry category-docker category-writing category-3">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=375" rel="bookmark">終於搞定 Ubuntu Server 15.10 @@</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-10-24&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=375#respond">No Comments<span class="screen-reader-text"> on 終於搞定 Ubuntu Server 15.10 @@</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=375" title="終於搞定 Ubuntu Server 15.10 @@" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/11/img_5635a15757f39-176x176.png" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="img_5635a15757f39" /></div>
						</a>
								<p>原本只是想在 NAS 上簡單玩玩 Docker, 為了接下來的 ASP.NET 5 做準備.. 不過實在太好用，還沒開始做正事 (ASP.NET 5), 就先把原本的 BLOG 從 GoDaddy 的 hosting 搬回來放 NAS 了，順手也架了 reverse proxy &#8230; 現在 NAS Docker 有正式用途了, 而 NAS 的運算能力又很有限 (我的是 DS-412+, CPU 只是 atom d2700, 雙核而已, 1GB RAM), 裝沒幾個就跑開始擔心了，於是就開始想另外搞一個可以隨便玩得 docker engine 環境.. 其實 PC 上弄個 VM 是很容易啦，windows 10 內建的&#8230; <a href="http://columns.chicken-house.net/?p=375">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>, <a href="http://columns.chicken-house.net/?cat=3" rel="tag">有的沒的</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-339" class="post-339 post type-post status-publish format-standard has-post-thumbnail hentry category-docker category-tips category-writing category-3">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=339" rel="bookmark">Docker 初體驗 &#8211; Synology DSM 上面架設 WordPress / Redmine / Reverse Proxy</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2015-10-13&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=339#comments">2 Comments<span class="screen-reader-text"> on Docker 初體驗 &#8211; Synology DSM 上面架設 WordPress / Redmine / Reverse Proxy</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=339" title="Docker 初體驗 &#8211; Synology DSM 上面架設 WordPress / Redmine / Reverse Proxy" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2015/11/img_56358907f0c81-176x176.png" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="img_56358907f0c81" /></div>
						</a>
								<p>前言: 先讓我講一點前情提要 XD，想看安裝步驟的請自己跳到後面&#8230; 在買這台 NAS 之前 (Synology DS-412+), 我是自己在家裡弄了台 PC, 裝了一堆硬碟充當個人用 file server, 同時順便在裡面架了自己常用的網站，包含這部落格的前身 (BlogEngine)，還有自己用的 Visual SVN, 另外也架了 Linux VM 裝 Redmine 等等其他的東西.. 後來 PC 開始不聽話了，開始三不五時當機，心一橫，兩年多前就買了台 4Bays NAS 把 Server 換掉，頓時輕鬆許多&#8230; 只是 NAS 不比 Server, 慣用 Windows Server 的我一時找不到替代品，這些服務就一個一個搬家了。其中最重要的 BLOG，就搬到 GoDaddy 的免費 web hosting (有 IIS)，繼續在上面掛著.. 用過 Synology NAS 的大概都知道，它的特色就是&#8230; <a href="http://columns.chicken-house.net/?p=339">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=38" rel="tag">Docker</a>, <a href="http://columns.chicken-house.net/?cat=32" rel="tag">Tips</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>, <a href="http://columns.chicken-house.net/?cat=3" rel="tag">有的沒的</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-6" class="post-6 post type-post status-publish format-standard hentry category-net category-aspnet category-azure category-csharp category-msdn category-tips category-thread category-writing">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=6" rel="bookmark">處理大型資料的技巧 – Async / Await</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2013-04-14&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=6#comments">6 Comments<span class="screen-reader-text"> on 處理大型資料的技巧 – Async / Await</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
								<p>原本只是很單純的把大型檔案 (100mb 左右的 video) 放到 Azure Storage 的 BLOB 而已，結果效能一直不如預期般的理想。才又把過去的 thread 技巧搬出來用，結果又花了點時間改寫，用 async / await 的效果還更漂亮一點，於是就多了這篇文章 😀 &nbsp; 其實這次要處理的問題很單純，就是 WEB 要從 Azure Storage Blob 讀取大型檔案，處理前端的認證授權之後，將檔案做編碼處理後直接從 Response 輸出。主要要解決的問題是效能過於糟糕&#8230; 透過層層的處理，效能 (3.5 Mbps) 跟直接從 Azure Storage 取得檔案 (7.3 Mbps) 相比只剩一半左右.. 過程中監控過 SERVER 的 CPU，頻寬等等，看來這些都不是效能的瓶頸。 &nbsp; 為了簡化問題，我另外寫了個簡單的 Sample Code, 來呈現這問題。最後找出來的原因是，程式碼就是單純的跑 while loop, 不斷的把檔案內容讀進 buffer&#8230; <a href="http://columns.chicken-house.net/?p=6">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=15" rel="tag">.NET</a>, <a href="http://columns.chicken-house.net/?cat=6" rel="tag">ASP.NET</a>, <a href="http://columns.chicken-house.net/?cat=7" rel="tag">AZURE</a>, <a href="http://columns.chicken-house.net/?cat=10" rel="tag">C#</a>, <a href="http://columns.chicken-house.net/?cat=16" rel="tag">MSDN</a>, <a href="http://columns.chicken-house.net/?cat=32" rel="tag">Tips</a>, <a href="http://columns.chicken-house.net/?cat=21" rel="tag">多執行緒</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-7" class="post-7 post type-post status-publish format-standard hentry category-aspnet category-azure category-csharp category-art category-writing">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=7" rel="bookmark">[Azure] Multi-Tenancy Application #3, (資料層)實作案例</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2013-03-21&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=7#respond">No Comments<span class="screen-reader-text"> on [Azure] Multi-Tenancy Application #3, (資料層)實作案例</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
								<p>&#160; 上篇花了一堆口水，說明各種 data layer 的設計方式，這回不噴口水了，直接來實作&#8230;。開始前先說明一下我的期望，我先假設各位都用過 Entity Framework 或是這類的 solution, 我希望在 data context 這層，就能處理掉所有隔離 tenancy data 的問題，也就是我可以用一般 application 的開發概念來開發 multi-tenancy 的 application。換另一個說法，我希望在一個 storage 內，模擬出讓每個 tenancy 都有獨立的 storage 可運用的介面。 Web 的這部份也是一樣的概念，我希望在網址這層，邏輯上就讓每個 tenancy 有獨立的 URL (虛擬目錄)。有這種網址上自行客製的需求，當然是非 MVC 不可，因此這次會在 MVC 的 Routing 上動手腳，除了 controller 及 action 之外，能夠再切出一層 client 出來，讓 application 也像是能夠虛擬化一樣，每個用戶可擁有自己的 partition。 最後當然也希望 WEB&#8230; <a href="http://columns.chicken-house.net/?p=7">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=6" rel="tag">ASP.NET</a>, <a href="http://columns.chicken-house.net/?cat=7" rel="tag">AZURE</a>, <a href="http://columns.chicken-house.net/?cat=10" rel="tag">C#</a>, <a href="http://columns.chicken-house.net/?cat=33" rel="tag">作品集</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
							
	<article id="post-8" class="post-8 post type-post status-publish format-standard has-post-thumbnail hentry category-azure category-msdn category-sql category-writing">
				
		<header class="entry-header">
						<h1 class="entry-title">
				<a href="http://columns.chicken-house.net/?p=8" rel="bookmark">[Azure] Multi-Tenancy Application #2, 資料層的選擇</a>
			</h1>
						
			<!-- Author, date and comments -->
            <div class='sub-title'>
				<div class="autor-fecha">
                	<i class="fa fa-user"></i> <a href='http://columns.chicken-house.net/?author=1'>Andrew Wu</a>&nbsp;&nbsp;
                 	<i class="fa fa-calendar-o"></i> 2013-03-17&nbsp;&nbsp;<i class="fa fa-comment-o"></i> <a href="http://columns.chicken-house.net/?p=8#respond">No Comments<span class="screen-reader-text"> on [Azure] Multi-Tenancy Application #2, 資料層的選擇</span></a>               </div>
                <!--<div class="popup-comments"> </div>-->
            </div><!-- .sub-title -->
		</header><!-- .entry-header -->
		
		<!-- Subtitle widget area -->
		
				
			<div class="excerpt-wrapper"><!-- Excerpt -->
										<a href="http://columns.chicken-house.net/?p=8" title="[Azure] Multi-Tenancy Application #2, 資料層的選擇" rel="bookmark" >
						<div class="wrapper-excerpt-thumbnail"><img width="176" height="176" src="http://columns.chicken-house.net/wp-content/uploads/2013/03/azure-176x176.jpg" class="attachment-excerpt-thumbnail-zg-176 wp-post-image" alt="azure" /></div>
						</a>
								<p>&nbsp; 其實上一篇設計概念還沒寫完，只不過很晚了想睡覺就先貼了，本篇繼續.. 之前介紹 MSDN 的那篇文章，作者很精確的分析了資料層面的三種設計方式。不過仔細研究之後，真正能搬上台面的，也只有最後一種 &ldquo;Shared Schema&rdquo; 而已。我從系統實際運作的角度，來分別考量這三種方式的可行性，各位就知道我為何這樣說了..。上篇介紹了各種可行的方案，這篇則會說明我認為的最佳方案。 我的看法很簡單，除非你的 Multi-Tenancy 的 &ldquo;Tenancy&rdquo; 規模只有幾十個的數量，否則 Separated DB / Separated Schema 都不適用，因為這兩種方式都是依賴把資料放在不同的 DB 或是 TABLE，來達到隔離的目的。並不是說這樣不好，而是這些都是 &#8220;過渡&#8221; 的作法，讓傳統的 application 不需要大符修改就能化身變為 Multi-Tenancy 的應用系統。而且 database / table 的數量都是有限制的，無法無限制的擴張。同時，以系統設計的角度來看，在系統執行的過程中，動態去建立 DB 或是建立 TABLE 也不是個很好的作法，在我眼裡都會覺的這是禁忌 XD。 當你辛辛苦苦建立了 SaaS 服務，總不可能只服務兩三隻小貓吧? 因此下列的分析會用使用量及 DB 各種功能的理論上限來做簡單的評估。Multi-Tenancy 的用戶數量，就抓個 50000 好了，至於每個用戶的 profile 我也依過去的經驗大致預估看看。依這些假設，就可以來評估各種資料層的處理方式，會有啥問題。 以下是一般的應用，每個用戶需要的資料規模 (假設):&#8230; <a href="http://columns.chicken-house.net/?p=8">Read more &raquo;</a></p>
			</div><!-- .excerpt-wrapper -->
		
		
		<footer class="entry-meta">
			<!-- Post end widget area -->
						
						<div class="entry-meta-term">
			<span class="term-icon"><i class="fa fa-folder-open"></i></span> <a href="http://columns.chicken-house.net/?cat=7" rel="tag">AZURE</a>, <a href="http://columns.chicken-house.net/?cat=16" rel="tag">MSDN</a>, <a href="http://columns.chicken-house.net/?cat=20" rel="tag">SQL</a>, <a href="http://columns.chicken-house.net/?cat=34" rel="tag">技術隨筆</a>			
						
			<div style="float:right;"></div>
			</div>
			
						
					</footer><!-- .entry-meta -->
	</article><!-- #post -->
					<nav id="nav-below" class="navigation" role="navigation">
			<h3 class="assistive-text">Post navigation</h3>
			<div class="wrapper-navigation-below">
			<div class="nav-previous"><a href="http://columns.chicken-house.net/syndication.axd/?paged=2" ><span class="meta-nav">&larr;</span> Older posts</a></div>
			<div class="nav-next"></div>
			</div>
		</nav><!-- #nav-below .navigation -->
	
		
		</div><!-- #content -->
	</div><!-- #primary -->


			<div id="secondary" class="widget-area" role="complementary">
			<aside id="search-2" class="widget widget_search">	<div class="wrapper-search-form">
		<form method="get" id="searchform" action="http://columns.chicken-house.net/">
			<label for="s" class="assistive-text">Search</label>
			<input type="text" class="txt-search-n" name="s" id="s" />
			<input type="submit" name="submit" id="btn-search-n" value="Search" />
		</form>
    </div></aside>		<aside id="recent-posts-2" class="widget widget_recent_entries">		<h3 class="widget-title">Recent Posts</h3>		<ul>
					<li>
				<a href="http://columns.chicken-house.net/?p=560">[.NET Core] Running .NET Core RC1 on Docker &#8211; DOTNET CLI</a>
						</li>
					<li>
				<a href="http://columns.chicken-house.net/?p=543">CaseStudy: 網站重構, NGINX (REVERSE PROXY) + 文章連結轉址 (Map)</a>
						</li>
					<li>
				<a href="http://columns.chicken-house.net/?p=507">Case Study: BlogEngine -> WordPress 大量(舊)網址轉址問題處理</a>
						</li>
					<li>
				<a href="http://columns.chicken-house.net/?p=415">同場加映: 用 Synology NAS 的 Docker 環境，執行 .NET Core CLR Console App</a>
						</li>
					<li>
				<a href="http://columns.chicken-house.net/?p=384">在 Docker 上面執行 .NET (CoreCLR) Console App</a>
						</li>
				</ul>
		</aside><aside id="recent-comments-2" class="widget widget_recent_comments"><h3 class="widget-title">Recent Comments</h3><ul id="recentcomments"><li class="recentcomments"><span class="comment-author-link">訪客</span> on <a href="http://columns.chicken-house.net/?p=68#comment-670">[C#: yield return] #1. How It Work ?</a></li><li class="recentcomments"><span class="comment-author-link"><a href='http://changyuheng.me/' rel='external nofollow' class='url'>changyuheng</a></span> on <a href="http://columns.chicken-house.net/?p=6#comment-669">處理大型資料的技巧 – Async / Await</a></li><li class="recentcomments"><span class="comment-author-link"><a href='http://www.facebook.com/chicken.wu' rel='external nofollow' class='url'>Andrew Wu</a></span> on <a href="http://columns.chicken-house.net/?p=384#comment-665">在 Docker 上面執行 .NET (CoreCLR) Console App</a></li><li class="recentcomments"><span class="comment-author-link"><a href='http://nginx.tw' rel='external nofollow' class='url'>sugarwu</a></span> on <a href="http://columns.chicken-house.net/?p=384#comment-664">在 Docker 上面執行 .NET (CoreCLR) Console App</a></li><li class="recentcomments"><span class="comment-author-link">Jed</span> on <a href="http://columns.chicken-house.net/?p=6#comment-662">處理大型資料的技巧 – Async / Await</a></li></ul></aside><aside id="archives-2" class="widget widget_archive"><h3 class="widget-title">Archives</h3>		<ul>
	<li><a href='http://columns.chicken-house.net/?m=201512'>December 2015</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201511'>November 2015</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201510'>October 2015</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201304'>April 2013</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201303'>March 2013</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201110'>October 2011</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201101'>January 2011</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201011'>November 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201007'>July 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201005'>May 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201004'>April 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201003'>March 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=201002'>February 2010</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200912'>December 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200911'>November 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200910'>October 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200909'>September 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200908'>August 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200907'>July 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200905'>May 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200904'>April 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200903'>March 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200901'>January 2009</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200812'>December 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200811'>November 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200810'>October 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200809'>September 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200808'>August 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200807'>July 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200806'>June 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200805'>May 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200804'>April 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200803'>March 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200802'>February 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200801'>January 2008</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200712'>December 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200711'>November 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200710'>October 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200709'>September 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200708'>August 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200707'>July 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200706'>June 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200705'>May 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200704'>April 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200703'>March 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200702'>February 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200701'>January 2007</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200612'>December 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200611'>November 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200610'>October 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200609'>September 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200608'>August 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200607'>July 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200605'>May 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200602'>February 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200601'>January 2006</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200512'>December 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200510'>October 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200508'>August 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200507'>July 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200506'>June 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200504'>April 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200503'>March 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200502'>February 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200501'>January 2005</a></li>
	<li><a href='http://columns.chicken-house.net/?m=200412'>December 2004</a></li>
		</ul>
</aside><aside id="categories-2" class="widget widget_categories"><h3 class="widget-title">Categories</h3>		<ul>
	<li class="cat-item cat-item-15"><a href="http://columns.chicken-house.net/?cat=15" >.NET</a>
</li>
	<li class="cat-item cat-item-39"><a href="http://columns.chicken-house.net/?cat=39" >.Net Core</a>
</li>
	<li class="cat-item cat-item-6"><a href="http://columns.chicken-house.net/?cat=6" >ASP.NET</a>
</li>
	<li class="cat-item cat-item-7"><a href="http://columns.chicken-house.net/?cat=7" >AZURE</a>
</li>
	<li class="cat-item cat-item-8"><a href="http://columns.chicken-house.net/?cat=8" >BlogEngine Extension</a>
</li>
	<li class="cat-item cat-item-9"><a href="http://columns.chicken-house.net/?cat=9" >BlogEngine.NET</a>
</li>
	<li class="cat-item cat-item-10"><a href="http://columns.chicken-house.net/?cat=10" >C#</a>
</li>
	<li class="cat-item cat-item-11"><a href="http://columns.chicken-house.net/?cat=11" >Community Server</a>
</li>
	<li class="cat-item cat-item-38"><a href="http://columns.chicken-house.net/?cat=38" >Docker</a>
</li>
	<li class="cat-item cat-item-12"><a href="http://columns.chicken-house.net/?cat=12" >HTML/CSS</a>
</li>
	<li class="cat-item cat-item-16"><a href="http://columns.chicken-house.net/?cat=16" >MSDN</a>
</li>
	<li class="cat-item cat-item-19"><a href="http://columns.chicken-house.net/?cat=19" >RUN! PC</a>
</li>
	<li class="cat-item cat-item-20"><a href="http://columns.chicken-house.net/?cat=20" >SQL</a>
</li>
	<li class="cat-item cat-item-32"><a href="http://columns.chicken-house.net/?cat=32" >Tips</a>
</li>
	<li class="cat-item cat-item-24"><a href="http://columns.chicken-house.net/?cat=24" >Transactional NTFS</a>
</li>
	<li class="cat-item cat-item-25"><a href="http://columns.chicken-house.net/?cat=25" >WPF</a>
</li>
	<li class="cat-item cat-item-33"><a href="http://columns.chicken-house.net/?cat=33" >作品集</a>
</li>
	<li class="cat-item cat-item-29"><a href="http://columns.chicken-house.net/?cat=29" >作業系統</a>
</li>
	<li class="cat-item cat-item-21"><a href="http://columns.chicken-house.net/?cat=21" >多執行緒</a>
</li>
	<li class="cat-item cat-item-31"><a href="http://columns.chicken-house.net/?cat=31" >家人</a>
</li>
	<li class="cat-item cat-item-2"><a href="http://columns.chicken-house.net/?cat=2" >專欄</a>
</li>
	<li class="cat-item cat-item-34"><a href="http://columns.chicken-house.net/?cat=34" >技術隨筆</a>
</li>
	<li class="cat-item cat-item-35"><a href="http://columns.chicken-house.net/?cat=35" >敗家</a>
</li>
	<li class="cat-item cat-item-3"><a href="http://columns.chicken-house.net/?cat=3" >有的沒的</a>
</li>
	<li class="cat-item cat-item-1"><a href="http://columns.chicken-house.net/?cat=1" >未分類</a>
</li>
	<li class="cat-item cat-item-36"><a href="http://columns.chicken-house.net/?cat=36" >水電工</a>
</li>
	<li class="cat-item cat-item-28"><a href="http://columns.chicken-house.net/?cat=28" >火大</a>
</li>
	<li class="cat-item cat-item-37"><a href="http://columns.chicken-house.net/?cat=37" >物件導向</a>
</li>
	<li class="cat-item cat-item-30"><a href="http://columns.chicken-house.net/?cat=30" >當年勇</a>
</li>
		</ul>
</aside><aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">Meta</h3>			<ul>
						<li><a href="http://columns.chicken-house.net/wp-login.php">Log in</a></li>
			<li><a href="http://columns.chicken-house.net/?feed=rss2">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li>
			<li><a href="http://columns.chicken-house.net/?feed=comments-rss2">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li>
<li><a href="https://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li>			</ul>
</aside>		</div><!-- #secondary -->
		</div><!-- #main .wrapper -->
	
</div><!-- #page -->
	
	<footer id="colophon" role="contentinfo">
	<div class="social-icon-wrapper">
							<a href="https://twitter.com/" title="Twitter" target="_blank"><i class="fa fa-twitter"></i></a> 
						
							<a href="https://facebook.com/" title="Facebook" target="_blank"><i class="fa fa-facebook"></i></a>
						
							<a href="https://plus.google.com/" title="Google+" target="_blank"><i class="fa fa-google-plus"></i></a>
						
					 		<a href="https://linkedin.com/" title="LinkedIn" target="_blank"><i class="fa fa-linkedin"></i></a>
						
					 		<a href="https://youtube.com/" title="YouTube" target="_blank"><i class="fa fa-youtube"></i></a>
						
					 		<a href="http://instagram.com/" title="Instagram" target="_blank"><i class="fa fa-instagram"></i></a>
						
					 		<a href="https://pinterest.com/" title="Pinterest" target="_blank"><i class="fa fa-pinterest"></i></a>
						
							<a class="rss" href="http://wordpress.org/" title="Feed RSS" target="_blank"><i class="fa fa-rss"></i></a>			
					</div><!-- .social-icon-wrapper -->
		<hr class="hr-oscura" />
		<div class="site-info">
			<div class="credits-left">Copyright 2015</div>
			<div class="credits-center">Footer text center</div>
			<div class="credits-right">
			<a href="http://galussothemes.com/wordpress-themes/rubbersoul">RubberSoul</a> by GalussoThemes.com<br />
			Powered by<a href="https://wordpress.org/" title="Semantic Personal Publishing Platform"> WordPress</a>
			</div>
		</div><!-- .site-info -->
	</footer><!-- #colophon -->
	
			<a href='#inicio_pagina' title='Back to top'><div class="ir-arriba"><i class="fa fa-chevron-up"></i></div></a>
				<div id="fb-root"></div>
			<script>(function(d, s, id) {
				var js, fjs = d.getElementsByTagName(s)[0];
				if (d.getElementById(id)) return;
				js = d.createElement(s); js.id = id;
				js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=1443946719181573&version=v2.0";
				fjs.parentNode.insertBefore(js, fjs);
				}(document, 'script', 'facebook-jssdk'));
			</script>
		
<script type='text/javascript'>
/* <![CDATA[ */
r3f5x9JS=escape(document['referrer']);
hf4N='7e9dad3861eae8f24c99b226d644be2a';
hf4V='81f3076dd81528544257abbb8e16eeaa';
jQuery(document).ready(function($){var e="#commentform, .comment-respond form, .comment-form, #lostpasswordform, #registerform, #loginform, #login_form, #wpss_contact_form";$(e).submit(function(){$("<input>").attr("type","hidden").attr("name","r3f5x9JS").attr("value",r3f5x9JS).appendTo(e);$("<input>").attr("type","hidden").attr("name",hf4N).attr("value",hf4V).appendTo(e);return true;});$("#comment").attr({minlength:"15",maxlength:"15360"})});
/* ]]> */
</script> 
<script type='text/javascript' src='http://columns.chicken-house.net/wp-content/themes/rubbersoul/js/navigation.js?ver=20140711'></script>
<script type='text/javascript' src='http://columns.chicken-house.net/wp-content/themes/rubbersoul/js/rsoul-toggle-search.js?ver=1.5.7'></script>
<script type='text/javascript' src='http://columns.chicken-house.net/wp-content/plugins/wp-spamshield/js/jscripts-ftr-min.js'></script>
			
</body>
</html>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: localhost @ 2015-12-08 21:47:03 by W3 Total Cache -->