From ec7a81d6fdc6f5e8165f050d89bf50fffb4b45f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A9=E6=A0=8B=E8=83=9C?= Date: Mon, 24 Jul 2023 09:55:59 +0800 Subject: [PATCH] Site updated: 2023-07-24 09:55:58 --- baidusitemap.xml | 4 ++-- css/main.css | 4 ++-- lib/fancybox/source/helpers/jquery.fancybox-buttons.css | 2 +- lib/fancybox/source/helpers/jquery.fancybox-thumbs.css | 2 +- lib/fancybox/source/jquery.fancybox.css | 2 +- lib/font-awesome/css/font-awesome.css | 2 +- post-sitemap.xml | 4 ++-- search.xml | 8 ++++---- tag-sitemap.xml | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/baidusitemap.xml b/baidusitemap.xml index 865212d737..27931ead29 100644 --- a/baidusitemap.xml +++ b/baidusitemap.xml @@ -337,11 +337,11 @@ 2020-04-03 - https://mds1455975151.github.io/archives/a946f55.html + https://mds1455975151.github.io/archives/b791b27f.html 2020-04-03 - https://mds1455975151.github.io/archives/b791b27f.html + https://mds1455975151.github.io/archives/a946f55.html 2020-04-03 diff --git a/css/main.css b/css/main.css index 4681b97653..4f5b6827f7 100644 --- a/css/main.css +++ b/css/main.css @@ -1,3 +1,3 @@ -/* build time:Mon Jul 24 2023 09:52:53 GMT+0800 (中国标准时间)*/ -html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}::selection{background:#262a30;color:#fff}body{position:relative;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:2;color:#555;background:#fff}@media (max-width:767px){body{padding-right:0!important}}@media (min-width:768px) and (max-width:991px){body{padding-right:0!important}}@media (min-width:1600px){body{font-size:16px}}h1,h2,h3,h4,h5,h6{margin:0;padding:0;font-weight:700;line-height:1.5;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}h2,h3,h4,h5,h6{margin:20px 0 15px}h1{font-size:24px}@media (max-width:767px){h1{font-size:20px}}h2{font-size:22px}@media (max-width:767px){h2{font-size:18px}}h3{font-size:20px}@media (max-width:767px){h3{font-size:16px}}h4{font-size:18px}@media (max-width:767px){h4{font-size:14px}}h5{font-size:16px}@media (max-width:767px){h5{font-size:12px}}h6{font-size:14px}@media (max-width:767px){h6{font-size:10px}}p{margin:0 0 25px 0}a{color:#555;text-decoration:none;border-bottom:1px solid #999;word-wrap:break-word}a:hover{color:#222;border-bottom-color:#222}blockquote{margin:0;padding:0}img{display:block;margin:auto;max-width:100%;height:auto}hr{margin:40px 0;height:3px;border:none;background-color:#ddd;background-image:repeating-linear-gradient(-45deg,#fff,#fff 4px,transparent 4px,transparent 8px)}blockquote{padding:0 15px;color:#666;border-left:4px solid #ddd}blockquote cite::before{content:"-";padding:0 5px}dt{font-weight:700}dd{margin:0;padding:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.center-block{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pullquote{width:45%}.pullquote.left{float:left;margin-left:5px;margin-right:10px}.pullquote.right{float:right;margin-left:10px;margin-right:5px}.affix.affix.affix{position:fixed}.translation{margin-top:-20px;font-size:14px;color:#999}.scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.use-motion .motion-element{opacity:0}table{margin:20px 0;width:100%;border-collapse:collapse;border-spacing:0;border:1px solid #ddd;font-size:14px;table-layout:fixed;word-wrap:break-all}table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}table>tbody>tr:hover{background-color:#f5f5f5}caption,td,th{padding:8px;text-align:left;vertical-align:middle;font-weight:400}td,th{border-bottom:3px solid #ddd;border-right:1px solid #eee}th{padding-bottom:10px;font-weight:700}td{border-bottom-width:1px}body,html{height:100%}.container{position:relative;min-height:100%}.header-inner{margin:0 auto;padding:100px 0 70px;width:700px}@media (min-width:1600px){.container .header-inner{width:900px}}.main{padding-bottom:150px}.main-inner{margin:0 auto;width:700px}@media (min-width:1600px){.container .main-inner{width:900px}}.footer{position:absolute;left:0;bottom:0;width:100%;min-height:50px}.footer-inner{box-sizing:border-box;margin:20px auto;width:700px}@media (min-width:1600px){.container .footer-inner{width:900px}}.highlight,pre{overflow:auto;margin:20px 0;padding:0;font-size:13px;color:#4d4d4c;background:#f7f7f7;line-height:1.6}code,pre{font-family:consolas,Menlo,"PingFang SC","Microsoft YaHei",monospace}code{padding:2px 4px;word-wrap:break-word;color:#555;background:#eee;border-radius:3px;font-size:13px}pre code{padding:0;color:#4d4d4c;background:0 0;text-shadow:none}.highlight{border-radius:1px}.highlight pre{border:none;margin:0;padding:10px 0}.highlight table{margin:0;width:auto;border:none}.highlight td{border:none;padding:0}.highlight figcaption{font-size:1em;color:#4d4d4c;line-height:1em;margin-bottom:1em}.highlight figcaption:after,.highlight figcaption:before{content:" ";display:table}.highlight figcaption:after{clear:both}.highlight figcaption a{float:right;color:#4d4d4c}.highlight figcaption a:hover{border-bottom-color:#4d4d4c}.highlight .gutter pre{padding-left:10px;padding-right:10px;color:#869194;text-align:right;background-color:#eff2f3}.highlight .code pre{padding-left:10px;padding-right:10px;background-color:#f7f7f7}.highlight .line{height:20px}.gutter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gist table{width:auto}.gist table td{border:none}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .meta{color:#8959a8}pre .comment{color:#8e908c}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:#c82829}pre .built_in,pre .command,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:#f5871f}pre .css .rules .attribute,pre .formula,pre .header,pre .inheritance,pre .number,pre .ruby .class .title,pre .ruby .symbol,pre .special,pre .string,pre .value,pre .xml .cdata{color:#718c00}pre .css .hexcolor,pre .title{color:#3e999f}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:#4271ae}pre .javascript .function,pre .keyword{color:#8959a8}.full-image.full-image.full-image{border:none;max-width:100%;width:auto;margin:20px auto}@media (min-width:992px){.full-image.full-image.full-image{max-width:none;width:110%;margin:25px -5%}}.blockquote-center,.page-home .post-type-quote blockquote,.page-post-detail .post-type-quote blockquote{position:relative;margin:40px 0;padding:0;border-left:none;text-align:center}.blockquote-center::after,.blockquote-center::before,.page-home .post-type-quote blockquote::after,.page-home .post-type-quote blockquote::before,.page-post-detail .post-type-quote blockquote::after,.page-post-detail .post-type-quote blockquote::before{position:absolute;content:' ';display:block;width:100%;height:24px;opacity:.2;background-repeat:no-repeat;background-position:0 -6px;background-size:22px 22px}.blockquote-center::before,.page-home .post-type-quote blockquote::before,.page-post-detail .post-type-quote blockquote::before{top:-20px;background-image:url(../images/quote-l.svg);border-top:1px solid #ccc}.blockquote-center::after,.page-home .post-type-quote blockquote::after,.page-post-detail .post-type-quote blockquote::after{bottom:-20px;background-image:url(../images/quote-r.svg);border-bottom:1px solid #ccc;background-position:100% 8px}.blockquote-center div,.blockquote-center p,.page-home .post-type-quote blockquote div,.page-home .post-type-quote blockquote p,.page-post-detail .post-type-quote blockquote div,.page-post-detail .post-type-quote blockquote p{text-align:center}.post .post-body .group-picture img{box-sizing:border-box;padding:0 3px;border:none}.post .group-picture-row{overflow:hidden;margin-top:6px}.post .group-picture-row:first-child{margin-top:0}.post .group-picture-column{float:left}.page-post-detail .post-body .group-picture-column{float:none;margin-top:10px;width:auto!important}.page-post-detail .post-body .group-picture-column img{margin:0 auto}.page-archive .group-picture-container{overflow:hidden}.page-archive .group-picture-row{float:left}.page-archive .group-picture-row:first-child{margin-top:6px}.page-archive .group-picture-column{max-width:150px;max-height:150px}.note{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px}.note h2,.note h3,.note h4,.note h5,.note h6{margin-top:0;margin-bottom:5px}.note p:last-child{margin-bottom:0}.note code{border-radius:3px}.note+.note{margin-top:-5px}.default{border-left-color:#777}.default h2,.default h3,.default h4,.default h5,.default h6{color:#777}.primary{border-left-color:#428bca}.primary h2,.primary h3,.primary h4,.primary h5,.primary h6{color:#428bca}.success{border-left-color:#5cb85c}.success h2,.success h3,.success h4,.success h5,.success h6{color:#5cb85c}.danger{border-left-color:#d9534f}.danger h2,.danger h3,.danger h4,.danger h5,.danger h6{color:#d9534f}.warning{border-left-color:#f0ad4e}.warning h2,.warning h3,.warning h4,.warning h5,.warning h6{color:#f0ad4e}.info{border-left-color:#5bc0de}.info h2,.info h3,.info h4,.info h5,.info h6{color:#5bc0de}.exturl{background-color:transparent;cursor:pointer;border-bottom:1px solid #999}.exturl .fa{font-size:14px}.exturl:active,.exturl:hover{outline:0;color:#222;border-bottom-color:#222}.btn{display:inline-block;padding:0 20px;font-size:14px;color:#fff;background:#222;border:2px solid #222;text-decoration:none;border-radius:0;transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.btn:hover,.post-button .btn:hover{border-color:#222;color:#222;background:#fff}.btn-bar{display:block;width:22px;height:2px;background:#555;border-radius:1px}.btn-bar+.btn-bar{margin-top:4px}.pagination{margin:120px 0 40px;text-align:center;border-top:1px solid #eee}.page-number-basic,.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{display:inline-block;position:relative;top:-1px;margin:0 10px;padding:0 10px;line-height:30px}@media (max-width:767px){.page-number-basic,.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{margin:0 5px}}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:0;border-top:1px solid #eee;transition-property:border-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-top-color:#222}.pagination .space{padding:0;margin:0}.pagination .prev{margin-left:0}.pagination .next{margin-right:0}.pagination .page-number.current{color:#fff;background:#ccc;border-top-color:#ccc}@media (max-width:767px){.pagination{border-top:none}.pagination .next,.pagination .page-number,.pagination .prev{margin-bottom:10px;border-top:0;border-bottom:1px solid #eee}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-bottom-color:#222}}.comments{margin:60px 20px 0}.tag-cloud{text-align:center}.tag-cloud a{display:inline-block;margin:10px}.back-to-top{box-sizing:border-box;position:fixed;bottom:-100px;right:30px;z-index:1050;padding:0 6px;width:24px;background:#222;font-size:12px;opacity:1;color:#fff;cursor:pointer;text-align:center;-webkit-transform:translateZ(0);transition-property:bottom;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}@media (max-width:767px){.back-to-top{display:none}}@media (min-width:768px) and (max-width:991px){.back-to-top{display:none}}.back-to-top.back-to-top-on{bottom:19px}.header{background:#fff}.header-inner{position:relative}.headband{height:3px;background:#222}.site-meta{margin:0;text-align:left}@media (max-width:767px){.site-meta{text-align:center}}.brand{position:relative;display:inline-block;padding:0 40px;color:#222;background:#222;border-bottom:none}.brand:hover{color:#222}.logo{display:inline-block;margin-right:5px;line-height:36px;vertical-align:top}.site-title{display:inline-block;vertical-align:top;line-height:36px;font-size:20px;font-weight:400;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}.site-subtitle{margin-top:10px;font-size:13px;color:#999}.use-motion .brand{opacity:0}.use-motion .logo,.use-motion .site-subtitle,.use-motion .site-title{opacity:0;position:relative;top:-10px}.site-nav-toggle{display:none;position:absolute;top:10px;left:10px}@media (max-width:767px){.site-nav-toggle{display:block}}.site-nav-toggle button{margin-top:2px;padding:9px 10px;background:0 0;border:none}@media (max-width:767px){.site-nav{display:none;margin:0 -10px;padding:0 10px;clear:both;border-top:1px solid #ddd}}@media (min-width:768px) and (max-width:991px){.site-nav{display:block!important}}@media (min-width:992px){.site-nav{display:block!important}}.menu{margin-top:20px;padding-left:0;text-align:center}.menu .menu-item{display:inline-block;margin:0 10px;list-style:none}@media screen and (max-width:767px){.menu .menu-item{margin-top:10px}}.menu .menu-item a{display:block;font-size:13px;line-height:inherit;border-bottom:1px solid transparent;transition-property:border-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.menu .menu-item a:hover{border-bottom-color:#222}.menu .menu-item .fa{margin-right:5px}.use-motion .menu-item{opacity:0}.post-body{font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}@media (max-width:767px){.post-body{word-break:break-word}}.post-body .fancybox img{display:block!important;margin:0 auto;cursor:pointer;cursor:zoom-in;cursor:-webkit-zoom-in}.post-body .figure .caption,.post-body .image-caption{margin:10px auto 15px;text-align:center;font-size:14px;color:#999;font-weight:700;line-height:1}.post-sticky-flag{display:inline-block;font-size:16px;-ms-transform:rotate(30deg);-webkit-transform:rotate(30deg);-moz-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}.posts-expand{padding-top:40px}@media (max-width:767px){.posts-expand{margin:0 20px}.post-body .highlight,.post-body pre{padding:10px}.post-body .highlight .gutter pre,.post-body pre .gutter pre{padding-right:10px}}@media (min-width:992px){.posts-expand .post-body{text-align:justify}}.posts-expand .post-body h2,.posts-expand .post-body h3,.posts-expand .post-body h4,.posts-expand .post-body h5,.posts-expand .post-body h6{padding-top:10px}.posts-expand .post-body h2 .header-anchor,.posts-expand .post-body h3 .header-anchor,.posts-expand .post-body h4 .header-anchor,.posts-expand .post-body h5 .header-anchor,.posts-expand .post-body h6 .header-anchor{float:right;margin-left:10px;color:#ccc;border-bottom-style:none;visibility:hidden}.posts-expand .post-body h2 .header-anchor:hover,.posts-expand .post-body h3 .header-anchor:hover,.posts-expand .post-body h4 .header-anchor:hover,.posts-expand .post-body h5 .header-anchor:hover,.posts-expand .post-body h6 .header-anchor:hover{color:inherit}.posts-expand .post-body h2:hover .header-anchor,.posts-expand .post-body h3:hover .header-anchor,.posts-expand .post-body h4:hover .header-anchor,.posts-expand .post-body h5:hover .header-anchor,.posts-expand .post-body h6:hover .header-anchor{visibility:visible}.posts-expand .post-body ul li{list-style:circle}.posts-expand .post-body img{box-sizing:border-box;margin:auto;padding:3px;border:1px solid #ddd}.posts-expand .fancybox img{margin:0 auto}@media (max-width:767px){.posts-collapse{margin:0 20px}.posts-collapse .post-meta,.posts-collapse .post-title{display:block;width:auto;text-align:left}}.posts-collapse{position:relative;z-index:1010;margin-left:0}.posts-collapse::after{content:" ";position:absolute;top:20px;left:0;margin-left:-2px;width:4px;height:100%;background:#f5f5f5;z-index:-1}@media (max-width:767px){.posts-collapse{margin:0 20px}}.posts-collapse .collection-title{position:relative;margin:60px 0}.posts-collapse .collection-title h2{margin-left:20px}.posts-collapse .collection-title small{color:#bbb}.posts-collapse .collection-title::before{content:" ";position:absolute;left:0;top:50%;margin-left:-4px;margin-top:-4px;width:8px;height:8px;background:#bbb;border-radius:50%}.posts-collapse .post{margin:30px 0}.posts-collapse .post-header{position:relative;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:border;border-bottom:1px dashed #ccc}.posts-collapse .post-header::before{content:" ";position:absolute;left:0;top:12px;width:6px;height:6px;margin-left:-4px;background:#bbb;border-radius:50%;border:1px solid #fff;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:background}.posts-collapse .post-header:hover{border-bottom-color:#666}.posts-collapse .post-header:hover::before{background:#222}.posts-collapse .post-meta{position:absolute;font-size:12px;left:20px;top:5px}.posts-collapse .post-comments-count{display:none}.posts-collapse .post-title{margin-left:60px;font-size:16px;font-weight:400;line-height:inherit}.posts-collapse .post-title::after{margin-left:3px;opacity:.6}.posts-collapse .post-title a{color:#666;border-bottom:none}.page-home .post-type-quote .post-header,.page-home .post-type-quote .post-tags,.page-post-detail .post-type-quote .post-header,.page-post-detail .post-type-quote .post-tags{display:none}.posts-expand .post-title{font-size:26px;text-align:center;word-break:break-word;font-weight:400}@media (max-width:767px){.posts-expand .post-title{font-size:22px}}.posts-expand .post-title-link{display:inline-block;position:relative;color:#555;border-bottom:none;line-height:1.2;vertical-align:top}.posts-expand .post-title-link::before{content:"";position:absolute;width:100%;height:2px;bottom:0;left:0;background-color:#000;visibility:hidden;-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);-o-transform:scaleX(0);transform:scaleX(0);transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.posts-expand .post-title-link:hover::before{visibility:visible;-webkit-transform:scaleX(1);-moz-transform:scaleX(1);-ms-transform:scaleX(1);-o-transform:scaleX(1);transform:scaleX(1)}.posts-expand .post-title-link .fa{font-size:16px}.posts-expand .post-meta{margin:3px 0 60px 0;color:#999;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px;text-align:center}.posts-expand .post-meta .post-category-list{display:inline-block;margin:0;padding:3px}.posts-expand .post-meta .post-category-list-link{color:#999}.posts-expand .post-meta .post-description{font-size:14px;margin-top:2px}.post-meta-divider{margin:0 .5em}.post-meta-item-icon{margin-right:3px}@media (min-width:768px) and (max-width:991px){.post-meta-item-icon{display:inline-block}}@media (max-width:767px){.post-meta-item-icon{display:inline-block}}@media (min-width:768px) and (max-width:991px){.post-meta-item-text{display:none}}@media (max-width:767px){.post-meta-item-text{display:none}}@media (max-width:767px){.posts-expand .post-comments-count{display:none}}.social-like{font-size:14px;height:20px;text-align:center;border-top:1px solid #eee;padding-top:9px;margin-top:45px;display:flex;justify-content:center}.vk_like{width:85px;height:21px;padding-top:7px;align-self:center}.fb_like{height:30px;align-self:center}.post-button{margin-top:50px}.post-button .btn{color:#555;font-size:14px;background:0 0;border-radius:0;line-height:2;margin:0 4px 8px 4px}.post-button .fa-fw{width:1.285714285714286em;text-align:left}.posts-expand .post-tags{margin-top:40px;text-align:center}.posts-expand .post-tags a{display:inline-block;margin-right:10px;font-size:13px}.post-nav{display:table;margin-top:15px;width:100%;border-top:1px solid #eee}.post-nav-divider{display:table-cell;width:10%}.post-nav-item{display:table-cell;padding:10px 0 0 0;width:45%;vertical-align:top}.post-nav-item a{position:relative;display:block;line-height:25px;font-size:14px;color:#555;border-bottom:none}.post-nav-item a:hover{color:#222;border-bottom:none}.post-nav-item a:active{top:2px}.post-nav-item .fa{position:absolute;top:8px;left:0;font-size:12px}.post-nav-next a{padding-left:15px}.post-nav-prev{text-align:right}.post-nav-prev a{padding-right:15px}.post-nav-prev .fa{right:0;left:auto}.posts-expand .post-eof{display:block;margin:80px auto 60px;width:8%;height:1px;background:#ccc;text-align:center}.post:last-child .post-eof.post-eof.post-eof{display:none}.post-gallery{display:table;table-layout:fixed;width:100%;border-collapse:separate}.post-gallery-row{display:table-row}.post-gallery .post-gallery-img{display:table-cell;text-align:center;vertical-align:middle;border:none}.post-gallery .post-gallery-img img{max-width:100%;max-height:100%;border:none}.fancybox-close,.fancybox-close:hover{border:none}#rewardButton{cursor:pointer;border:0;outline:0;border-radius:100%;padding:0;margin:0;letter-spacing:normal;text-transform:none;text-indent:0;text-shadow:none}#rewardButton span{display:inline-block;width:80px;height:35px;border-radius:5px;color:#fff;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;font-size:18px;font-family:"Microsoft Yahei";background:#f44336}#rewardButton span:hover{background:#f7877f}#QR{padding-top:20px}#QR a{border:0}#QR img{width:180px;max-width:100%;display:inline-block;margin:.8em 2em 0 2em}#wechat:hover p{animation:roll .1s infinite linear;-webkit-animation:roll .1s infinite linear;-moz-animation:roll .1s infinite linear}#alipay:hover p{animation:roll .1s infinite linear;-webkit-animation:roll .1s infinite linear;-moz-animation:roll .1s infinite linear}@-moz-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@-webkit-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@-o-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}.sidebar{position:fixed;right:0;top:0;bottom:0;width:0;z-index:1040;box-shadow:inset 0 2px 6px #000;background:#222;-webkit-transform:translateZ(0)}.sidebar a{color:#999;border-bottom-color:#555}.sidebar a:hover{color:#eee}@media (min-width:768px) and (max-width:991px){.sidebar{display:none!important}}@media (max-width:767px){.sidebar{display:none!important}}.sidebar-inner{position:relative;padding:20px 10px;color:#999;text-align:center}.sidebar-toggle{position:fixed;right:30px;bottom:45px;width:14px;height:14px;padding:5px;background:#222;line-height:0;z-index:1050;cursor:pointer;-webkit-transform:translateZ(0)}@media (min-width:768px) and (max-width:991px){.sidebar-toggle{display:none}}@media (max-width:767px){.sidebar-toggle{display:none}}.sidebar-toggle-line{position:relative;display:inline-block;vertical-align:top;height:2px;width:100%;background:#fff;margin-top:3px}.sidebar-toggle-line:first-child{margin-top:0}.site-author-image{display:block;margin:0 auto;padding:2px;max-width:96px;height:auto;border:2px solid #333}.site-author-name{margin:5px 0 0;text-align:center;color:#f5f5f5;font-weight:400}.site-description{margin-top:5px;text-align:center;font-size:14px;color:#999}.site-state{overflow:hidden;line-height:1.4;white-space:nowrap;text-align:center}.site-state-item{display:inline-block;padding:0 15px;border-left:1px solid #333}.site-state-item:first-child{border-left:none}.site-state-item a{border-bottom:none}.site-state-item-count{display:block;text-align:center;color:inherit;font-weight:600;font-size:18px}.site-state-item-name{font-size:13px;color:inherit}.feed-link{margin-top:20px}.feed-link a{display:inline-block;padding:0 15px;color:#fc6423;border:1px solid #fc6423;border-radius:4px}.feed-link a i{color:#fc6423;font-size:14px}.feed-link a:hover{color:#fff;background:#fc6423}.feed-link a:hover i{color:#fff}.links-of-author{margin-top:20px}.links-of-author a{display:inline-block;vertical-align:middle;margin-right:10px;margin-bottom:10px;border-bottom-color:#555;font-size:13px}.links-of-author a:before{display:inline-block;vertical-align:middle;margin-right:3px;content:" ";width:4px;height:4px;border-radius:50%;background:#13ffff}.links-of-blogroll{font-size:13px}.links-of-blogroll-title{margin-top:20px;font-size:14px;font-weight:600}.links-of-blogroll-list{margin:0;padding:0}.links-of-blogroll-item{padding:2px 10px}.sidebar-nav{margin:0 0 20px;padding-left:0}.sidebar-nav li{display:inline-block;cursor:pointer;border-bottom:1px solid transparent;font-size:14px;color:#555}.sidebar-nav li:hover{color:#f5f5f5}.page-post-detail .sidebar-nav-toc{padding:0 5px}.page-post-detail .sidebar-nav-overview{margin-left:10px}.sidebar-nav .sidebar-nav-active{color:#87daff;border-bottom-color:#87daff}.sidebar-nav .sidebar-nav-active:hover{color:#87daff}.sidebar-panel{display:none}.sidebar-panel-active{display:block}.post-toc-empty{font-size:14px;color:#666}.post-toc-wrap{overflow:hidden}.post-toc{overflow:auto}.post-toc ol{margin:0;padding:0 2px 5px 10px;text-align:left;list-style:none;font-size:14px}.post-toc ol>ol{padding-left:0}.post-toc ol a{transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:all;color:#999;border-bottom-color:#555}.post-toc ol a:hover{color:#ccc;border-bottom-color:#ccc}.post-toc .nav-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.8}.post-toc .nav .nav-child{display:none}.post-toc .nav .active>.nav-child{display:block}.post-toc .nav .active-current>.nav-child{display:block}.post-toc .nav .active-current>.nav-child>.nav-item{display:block}.post-toc .nav .active>a{color:#87daff;border-bottom-color:#87daff}.post-toc .nav .active-current>a{color:#87daff}.post-toc .nav .active-current>a:hover{color:#87daff}.footer{font-size:14px;color:#999}.footer img{border:none}.footer-inner{text-align:center}.with-love{display:inline-block;margin:0 5px}.powered-by,.theme-info{display:inline-block}.powered-by{margin-right:10px}.powered-by::after{content:"|";padding-left:10px}.cc-license{margin-top:10px;text-align:center}.cc-license .cc-opacity{opacity:.7;border-bottom:none}.cc-license .cc-opacity:hover{opacity:.9}.cc-license img{display:inline-block}.theme-next #ds-thread #ds-reset{color:#555}.theme-next #ds-thread #ds-reset .ds-replybox{margin-bottom:30px}.theme-next #ds-reset .ds-avatar img,.theme-next #ds-thread #ds-reset .ds-replybox .ds-avatar{box-shadow:none}.theme-next #ds-thread #ds-reset .ds-textarea-wrapper{border-color:#c7d4e1;background:0 0;border-top-right-radius:3px;border-top-left-radius:3px}.theme-next #ds-thread #ds-reset .ds-textarea-wrapper textarea{height:60px}.theme-next #ds-reset .ds-rounded-top{border-radius:0}.theme-next #ds-thread #ds-reset .ds-post-toolbar{box-sizing:border-box;border:1px solid #c7d4e1;background:#f6f8fa}.theme-next #ds-thread #ds-reset .ds-post-options{height:40px;border:none;background:0 0}.theme-next #ds-thread #ds-reset .ds-toolbar-buttons{top:11px}.theme-next #ds-thread #ds-reset .ds-sync{top:5px}.theme-next #ds-thread #ds-reset .ds-post-button{top:4px;right:5px;width:90px;height:30px;border:1px solid #c5ced7;border-radius:3px;background-image:linear-gradient(#fbfbfc,#f5f7f9);color:#60676d}.theme-next #ds-thread #ds-reset .ds-post-button:hover{background-position:0 -30px;color:#60676d}.theme-next #ds-thread #ds-reset .ds-comments-info{padding:10px 0}.theme-next #ds-thread #ds-reset .ds-sort{display:none}.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current{border:none;background:#f6f8fa;color:#60676d}.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current:hover{background-color:#e9f0f7;color:#60676d}.theme-next #ds-thread #ds-reset li.ds-tab a{border-radius:2px;padding:5px}.theme-next #ds-thread #ds-reset .ds-login-buttons p{color:#999;line-height:36px}.theme-next #ds-thread #ds-reset .ds-login-buttons .ds-service-list li{height:28px}.theme-next #ds-thread #ds-reset .ds-service-list a{background:0 0;padding:5px;border:1px solid;border-radius:3px;text-align:center}.theme-next #ds-thread #ds-reset .ds-service-list a:hover{color:#fff;background:#666}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo{color:#fc9b00;border-color:#fc9b00}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo:hover{background:#fc9b00}.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq{color:#60a3ec;border-color:#60a3ec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq:hover{background:#60a3ec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren{color:#2e7ac4;border-color:#2e7ac4}.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren:hover{background:#2e7ac4}.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban{color:#37994c;border-color:#37994c}.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban:hover{background:#37994c}.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin{color:#fef20d;border-color:#fef20d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin:hover{background:#fef20d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease{color:red;border-color:red}.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease:hover{background:red}.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu{color:#ffcb05;border-color:#ffcb05}.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu:hover{background:#ffcb05}.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu{color:#2831e0;border-color:#2831e0}.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu:hover{background:#2831e0}.theme-next #ds-thread #ds-reset .ds-service-list .ds-google{color:#166bec;border-color:#166bec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-google:hover{background:#166bec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin{color:#00ce0d;border-color:#00ce0d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin:hover{background:#00ce0d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services{border:none}.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services:hover{background:0 0}.theme-next #ds-reset .duoshuo-ua-admin{display:inline-block;color:red}.theme-next #ds-reset .duoshuo-ua-browser,.theme-next #ds-reset .duoshuo-ua-platform{color:#ccc}.theme-next #ds-reset .duoshuo-ua-browser .fa,.theme-next #ds-reset .duoshuo-ua-platform .fa{display:inline-block;margin-right:3px}.theme-next #ds-reset .duoshuo-ua-separator{display:inline-block;margin-left:5px}.theme-next .this_ua{background-color:#ccc!important;border-radius:4px;padding:0 5px!important;margin:1px 1px!important;border:1px solid #bbb!important;color:#fff;display:inline-block!important}.theme-next .this_ua.admin{background-color:#d9534f!important;border-color:#d9534f!important}.theme-next .this_ua.platform.Mac,.theme-next .this_ua.platform.Windows,.theme-next .this_ua.platform.iOS{background-color:#39b3d7!important;border-color:#46b8da!important}.theme-next .this_ua.platform.Linux{background-color:#3a3a3a!important;border-color:#1f1f1f!important}.theme-next .this_ua.platform.Android{background-color:#00c47d!important;border-color:#01b171!important}.theme-next .this_ua.browser.Chrome,.theme-next .this_ua.browser.Mobile{background-color:#5cb85c!important;border-color:#4cae4c!important}.theme-next .this_ua.browser.Firefox{background-color:#f0ad4e!important;border-color:#eea236!important}.theme-next .this_ua.browser.IE,.theme-next .this_ua.browser.Maxthon{background-color:#428bca!important;border-color:#357ebd!important}.theme-next .this_ua.browser.Opera,.theme-next .this_ua.browser.UCBrowser,.theme-next .this_ua.browser.baidu{background-color:#d9534f!important;border-color:#d43f3a!important}.theme-next .this_ua.browser.Android,.theme-next .this_ua.browser.QQBrowser{background-color:#78ace9!important;border-color:#4cae4c!important}.cloud-tie-wrapper img{display:inline-block}.cloud-tie-wrapper .total-txt{font-size:1em!important}.cloud-tie-join-count .join-count{color:#555!important;font-size:inherit!important;margin:0!important}.post-spread{margin-top:20px;text-align:center}.jiathis_style{display:inline-block}.jiathis_style a{border:none}.post-spread{margin-top:20px;text-align:center}.bdshare-slide-button-box a{border:none}.bdsharebuttonbox{display:inline-block}.bdsharebuttonbox a{border:none}.local-search-pop-overlay{position:fixed;width:100%;height:100%;top:0;left:0;z-index:2080;background-color:rgba(0,0,0,.3)}.local-search-popup{display:none;position:fixed;top:10%;left:50%;margin-left:-350px;width:700px;height:80%;padding:0;background:#fff;color:#333;z-index:9999;border-radius:5px}@media (max-width:767px){.local-search-popup{padding:0;top:0;left:0;margin:0;width:100%;height:100%;border-radius:0}}.local-search-popup ul.search-result-list{padding:0;margin:0 5px}.local-search-popup p.search-result{border-bottom:1px dashed #ccc;padding:5px 0}.local-search-popup a.search-result-title{font-weight:700;font-size:16px}.local-search-popup .search-keyword{border-bottom:1px dashed red;font-size:14px;font-weight:700;color:red}.local-search-popup .local-search-header{padding:5px;height:36px;background:#f5f5f5;border-top-left-radius:5px;border-top-right-radius:5px}.local-search-popup #local-search-result{overflow:auto;position:relative;padding:5px 25px;height:calc(100% - 55px)}.local-search-popup .local-search-input-wrapper{display:inline-block;width:calc(100% - 60px);height:36px;line-height:36px;padding:0 5px}.local-search-popup .local-search-input-wrapper input{padding:8px 0;height:20px;display:block;width:100%;outline:0;border:none;background:0 0;vertical-align:middle}.local-search-popup .popup-btn-close,.local-search-popup .search-icon{display:inline-block;font-size:18px;color:#999;height:36px;width:18px}.local-search-popup .search-icon{float:left}.local-search-popup .popup-btn-close{border-left:1px solid #eee;float:right;cursor:pointer;padding-left:10px}.local-search-popup #no-result{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#ccc}.page-pv,.site-pv,.site-uv{display:inline-block}.page-pv .busuanzi-value,.site-pv .busuanzi-value,.site-uv .busuanzi-value{margin:0 5px}.site-uv{margin-right:10px}.site-uv::after{content:"|";padding-left:10px}.use-motion .post{opacity:0}.page-archive .archive-page-counter{position:relative;top:3px;left:20px}@media (max-width:767px){.page-archive .archive-page-counter{top:5px}}.page-archive .posts-collapse .archive-move-on{position:absolute;top:11px;left:0;margin-left:-6px;width:10px;height:10px;opacity:.5;background:#555;border:1px solid #fff;border-radius:50%}.category-all-page .category-all-title{text-align:center}.category-all-page .category-all{margin-top:20px}.category-all-page .category-list{margin:0;padding:0;list-style:none}.category-all-page .category-list-item{margin:5px 10px}.category-all-page .category-list-count{color:#bbb}.category-all-page .category-list-count:before{display:inline;content:" ("}.category-all-page .category-list-count:after{display:inline;content:") "}.category-all-page .category-list-child{padding-left:10px}#schedule ul#event-list{padding-left:30px}#schedule ul#event-list hr{margin:20px 0 45px 0!important;background:#222}#schedule ul#event-list hr:after{display:inline-block;content:'NOW';background:#222;color:#fff;font-weight:700;text-align:right;padding:0 5px}#schedule ul#event-list li.event{margin:20px 0;background:#f9f9f9;padding-left:10px;min-height:40px}#schedule ul#event-list li.event h2.event-summary{margin:0;padding-bottom:3px}#schedule ul#event-list li.event h2.event-summary:before{display:inline-block;font-family:FontAwesome;font-size:8px;content:'\f111';vertical-align:middle;margin-right:25px;color:#bbb}#schedule ul#event-list li.event span.event-relative-time{display:inline-block;font-size:12px;font-weight:400;padding-left:12px;color:#bbb}#schedule ul#event-list li.event span.event-details{display:block;color:#bbb;margin-left:56px;padding-top:3px;padding-bottom:6px;text-indent:-24px;line-height:18px}#schedule ul#event-list li.event span.event-details:before{text-indent:0;display:inline-block;width:14px;font-family:FontAwesome;text-align:center;margin-right:9px;color:#bbb}#schedule ul#event-list li.event span.event-details.event-location:before{content:'\f041'}#schedule ul#event-list li.event span.event-details.event-duration:before{content:'\f017'}#schedule ul#event-list li.event-past{background:#fcfcfc}#schedule ul#event-list li.event-past>*{opacity:.6}#schedule ul#event-list li.event-past h2.event-summary{color:#bbb}#schedule ul#event-list li.event-past h2.event-summary:before{color:#dfdfdf}#schedule ul#event-list li.event-now{background:#222;color:#fff;padding:15px 0 15px 10px}#schedule ul#event-list li.event-now h2.event-summary:before{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2);color:#fff;animation:dot-flash 1s alternate infinite ease-in-out}#schedule ul#event-list li.event-now *{color:#fff!important}@-moz-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-o-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.page-post-detail .sidebar-toggle-line{background:#87daff}.page-post-detail .comments{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:20px 0 10px}p{margin:0 0 25px 0}a{border-bottom-color:#ccc}hr{margin:20px 0;height:2px}.main-inner{margin-top:80px}.header{background:#f5f5f5}.header-inner{padding:25px 0 20px}.header-inner:after,.header-inner:before{content:" ";display:table}.header-inner:after{clear:both}@media (max-width:767px){.header-inner{width:auto;margin-bottom:50px;padding:10px}}.site-meta{float:left;margin-left:-20px;line-height:normal}@media (max-width:767px){.site-meta{margin-left:10px}}.site-meta .brand{padding:2px 1px;background:0 0}@media (max-width:767px){.site-meta .brand{display:block}}.site-meta .logo{display:none}.site-meta .site-title{font-size:22px;font-weight:bolder}@media (max-width:767px){.site-meta .site-title{line-height:34px}}.logo-line-after,.logo-line-before{display:block;overflow:hidden;margin:0 auto;width:75%}@media (max-width:767px){.logo-line-after,.logo-line-before{display:none}}.logo-line-after i,.logo-line-before i{position:relative;display:block;height:2px;background:#222}@media (max-width:767px){.logo-line-after i,.logo-line-before i{height:3px}}.use-motion .logo-line-before i{left:-100%}.use-motion .logo-line-after i{right:-100%}.site-subtitle{display:none}.site-nav-toggle{position:static;float:right}.menu{float:right;margin:8px 0 0 0}@media (max-width:767px){.menu{margin:20px 0 0 0;padding:0}}.menu br{display:none}.menu .menu-item{margin:0}@media (max-width:767px){.menu .menu-item{display:block}}.menu .menu-item a{padding:0 10px;background:0 0;border:none;border-radius:2px;transition-property:background}@media (max-width:767px){.menu .menu-item a{text-align:left}}.menu .menu-item a:hover{background:#e1e1e1}.menu a::before{display:none}@media (max-width:767px){.menu a::before{display:block}}@media (max-width:767px){.menu{float:none}}.site-search form{display:none}.posts-expand{padding-top:0}.posts-expand .post-meta,.posts-expand .post-title{text-align:left}@media (max-width:767px){.posts-expand .post-meta,.posts-expand .post-title{text-align:center}}.posts-expand .post-eof{display:none}.posts-expand .post{margin-top:120px}.posts-expand .post:first-child{margin-top:0}.posts-expand .post-meta{margin-top:5px;margin-bottom:20px}.posts-expand .post-title{position:relative;font-size:26px;font-weight:400}@media (max-width:767px){.posts-expand .post-title{font-size:20px}}@media (min-width:1600px){.posts-expand .post-title{font-size:26px}}.posts-expand .post-title:hover:before{background:#222}.posts-expand .post-body img{margin:0}.posts-expand .post-tags{text-align:left}.posts-expand .post-tags a{padding:1px 5px;background:#f5f5f5;border-bottom:none}.posts-expand .post-tags a:hover{background:#ccc}.posts-expand .post-nav{margin-top:40px}.post-button{margin-top:20px;text-align:left}.post-button a{margin:0 8px 8px 0!important;padding:0;font-size:14px;color:#666;background:0 0;border:none;border-bottom:2px solid #666;transition-property:border}@media (max-width:767px){.post-button a{font-size:12px}}@media (min-width:1600px){.post-button a{font-size:16px}}.post-button a:hover{border-bottom-color:#222}.links-of-blogroll-inline .links-of-blogroll-item{display:inline-block}.btn{padding:0 10px;border-width:2px;border-radius:0}.headband{display:none}.site-search{position:relative;float:right;margin-top:5px;padding-top:3px}@media (max-width:767px){.site-search{float:none;padding:0 10px}}@media (max-width:767px){.container .main-inner{width:auto}}.page-post-detail .post-meta,.page-post-detail .post-title{text-align:center}.page-post-detail .post-title:before{display:none}.page-post-detail .post-meta{margin-bottom:60px}.pagination{margin:120px 0 0;text-align:left}@media (max-width:767px){.pagination{margin:80px 10px 0;text-align:center}}.footer{margin-top:80px;padding:10px 0;background:#f5f5f5;color:#666}.footer-inner{margin:0 auto;text-align:left}@media (max-width:767px){.footer-inner{width:auto;text-align:center}}.post{margin-top:60px;margin-bottom:60px;padding:25px;-webkit-box-shadow:0 0 5px rgba(202,203,203,.5);-moz-box-shadow:0 0 5px rgba(202,203,204,.5)} +/* build time:Mon Jul 24 2023 09:55:56 GMT+0800 (中国标准时间)*/ +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}::selection{background:#262a30;color:#fff}body{position:relative;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px;line-height:2;color:#555;background:#fff}@media (max-width:767px){body{padding-right:0!important}}@media (min-width:768px) and (max-width:991px){body{padding-right:0!important}}@media (min-width:1600px){body{font-size:16px}}h1,h2,h3,h4,h5,h6{margin:0;padding:0;font-weight:700;line-height:1.5;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}h2,h3,h4,h5,h6{margin:20px 0 15px}h1{font-size:24px}@media (max-width:767px){h1{font-size:20px}}h2{font-size:22px}@media (max-width:767px){h2{font-size:18px}}h3{font-size:20px}@media (max-width:767px){h3{font-size:16px}}h4{font-size:18px}@media (max-width:767px){h4{font-size:14px}}h5{font-size:16px}@media (max-width:767px){h5{font-size:12px}}h6{font-size:14px}@media (max-width:767px){h6{font-size:10px}}p{margin:0 0 25px 0}a{color:#555;text-decoration:none;border-bottom:1px solid #999;word-wrap:break-word}a:hover{color:#222;border-bottom-color:#222}blockquote{margin:0;padding:0}img{display:block;margin:auto;max-width:100%;height:auto}hr{margin:40px 0;height:3px;border:none;background-color:#ddd;background-image:repeating-linear-gradient(-45deg,#fff,#fff 4px,transparent 4px,transparent 8px)}blockquote{padding:0 15px;color:#666;border-left:4px solid #ddd}blockquote cite::before{content:"-";padding:0 5px}dt{font-weight:700}dd{margin:0;padding:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.center-block{display:block;margin-left:auto;margin-right:auto}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}.pullquote{width:45%}.pullquote.left{float:left;margin-left:5px;margin-right:10px}.pullquote.right{float:right;margin-left:10px;margin-right:5px}.affix.affix.affix{position:fixed}.translation{margin-top:-20px;font-size:14px;color:#999}.scrollbar-measure{width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px}.use-motion .motion-element{opacity:0}table{margin:20px 0;width:100%;border-collapse:collapse;border-spacing:0;border:1px solid #ddd;font-size:14px;table-layout:fixed;word-wrap:break-all}table>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}table>tbody>tr:hover{background-color:#f5f5f5}caption,td,th{padding:8px;text-align:left;vertical-align:middle;font-weight:400}td,th{border-bottom:3px solid #ddd;border-right:1px solid #eee}th{padding-bottom:10px;font-weight:700}td{border-bottom-width:1px}body,html{height:100%}.container{position:relative;min-height:100%}.header-inner{margin:0 auto;padding:100px 0 70px;width:700px}@media (min-width:1600px){.container .header-inner{width:900px}}.main{padding-bottom:150px}.main-inner{margin:0 auto;width:700px}@media (min-width:1600px){.container .main-inner{width:900px}}.footer{position:absolute;left:0;bottom:0;width:100%;min-height:50px}.footer-inner{box-sizing:border-box;margin:20px auto;width:700px}@media (min-width:1600px){.container .footer-inner{width:900px}}.highlight,pre{overflow:auto;margin:20px 0;padding:0;font-size:13px;color:#4d4d4c;background:#f7f7f7;line-height:1.6}code,pre{font-family:consolas,Menlo,"PingFang SC","Microsoft YaHei",monospace}code{padding:2px 4px;word-wrap:break-word;color:#555;background:#eee;border-radius:3px;font-size:13px}pre code{padding:0;color:#4d4d4c;background:0 0;text-shadow:none}.highlight{border-radius:1px}.highlight pre{border:none;margin:0;padding:10px 0}.highlight table{margin:0;width:auto;border:none}.highlight td{border:none;padding:0}.highlight figcaption{font-size:1em;color:#4d4d4c;line-height:1em;margin-bottom:1em}.highlight figcaption:after,.highlight figcaption:before{content:" ";display:table}.highlight figcaption:after{clear:both}.highlight figcaption a{float:right;color:#4d4d4c}.highlight figcaption a:hover{border-bottom-color:#4d4d4c}.highlight .gutter pre{padding-left:10px;padding-right:10px;color:#869194;text-align:right;background-color:#eff2f3}.highlight .code pre{padding-left:10px;padding-right:10px;background-color:#f7f7f7}.highlight .line{height:20px}.gutter{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gist table{width:auto}.gist table td{border:none}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .meta{color:#8959a8}pre .comment{color:#8e908c}pre .attribute,pre .css .class,pre .css .id,pre .css .pseudo,pre .html .doctype,pre .regexp,pre .ruby .constant,pre .tag,pre .variable,pre .xml .doctype,pre .xml .pi,pre .xml .tag .title{color:#c82829}pre .built_in,pre .command,pre .constant,pre .literal,pre .number,pre .params,pre .preprocessor{color:#f5871f}pre .css .rules .attribute,pre .formula,pre .header,pre .inheritance,pre .number,pre .ruby .class .title,pre .ruby .symbol,pre .special,pre .string,pre .value,pre .xml .cdata{color:#718c00}pre .css .hexcolor,pre .title{color:#3e999f}pre .coffeescript .title,pre .function,pre .javascript .title,pre .perl .sub,pre .python .decorator,pre .python .title,pre .ruby .function .title,pre .ruby .title .keyword{color:#4271ae}pre .javascript .function,pre .keyword{color:#8959a8}.full-image.full-image.full-image{border:none;max-width:100%;width:auto;margin:20px auto}@media (min-width:992px){.full-image.full-image.full-image{max-width:none;width:110%;margin:25px -5%}}.blockquote-center,.page-home .post-type-quote blockquote,.page-post-detail .post-type-quote blockquote{position:relative;margin:40px 0;padding:0;border-left:none;text-align:center}.blockquote-center::after,.blockquote-center::before,.page-home .post-type-quote blockquote::after,.page-home .post-type-quote blockquote::before,.page-post-detail .post-type-quote blockquote::after,.page-post-detail .post-type-quote blockquote::before{position:absolute;content:' ';display:block;width:100%;height:24px;opacity:.2;background-repeat:no-repeat;background-position:0 -6px;background-size:22px 22px}.blockquote-center::before,.page-home .post-type-quote blockquote::before,.page-post-detail .post-type-quote blockquote::before{top:-20px;background-image:url(../images/quote-l.svg);border-top:1px solid #ccc}.blockquote-center::after,.page-home .post-type-quote blockquote::after,.page-post-detail .post-type-quote blockquote::after{bottom:-20px;background-image:url(../images/quote-r.svg);border-bottom:1px solid #ccc;background-position:100% 8px}.blockquote-center div,.blockquote-center p,.page-home .post-type-quote blockquote div,.page-home .post-type-quote blockquote p,.page-post-detail .post-type-quote blockquote div,.page-post-detail .post-type-quote blockquote p{text-align:center}.post .post-body .group-picture img{box-sizing:border-box;padding:0 3px;border:none}.post .group-picture-row{overflow:hidden;margin-top:6px}.post .group-picture-row:first-child{margin-top:0}.post .group-picture-column{float:left}.page-post-detail .post-body .group-picture-column{float:none;margin-top:10px;width:auto!important}.page-post-detail .post-body .group-picture-column img{margin:0 auto}.page-archive .group-picture-container{overflow:hidden}.page-archive .group-picture-row{float:left}.page-archive .group-picture-row:first-child{margin-top:6px}.page-archive .group-picture-column{max-width:150px;max-height:150px}.note{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px}.note h2,.note h3,.note h4,.note h5,.note h6{margin-top:0;margin-bottom:5px}.note p:last-child{margin-bottom:0}.note code{border-radius:3px}.note+.note{margin-top:-5px}.default{border-left-color:#777}.default h2,.default h3,.default h4,.default h5,.default h6{color:#777}.primary{border-left-color:#428bca}.primary h2,.primary h3,.primary h4,.primary h5,.primary h6{color:#428bca}.success{border-left-color:#5cb85c}.success h2,.success h3,.success h4,.success h5,.success h6{color:#5cb85c}.danger{border-left-color:#d9534f}.danger h2,.danger h3,.danger h4,.danger h5,.danger h6{color:#d9534f}.warning{border-left-color:#f0ad4e}.warning h2,.warning h3,.warning h4,.warning h5,.warning h6{color:#f0ad4e}.info{border-left-color:#5bc0de}.info h2,.info h3,.info h4,.info h5,.info h6{color:#5bc0de}.exturl{background-color:transparent;cursor:pointer;border-bottom:1px solid #999}.exturl .fa{font-size:14px}.exturl:active,.exturl:hover{outline:0;color:#222;border-bottom-color:#222}.btn{display:inline-block;padding:0 20px;font-size:14px;color:#fff;background:#222;border:2px solid #222;text-decoration:none;border-radius:0;transition-property:background-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.btn:hover,.post-button .btn:hover{border-color:#222;color:#222;background:#fff}.btn-bar{display:block;width:22px;height:2px;background:#555;border-radius:1px}.btn-bar+.btn-bar{margin-top:4px}.pagination{margin:120px 0 40px;text-align:center;border-top:1px solid #eee}.page-number-basic,.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{display:inline-block;position:relative;top:-1px;margin:0 10px;padding:0 10px;line-height:30px}@media (max-width:767px){.page-number-basic,.pagination .next,.pagination .page-number,.pagination .prev,.pagination .space{margin:0 5px}}.pagination .next,.pagination .page-number,.pagination .prev{border-bottom:0;border-top:1px solid #eee;transition-property:border-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-top-color:#222}.pagination .space{padding:0;margin:0}.pagination .prev{margin-left:0}.pagination .next{margin-right:0}.pagination .page-number.current{color:#fff;background:#ccc;border-top-color:#ccc}@media (max-width:767px){.pagination{border-top:none}.pagination .next,.pagination .page-number,.pagination .prev{margin-bottom:10px;border-top:0;border-bottom:1px solid #eee}.pagination .next:hover,.pagination .page-number:hover,.pagination .prev:hover{border-bottom-color:#222}}.comments{margin:60px 20px 0}.tag-cloud{text-align:center}.tag-cloud a{display:inline-block;margin:10px}.back-to-top{box-sizing:border-box;position:fixed;bottom:-100px;right:30px;z-index:1050;padding:0 6px;width:24px;background:#222;font-size:12px;opacity:1;color:#fff;cursor:pointer;text-align:center;-webkit-transform:translateZ(0);transition-property:bottom;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}@media (max-width:767px){.back-to-top{display:none}}@media (min-width:768px) and (max-width:991px){.back-to-top{display:none}}.back-to-top.back-to-top-on{bottom:19px}.header{background:#fff}.header-inner{position:relative}.headband{height:3px;background:#222}.site-meta{margin:0;text-align:left}@media (max-width:767px){.site-meta{text-align:center}}.brand{position:relative;display:inline-block;padding:0 40px;color:#222;background:#222;border-bottom:none}.brand:hover{color:#222}.logo{display:inline-block;margin-right:5px;line-height:36px;vertical-align:top}.site-title{display:inline-block;vertical-align:top;line-height:36px;font-size:20px;font-weight:400;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}.site-subtitle{margin-top:10px;font-size:13px;color:#999}.use-motion .brand{opacity:0}.use-motion .logo,.use-motion .site-subtitle,.use-motion .site-title{opacity:0;position:relative;top:-10px}.site-nav-toggle{display:none;position:absolute;top:10px;left:10px}@media (max-width:767px){.site-nav-toggle{display:block}}.site-nav-toggle button{margin-top:2px;padding:9px 10px;background:0 0;border:none}@media (max-width:767px){.site-nav{display:none;margin:0 -10px;padding:0 10px;clear:both;border-top:1px solid #ddd}}@media (min-width:768px) and (max-width:991px){.site-nav{display:block!important}}@media (min-width:992px){.site-nav{display:block!important}}.menu{margin-top:20px;padding-left:0;text-align:center}.menu .menu-item{display:inline-block;margin:0 10px;list-style:none}@media screen and (max-width:767px){.menu .menu-item{margin-top:10px}}.menu .menu-item a{display:block;font-size:13px;line-height:inherit;border-bottom:1px solid transparent;transition-property:border-color;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.menu .menu-item a:hover{border-bottom-color:#222}.menu .menu-item .fa{margin-right:5px}.use-motion .menu-item{opacity:0}.post-body{font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif}@media (max-width:767px){.post-body{word-break:break-word}}.post-body .fancybox img{display:block!important;margin:0 auto;cursor:pointer;cursor:zoom-in;cursor:-webkit-zoom-in}.post-body .figure .caption,.post-body .image-caption{margin:10px auto 15px;text-align:center;font-size:14px;color:#999;font-weight:700;line-height:1}.post-sticky-flag{display:inline-block;font-size:16px;-ms-transform:rotate(30deg);-webkit-transform:rotate(30deg);-moz-transform:rotate(30deg);-ms-transform:rotate(30deg);-o-transform:rotate(30deg);transform:rotate(30deg)}.posts-expand{padding-top:40px}@media (max-width:767px){.posts-expand{margin:0 20px}.post-body .highlight,.post-body pre{padding:10px}.post-body .highlight .gutter pre,.post-body pre .gutter pre{padding-right:10px}}@media (min-width:992px){.posts-expand .post-body{text-align:justify}}.posts-expand .post-body h2,.posts-expand .post-body h3,.posts-expand .post-body h4,.posts-expand .post-body h5,.posts-expand .post-body h6{padding-top:10px}.posts-expand .post-body h2 .header-anchor,.posts-expand .post-body h3 .header-anchor,.posts-expand .post-body h4 .header-anchor,.posts-expand .post-body h5 .header-anchor,.posts-expand .post-body h6 .header-anchor{float:right;margin-left:10px;color:#ccc;border-bottom-style:none;visibility:hidden}.posts-expand .post-body h2 .header-anchor:hover,.posts-expand .post-body h3 .header-anchor:hover,.posts-expand .post-body h4 .header-anchor:hover,.posts-expand .post-body h5 .header-anchor:hover,.posts-expand .post-body h6 .header-anchor:hover{color:inherit}.posts-expand .post-body h2:hover .header-anchor,.posts-expand .post-body h3:hover .header-anchor,.posts-expand .post-body h4:hover .header-anchor,.posts-expand .post-body h5:hover .header-anchor,.posts-expand .post-body h6:hover .header-anchor{visibility:visible}.posts-expand .post-body ul li{list-style:circle}.posts-expand .post-body img{box-sizing:border-box;margin:auto;padding:3px;border:1px solid #ddd}.posts-expand .fancybox img{margin:0 auto}@media (max-width:767px){.posts-collapse{margin:0 20px}.posts-collapse .post-meta,.posts-collapse .post-title{display:block;width:auto;text-align:left}}.posts-collapse{position:relative;z-index:1010;margin-left:0}.posts-collapse::after{content:" ";position:absolute;top:20px;left:0;margin-left:-2px;width:4px;height:100%;background:#f5f5f5;z-index:-1}@media (max-width:767px){.posts-collapse{margin:0 20px}}.posts-collapse .collection-title{position:relative;margin:60px 0}.posts-collapse .collection-title h2{margin-left:20px}.posts-collapse .collection-title small{color:#bbb}.posts-collapse .collection-title::before{content:" ";position:absolute;left:0;top:50%;margin-left:-4px;margin-top:-4px;width:8px;height:8px;background:#bbb;border-radius:50%}.posts-collapse .post{margin:30px 0}.posts-collapse .post-header{position:relative;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:border;border-bottom:1px dashed #ccc}.posts-collapse .post-header::before{content:" ";position:absolute;left:0;top:12px;width:6px;height:6px;margin-left:-4px;background:#bbb;border-radius:50%;border:1px solid #fff;transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:background}.posts-collapse .post-header:hover{border-bottom-color:#666}.posts-collapse .post-header:hover::before{background:#222}.posts-collapse .post-meta{position:absolute;font-size:12px;left:20px;top:5px}.posts-collapse .post-comments-count{display:none}.posts-collapse .post-title{margin-left:60px;font-size:16px;font-weight:400;line-height:inherit}.posts-collapse .post-title::after{margin-left:3px;opacity:.6}.posts-collapse .post-title a{color:#666;border-bottom:none}.page-home .post-type-quote .post-header,.page-home .post-type-quote .post-tags,.page-post-detail .post-type-quote .post-header,.page-post-detail .post-type-quote .post-tags{display:none}.posts-expand .post-title{font-size:26px;text-align:center;word-break:break-word;font-weight:400}@media (max-width:767px){.posts-expand .post-title{font-size:22px}}.posts-expand .post-title-link{display:inline-block;position:relative;color:#555;border-bottom:none;line-height:1.2;vertical-align:top}.posts-expand .post-title-link::before{content:"";position:absolute;width:100%;height:2px;bottom:0;left:0;background-color:#000;visibility:hidden;-webkit-transform:scaleX(0);-moz-transform:scaleX(0);-ms-transform:scaleX(0);-o-transform:scaleX(0);transform:scaleX(0);transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s}.posts-expand .post-title-link:hover::before{visibility:visible;-webkit-transform:scaleX(1);-moz-transform:scaleX(1);-ms-transform:scaleX(1);-o-transform:scaleX(1);transform:scaleX(1)}.posts-expand .post-title-link .fa{font-size:16px}.posts-expand .post-meta{margin:3px 0 60px 0;color:#999;font-family:Lato,"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px;text-align:center}.posts-expand .post-meta .post-category-list{display:inline-block;margin:0;padding:3px}.posts-expand .post-meta .post-category-list-link{color:#999}.posts-expand .post-meta .post-description{font-size:14px;margin-top:2px}.post-meta-divider{margin:0 .5em}.post-meta-item-icon{margin-right:3px}@media (min-width:768px) and (max-width:991px){.post-meta-item-icon{display:inline-block}}@media (max-width:767px){.post-meta-item-icon{display:inline-block}}@media (min-width:768px) and (max-width:991px){.post-meta-item-text{display:none}}@media (max-width:767px){.post-meta-item-text{display:none}}@media (max-width:767px){.posts-expand .post-comments-count{display:none}}.social-like{font-size:14px;height:20px;text-align:center;border-top:1px solid #eee;padding-top:9px;margin-top:45px;display:flex;justify-content:center}.vk_like{width:85px;height:21px;padding-top:7px;align-self:center}.fb_like{height:30px;align-self:center}.post-button{margin-top:50px}.post-button .btn{color:#555;font-size:14px;background:0 0;border-radius:0;line-height:2;margin:0 4px 8px 4px}.post-button .fa-fw{width:1.285714285714286em;text-align:left}.posts-expand .post-tags{margin-top:40px;text-align:center}.posts-expand .post-tags a{display:inline-block;margin-right:10px;font-size:13px}.post-nav{display:table;margin-top:15px;width:100%;border-top:1px solid #eee}.post-nav-divider{display:table-cell;width:10%}.post-nav-item{display:table-cell;padding:10px 0 0 0;width:45%;vertical-align:top}.post-nav-item a{position:relative;display:block;line-height:25px;font-size:14px;color:#555;border-bottom:none}.post-nav-item a:hover{color:#222;border-bottom:none}.post-nav-item a:active{top:2px}.post-nav-item .fa{position:absolute;top:8px;left:0;font-size:12px}.post-nav-next a{padding-left:15px}.post-nav-prev{text-align:right}.post-nav-prev a{padding-right:15px}.post-nav-prev .fa{right:0;left:auto}.posts-expand .post-eof{display:block;margin:80px auto 60px;width:8%;height:1px;background:#ccc;text-align:center}.post:last-child .post-eof.post-eof.post-eof{display:none}.post-gallery{display:table;table-layout:fixed;width:100%;border-collapse:separate}.post-gallery-row{display:table-row}.post-gallery .post-gallery-img{display:table-cell;text-align:center;vertical-align:middle;border:none}.post-gallery .post-gallery-img img{max-width:100%;max-height:100%;border:none}.fancybox-close,.fancybox-close:hover{border:none}#rewardButton{cursor:pointer;border:0;outline:0;border-radius:100%;padding:0;margin:0;letter-spacing:normal;text-transform:none;text-indent:0;text-shadow:none}#rewardButton span{display:inline-block;width:80px;height:35px;border-radius:5px;color:#fff;font-weight:400;font-style:normal;font-variant:normal;font-stretch:normal;font-size:18px;font-family:"Microsoft Yahei";background:#f44336}#rewardButton span:hover{background:#f7877f}#QR{padding-top:20px}#QR a{border:0}#QR img{width:180px;max-width:100%;display:inline-block;margin:.8em 2em 0 2em}#wechat:hover p{animation:roll .1s infinite linear;-webkit-animation:roll .1s infinite linear;-moz-animation:roll .1s infinite linear}#alipay:hover p{animation:roll .1s infinite linear;-webkit-animation:roll .1s infinite linear;-moz-animation:roll .1s infinite linear}@-moz-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@-webkit-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@-o-keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}@keyframes roll{from{-webkit-transform:rotateZ(30deg);-moz-transform:rotateZ(30deg);-ms-transform:rotateZ(30deg);-o-transform:rotateZ(30deg);transform:rotateZ(30deg)}to{-webkit-transform:rotateZ(-30deg);-moz-transform:rotateZ(-30deg);-ms-transform:rotateZ(-30deg);-o-transform:rotateZ(-30deg);transform:rotateZ(-30deg)}}.sidebar{position:fixed;right:0;top:0;bottom:0;width:0;z-index:1040;box-shadow:inset 0 2px 6px #000;background:#222;-webkit-transform:translateZ(0)}.sidebar a{color:#999;border-bottom-color:#555}.sidebar a:hover{color:#eee}@media (min-width:768px) and (max-width:991px){.sidebar{display:none!important}}@media (max-width:767px){.sidebar{display:none!important}}.sidebar-inner{position:relative;padding:20px 10px;color:#999;text-align:center}.sidebar-toggle{position:fixed;right:30px;bottom:45px;width:14px;height:14px;padding:5px;background:#222;line-height:0;z-index:1050;cursor:pointer;-webkit-transform:translateZ(0)}@media (min-width:768px) and (max-width:991px){.sidebar-toggle{display:none}}@media (max-width:767px){.sidebar-toggle{display:none}}.sidebar-toggle-line{position:relative;display:inline-block;vertical-align:top;height:2px;width:100%;background:#fff;margin-top:3px}.sidebar-toggle-line:first-child{margin-top:0}.site-author-image{display:block;margin:0 auto;padding:2px;max-width:96px;height:auto;border:2px solid #333}.site-author-name{margin:5px 0 0;text-align:center;color:#f5f5f5;font-weight:400}.site-description{margin-top:5px;text-align:center;font-size:14px;color:#999}.site-state{overflow:hidden;line-height:1.4;white-space:nowrap;text-align:center}.site-state-item{display:inline-block;padding:0 15px;border-left:1px solid #333}.site-state-item:first-child{border-left:none}.site-state-item a{border-bottom:none}.site-state-item-count{display:block;text-align:center;color:inherit;font-weight:600;font-size:18px}.site-state-item-name{font-size:13px;color:inherit}.feed-link{margin-top:20px}.feed-link a{display:inline-block;padding:0 15px;color:#fc6423;border:1px solid #fc6423;border-radius:4px}.feed-link a i{color:#fc6423;font-size:14px}.feed-link a:hover{color:#fff;background:#fc6423}.feed-link a:hover i{color:#fff}.links-of-author{margin-top:20px}.links-of-author a{display:inline-block;vertical-align:middle;margin-right:10px;margin-bottom:10px;border-bottom-color:#555;font-size:13px}.links-of-author a:before{display:inline-block;vertical-align:middle;margin-right:3px;content:" ";width:4px;height:4px;border-radius:50%;background:#f5ffb5}.links-of-blogroll{font-size:13px}.links-of-blogroll-title{margin-top:20px;font-size:14px;font-weight:600}.links-of-blogroll-list{margin:0;padding:0}.links-of-blogroll-item{padding:2px 10px}.sidebar-nav{margin:0 0 20px;padding-left:0}.sidebar-nav li{display:inline-block;cursor:pointer;border-bottom:1px solid transparent;font-size:14px;color:#555}.sidebar-nav li:hover{color:#f5f5f5}.page-post-detail .sidebar-nav-toc{padding:0 5px}.page-post-detail .sidebar-nav-overview{margin-left:10px}.sidebar-nav .sidebar-nav-active{color:#87daff;border-bottom-color:#87daff}.sidebar-nav .sidebar-nav-active:hover{color:#87daff}.sidebar-panel{display:none}.sidebar-panel-active{display:block}.post-toc-empty{font-size:14px;color:#666}.post-toc-wrap{overflow:hidden}.post-toc{overflow:auto}.post-toc ol{margin:0;padding:0 2px 5px 10px;text-align:left;list-style:none;font-size:14px}.post-toc ol>ol{padding-left:0}.post-toc ol a{transition-duration:.2s;transition-timing-function:ease-in-out;transition-delay:0s;transition-property:all;color:#999;border-bottom-color:#555}.post-toc ol a:hover{color:#ccc;border-bottom-color:#ccc}.post-toc .nav-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.8}.post-toc .nav .nav-child{display:none}.post-toc .nav .active>.nav-child{display:block}.post-toc .nav .active-current>.nav-child{display:block}.post-toc .nav .active-current>.nav-child>.nav-item{display:block}.post-toc .nav .active>a{color:#87daff;border-bottom-color:#87daff}.post-toc .nav .active-current>a{color:#87daff}.post-toc .nav .active-current>a:hover{color:#87daff}.footer{font-size:14px;color:#999}.footer img{border:none}.footer-inner{text-align:center}.with-love{display:inline-block;margin:0 5px}.powered-by,.theme-info{display:inline-block}.powered-by{margin-right:10px}.powered-by::after{content:"|";padding-left:10px}.cc-license{margin-top:10px;text-align:center}.cc-license .cc-opacity{opacity:.7;border-bottom:none}.cc-license .cc-opacity:hover{opacity:.9}.cc-license img{display:inline-block}.theme-next #ds-thread #ds-reset{color:#555}.theme-next #ds-thread #ds-reset .ds-replybox{margin-bottom:30px}.theme-next #ds-reset .ds-avatar img,.theme-next #ds-thread #ds-reset .ds-replybox .ds-avatar{box-shadow:none}.theme-next #ds-thread #ds-reset .ds-textarea-wrapper{border-color:#c7d4e1;background:0 0;border-top-right-radius:3px;border-top-left-radius:3px}.theme-next #ds-thread #ds-reset .ds-textarea-wrapper textarea{height:60px}.theme-next #ds-reset .ds-rounded-top{border-radius:0}.theme-next #ds-thread #ds-reset .ds-post-toolbar{box-sizing:border-box;border:1px solid #c7d4e1;background:#f6f8fa}.theme-next #ds-thread #ds-reset .ds-post-options{height:40px;border:none;background:0 0}.theme-next #ds-thread #ds-reset .ds-toolbar-buttons{top:11px}.theme-next #ds-thread #ds-reset .ds-sync{top:5px}.theme-next #ds-thread #ds-reset .ds-post-button{top:4px;right:5px;width:90px;height:30px;border:1px solid #c5ced7;border-radius:3px;background-image:linear-gradient(#fbfbfc,#f5f7f9);color:#60676d}.theme-next #ds-thread #ds-reset .ds-post-button:hover{background-position:0 -30px;color:#60676d}.theme-next #ds-thread #ds-reset .ds-comments-info{padding:10px 0}.theme-next #ds-thread #ds-reset .ds-sort{display:none}.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current{border:none;background:#f6f8fa;color:#60676d}.theme-next #ds-thread #ds-reset li.ds-tab a.ds-current:hover{background-color:#e9f0f7;color:#60676d}.theme-next #ds-thread #ds-reset li.ds-tab a{border-radius:2px;padding:5px}.theme-next #ds-thread #ds-reset .ds-login-buttons p{color:#999;line-height:36px}.theme-next #ds-thread #ds-reset .ds-login-buttons .ds-service-list li{height:28px}.theme-next #ds-thread #ds-reset .ds-service-list a{background:0 0;padding:5px;border:1px solid;border-radius:3px;text-align:center}.theme-next #ds-thread #ds-reset .ds-service-list a:hover{color:#fff;background:#666}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo{color:#fc9b00;border-color:#fc9b00}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weibo:hover{background:#fc9b00}.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq{color:#60a3ec;border-color:#60a3ec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-qq:hover{background:#60a3ec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren{color:#2e7ac4;border-color:#2e7ac4}.theme-next #ds-thread #ds-reset .ds-service-list .ds-renren:hover{background:#2e7ac4}.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban{color:#37994c;border-color:#37994c}.theme-next #ds-thread #ds-reset .ds-service-list .ds-douban:hover{background:#37994c}.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin{color:#fef20d;border-color:#fef20d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-kaixin:hover{background:#fef20d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease{color:red;border-color:red}.theme-next #ds-thread #ds-reset .ds-service-list .ds-netease:hover{background:red}.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu{color:#ffcb05;border-color:#ffcb05}.theme-next #ds-thread #ds-reset .ds-service-list .ds-sohu:hover{background:#ffcb05}.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu{color:#2831e0;border-color:#2831e0}.theme-next #ds-thread #ds-reset .ds-service-list .ds-baidu:hover{background:#2831e0}.theme-next #ds-thread #ds-reset .ds-service-list .ds-google{color:#166bec;border-color:#166bec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-google:hover{background:#166bec}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin{color:#00ce0d;border-color:#00ce0d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-weixin:hover{background:#00ce0d}.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services{border:none}.theme-next #ds-thread #ds-reset .ds-service-list .ds-more-services:hover{background:0 0}.theme-next #ds-reset .duoshuo-ua-admin{display:inline-block;color:red}.theme-next #ds-reset .duoshuo-ua-browser,.theme-next #ds-reset .duoshuo-ua-platform{color:#ccc}.theme-next #ds-reset .duoshuo-ua-browser .fa,.theme-next #ds-reset .duoshuo-ua-platform .fa{display:inline-block;margin-right:3px}.theme-next #ds-reset .duoshuo-ua-separator{display:inline-block;margin-left:5px}.theme-next .this_ua{background-color:#ccc!important;border-radius:4px;padding:0 5px!important;margin:1px 1px!important;border:1px solid #bbb!important;color:#fff;display:inline-block!important}.theme-next .this_ua.admin{background-color:#d9534f!important;border-color:#d9534f!important}.theme-next .this_ua.platform.Mac,.theme-next .this_ua.platform.Windows,.theme-next .this_ua.platform.iOS{background-color:#39b3d7!important;border-color:#46b8da!important}.theme-next .this_ua.platform.Linux{background-color:#3a3a3a!important;border-color:#1f1f1f!important}.theme-next .this_ua.platform.Android{background-color:#00c47d!important;border-color:#01b171!important}.theme-next .this_ua.browser.Chrome,.theme-next .this_ua.browser.Mobile{background-color:#5cb85c!important;border-color:#4cae4c!important}.theme-next .this_ua.browser.Firefox{background-color:#f0ad4e!important;border-color:#eea236!important}.theme-next .this_ua.browser.IE,.theme-next .this_ua.browser.Maxthon{background-color:#428bca!important;border-color:#357ebd!important}.theme-next .this_ua.browser.Opera,.theme-next .this_ua.browser.UCBrowser,.theme-next .this_ua.browser.baidu{background-color:#d9534f!important;border-color:#d43f3a!important}.theme-next .this_ua.browser.Android,.theme-next .this_ua.browser.QQBrowser{background-color:#78ace9!important;border-color:#4cae4c!important}.cloud-tie-wrapper img{display:inline-block}.cloud-tie-wrapper .total-txt{font-size:1em!important}.cloud-tie-join-count .join-count{color:#555!important;font-size:inherit!important;margin:0!important}.post-spread{margin-top:20px;text-align:center}.jiathis_style{display:inline-block}.jiathis_style a{border:none}.post-spread{margin-top:20px;text-align:center}.bdshare-slide-button-box a{border:none}.bdsharebuttonbox{display:inline-block}.bdsharebuttonbox a{border:none}.local-search-pop-overlay{position:fixed;width:100%;height:100%;top:0;left:0;z-index:2080;background-color:rgba(0,0,0,.3)}.local-search-popup{display:none;position:fixed;top:10%;left:50%;margin-left:-350px;width:700px;height:80%;padding:0;background:#fff;color:#333;z-index:9999;border-radius:5px}@media (max-width:767px){.local-search-popup{padding:0;top:0;left:0;margin:0;width:100%;height:100%;border-radius:0}}.local-search-popup ul.search-result-list{padding:0;margin:0 5px}.local-search-popup p.search-result{border-bottom:1px dashed #ccc;padding:5px 0}.local-search-popup a.search-result-title{font-weight:700;font-size:16px}.local-search-popup .search-keyword{border-bottom:1px dashed red;font-size:14px;font-weight:700;color:red}.local-search-popup .local-search-header{padding:5px;height:36px;background:#f5f5f5;border-top-left-radius:5px;border-top-right-radius:5px}.local-search-popup #local-search-result{overflow:auto;position:relative;padding:5px 25px;height:calc(100% - 55px)}.local-search-popup .local-search-input-wrapper{display:inline-block;width:calc(100% - 60px);height:36px;line-height:36px;padding:0 5px}.local-search-popup .local-search-input-wrapper input{padding:8px 0;height:20px;display:block;width:100%;outline:0;border:none;background:0 0;vertical-align:middle}.local-search-popup .popup-btn-close,.local-search-popup .search-icon{display:inline-block;font-size:18px;color:#999;height:36px;width:18px}.local-search-popup .search-icon{float:left}.local-search-popup .popup-btn-close{border-left:1px solid #eee;float:right;cursor:pointer;padding-left:10px}.local-search-popup #no-result{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#ccc}.page-pv,.site-pv,.site-uv{display:inline-block}.page-pv .busuanzi-value,.site-pv .busuanzi-value,.site-uv .busuanzi-value{margin:0 5px}.site-uv{margin-right:10px}.site-uv::after{content:"|";padding-left:10px}.use-motion .post{opacity:0}.page-archive .archive-page-counter{position:relative;top:3px;left:20px}@media (max-width:767px){.page-archive .archive-page-counter{top:5px}}.page-archive .posts-collapse .archive-move-on{position:absolute;top:11px;left:0;margin-left:-6px;width:10px;height:10px;opacity:.5;background:#555;border:1px solid #fff;border-radius:50%}.category-all-page .category-all-title{text-align:center}.category-all-page .category-all{margin-top:20px}.category-all-page .category-list{margin:0;padding:0;list-style:none}.category-all-page .category-list-item{margin:5px 10px}.category-all-page .category-list-count{color:#bbb}.category-all-page .category-list-count:before{display:inline;content:" ("}.category-all-page .category-list-count:after{display:inline;content:") "}.category-all-page .category-list-child{padding-left:10px}#schedule ul#event-list{padding-left:30px}#schedule ul#event-list hr{margin:20px 0 45px 0!important;background:#222}#schedule ul#event-list hr:after{display:inline-block;content:'NOW';background:#222;color:#fff;font-weight:700;text-align:right;padding:0 5px}#schedule ul#event-list li.event{margin:20px 0;background:#f9f9f9;padding-left:10px;min-height:40px}#schedule ul#event-list li.event h2.event-summary{margin:0;padding-bottom:3px}#schedule ul#event-list li.event h2.event-summary:before{display:inline-block;font-family:FontAwesome;font-size:8px;content:'\f111';vertical-align:middle;margin-right:25px;color:#bbb}#schedule ul#event-list li.event span.event-relative-time{display:inline-block;font-size:12px;font-weight:400;padding-left:12px;color:#bbb}#schedule ul#event-list li.event span.event-details{display:block;color:#bbb;margin-left:56px;padding-top:3px;padding-bottom:6px;text-indent:-24px;line-height:18px}#schedule ul#event-list li.event span.event-details:before{text-indent:0;display:inline-block;width:14px;font-family:FontAwesome;text-align:center;margin-right:9px;color:#bbb}#schedule ul#event-list li.event span.event-details.event-location:before{content:'\f041'}#schedule ul#event-list li.event span.event-details.event-duration:before{content:'\f017'}#schedule ul#event-list li.event-past{background:#fcfcfc}#schedule ul#event-list li.event-past>*{opacity:.6}#schedule ul#event-list li.event-past h2.event-summary{color:#bbb}#schedule ul#event-list li.event-past h2.event-summary:before{color:#dfdfdf}#schedule ul#event-list li.event-now{background:#222;color:#fff;padding:15px 0 15px 10px}#schedule ul#event-list li.event-now h2.event-summary:before{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2);color:#fff;animation:dot-flash 1s alternate infinite ease-in-out}#schedule ul#event-list li.event-now *{color:#fff!important}@-moz-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@-o-keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}@keyframes dot-flash{from{opacity:1;-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);transform:scale(1.1)}to{opacity:0;-webkit-transform:scale(1);-moz-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}}.page-post-detail .sidebar-toggle-line{background:#87daff}.page-post-detail .comments{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:20px 0 10px}p{margin:0 0 25px 0}a{border-bottom-color:#ccc}hr{margin:20px 0;height:2px}.main-inner{margin-top:80px}.header{background:#f5f5f5}.header-inner{padding:25px 0 20px}.header-inner:after,.header-inner:before{content:" ";display:table}.header-inner:after{clear:both}@media (max-width:767px){.header-inner{width:auto;margin-bottom:50px;padding:10px}}.site-meta{float:left;margin-left:-20px;line-height:normal}@media (max-width:767px){.site-meta{margin-left:10px}}.site-meta .brand{padding:2px 1px;background:0 0}@media (max-width:767px){.site-meta .brand{display:block}}.site-meta .logo{display:none}.site-meta .site-title{font-size:22px;font-weight:bolder}@media (max-width:767px){.site-meta .site-title{line-height:34px}}.logo-line-after,.logo-line-before{display:block;overflow:hidden;margin:0 auto;width:75%}@media (max-width:767px){.logo-line-after,.logo-line-before{display:none}}.logo-line-after i,.logo-line-before i{position:relative;display:block;height:2px;background:#222}@media (max-width:767px){.logo-line-after i,.logo-line-before i{height:3px}}.use-motion .logo-line-before i{left:-100%}.use-motion .logo-line-after i{right:-100%}.site-subtitle{display:none}.site-nav-toggle{position:static;float:right}.menu{float:right;margin:8px 0 0 0}@media (max-width:767px){.menu{margin:20px 0 0 0;padding:0}}.menu br{display:none}.menu .menu-item{margin:0}@media (max-width:767px){.menu .menu-item{display:block}}.menu .menu-item a{padding:0 10px;background:0 0;border:none;border-radius:2px;transition-property:background}@media (max-width:767px){.menu .menu-item a{text-align:left}}.menu .menu-item a:hover{background:#e1e1e1}.menu a::before{display:none}@media (max-width:767px){.menu a::before{display:block}}@media (max-width:767px){.menu{float:none}}.site-search form{display:none}.posts-expand{padding-top:0}.posts-expand .post-meta,.posts-expand .post-title{text-align:left}@media (max-width:767px){.posts-expand .post-meta,.posts-expand .post-title{text-align:center}}.posts-expand .post-eof{display:none}.posts-expand .post{margin-top:120px}.posts-expand .post:first-child{margin-top:0}.posts-expand .post-meta{margin-top:5px;margin-bottom:20px}.posts-expand .post-title{position:relative;font-size:26px;font-weight:400}@media (max-width:767px){.posts-expand .post-title{font-size:20px}}@media (min-width:1600px){.posts-expand .post-title{font-size:26px}}.posts-expand .post-title:hover:before{background:#222}.posts-expand .post-body img{margin:0}.posts-expand .post-tags{text-align:left}.posts-expand .post-tags a{padding:1px 5px;background:#f5f5f5;border-bottom:none}.posts-expand .post-tags a:hover{background:#ccc}.posts-expand .post-nav{margin-top:40px}.post-button{margin-top:20px;text-align:left}.post-button a{margin:0 8px 8px 0!important;padding:0;font-size:14px;color:#666;background:0 0;border:none;border-bottom:2px solid #666;transition-property:border}@media (max-width:767px){.post-button a{font-size:12px}}@media (min-width:1600px){.post-button a{font-size:16px}}.post-button a:hover{border-bottom-color:#222}.links-of-blogroll-inline .links-of-blogroll-item{display:inline-block}.btn{padding:0 10px;border-width:2px;border-radius:0}.headband{display:none}.site-search{position:relative;float:right;margin-top:5px;padding-top:3px}@media (max-width:767px){.site-search{float:none;padding:0 10px}}@media (max-width:767px){.container .main-inner{width:auto}}.page-post-detail .post-meta,.page-post-detail .post-title{text-align:center}.page-post-detail .post-title:before{display:none}.page-post-detail .post-meta{margin-bottom:60px}.pagination{margin:120px 0 0;text-align:left}@media (max-width:767px){.pagination{margin:80px 10px 0;text-align:center}}.footer{margin-top:80px;padding:10px 0;background:#f5f5f5;color:#666}.footer-inner{margin:0 auto;text-align:left}@media (max-width:767px){.footer-inner{width:auto;text-align:center}}.post{margin-top:60px;margin-bottom:60px;padding:25px;-webkit-box-shadow:0 0 5px rgba(202,203,203,.5);-moz-box-shadow:0 0 5px rgba(202,203,204,.5)} /* rebuild by neat */ \ No newline at end of file diff --git a/lib/fancybox/source/helpers/jquery.fancybox-buttons.css b/lib/fancybox/source/helpers/jquery.fancybox-buttons.css index 8958262356..7e7acee7c1 100644 --- a/lib/fancybox/source/helpers/jquery.fancybox-buttons.css +++ b/lib/fancybox/source/helpers/jquery.fancybox-buttons.css @@ -1,3 +1,3 @@ -/* build time:Mon Jul 24 2023 09:52:53 GMT+0800 (中国标准时间)*/ +/* build time:Mon Jul 24 2023 09:55:56 GMT+0800 (中国标准时间)*/ #fancybox-buttons{position:fixed;left:0;width:100%;z-index:8050}#fancybox-buttons.top{top:10px}#fancybox-buttons.bottom{bottom:10px}#fancybox-buttons ul{display:block;width:166px;height:30px;margin:0 auto;padding:0;list-style:none;border:1px solid #111;border-radius:3px;-webkit-box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);-moz-box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05);background:#323232;background:-moz-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#444),color-stop(50%,#343434),color-stop(50%,#292929),color-stop(100%,#333));background:-webkit-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-o-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:-ms-linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%);background:linear-gradient(top,#444 0,#343434 50%,#292929 50%,#333 100%)}#fancybox-buttons ul li{float:left;margin:0;padding:0}#fancybox-buttons a{display:block;width:30px;height:30px;text-indent:-9999px;background-color:transparent;background-image:url(fancybox_buttons.png);background-repeat:no-repeat;outline:0;opacity:.8}#fancybox-buttons a:hover{opacity:1}#fancybox-buttons a.btnPrev{background-position:5px 0}#fancybox-buttons a.btnNext{background-position:-33px 0;border-right:1px solid #3e3e3e}#fancybox-buttons a.btnPlay{background-position:0 -30px}#fancybox-buttons a.btnPlayOn{background-position:-30px -30px}#fancybox-buttons a.btnToggle{background-position:3px -60px;border-left:1px solid #111;border-right:1px solid #3e3e3e;width:35px}#fancybox-buttons a.btnToggleOn{background-position:-27px -60px}#fancybox-buttons a.btnClose{border-left:1px solid #111;width:35px;background-position:-56px 0}#fancybox-buttons a.btnDisabled{opacity:.4;cursor:default} /* rebuild by neat */ \ No newline at end of file diff --git a/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css b/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css index f7d428c3ae..d5de82891d 100644 --- a/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css +++ b/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css @@ -1,3 +1,3 @@ -/* build time:Mon Jul 24 2023 09:52:53 GMT+0800 (中国标准时间)*/ +/* build time:Mon Jul 24 2023 09:55:56 GMT+0800 (中国标准时间)*/ #fancybox-thumbs{position:fixed;left:0;width:100%;overflow:hidden;z-index:8050}#fancybox-thumbs.bottom{bottom:2px}#fancybox-thumbs.top{top:2px}#fancybox-thumbs ul{position:relative;list-style:none;margin:0;padding:0}#fancybox-thumbs ul li{float:left;padding:1px;opacity:.5}#fancybox-thumbs ul li.active{opacity:.75;padding:0;border:1px solid #fff}#fancybox-thumbs ul li:hover{opacity:1}#fancybox-thumbs ul li a{display:block;position:relative;overflow:hidden;border:1px solid #222;background:#111;outline:0}#fancybox-thumbs ul li img{display:block;position:relative;border:0;padding:0;max-width:none} /* rebuild by neat */ \ No newline at end of file diff --git a/lib/fancybox/source/jquery.fancybox.css b/lib/fancybox/source/jquery.fancybox.css index c8f107a601..46ef5f2985 100644 --- a/lib/fancybox/source/jquery.fancybox.css +++ b/lib/fancybox/source/jquery.fancybox.css @@ -1,3 +1,3 @@ -/* build time:Mon Jul 24 2023 09:52:53 GMT+0800 (中国标准时间)*/ +/* build time:Mon Jul 24 2023 09:55:56 GMT+0800 (中国标准时间)*/ /*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */.fancybox-image,.fancybox-inner,.fancybox-nav,.fancybox-nav span,.fancybox-outer,.fancybox-skin,.fancybox-tmp,.fancybox-wrap,.fancybox-wrap iframe,.fancybox-wrap object{padding:0;margin:0;border:0;outline:0;vertical-align:top}.fancybox-wrap{position:absolute;top:0;left:0;z-index:8020}.fancybox-skin{position:relative;background:#f9f9f9;color:#444;text-shadow:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.fancybox-opened{z-index:8030}.fancybox-opened .fancybox-skin{-webkit-box-shadow:0 10px 25px rgba(0,0,0,.5);-moz-box-shadow:0 10px 25px rgba(0,0,0,.5);box-shadow:0 10px 25px rgba(0,0,0,.5)}.fancybox-inner,.fancybox-outer{position:relative}.fancybox-inner{overflow:hidden}.fancybox-type-iframe .fancybox-inner{-webkit-overflow-scrolling:touch}.fancybox-error{color:#444;font:14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;margin:0;padding:15px;white-space:nowrap}.fancybox-iframe,.fancybox-image{display:block;width:100%;height:100%}.fancybox-image{max-width:100%;max-height:100%}#fancybox-loading,.fancybox-close,.fancybox-next span,.fancybox-prev span{background-image:url(fancybox_sprite.png)}#fancybox-loading{position:fixed;top:50%;left:50%;margin-top:-22px;margin-left:-22px;background-position:0 -108px;opacity:.8;cursor:pointer;z-index:8060}#fancybox-loading div{width:44px;height:44px;background:url(fancybox_loading.gif) center center no-repeat}.fancybox-close{position:absolute;top:-18px;right:-18px;width:36px;height:36px;cursor:pointer;z-index:8040}.fancybox-nav{position:absolute;top:0;width:40%;height:100%;cursor:pointer;text-decoration:none;background:transparent url(blank.gif);-webkit-tap-highlight-color:transparent;z-index:8040}.fancybox-prev{left:0}.fancybox-next{right:0}.fancybox-nav span{position:absolute;top:50%;width:36px;height:34px;margin-top:-18px;cursor:pointer;z-index:8040;visibility:hidden}.fancybox-prev span{left:10px;background-position:0 -36px}.fancybox-next span{right:10px;background-position:0 -72px}.fancybox-nav:hover span{visibility:visible}.fancybox-tmp{position:absolute;top:-99999px;left:-99999px;visibility:hidden;max-width:99999px;max-height:99999px;overflow:visible!important}.fancybox-lock{overflow:hidden!important;width:auto}.fancybox-lock body{overflow:hidden!important}.fancybox-lock-test{overflow-y:hidden!important}.fancybox-overlay{position:absolute;top:0;left:0;overflow:hidden;display:none;z-index:8010;background:url(fancybox_overlay.png)}.fancybox-overlay-fixed{position:fixed;bottom:0;right:0}.fancybox-lock .fancybox-overlay{overflow:auto;overflow-y:scroll}.fancybox-title{visibility:hidden;font:normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;position:relative;text-shadow:none;z-index:8050}.fancybox-opened .fancybox-title{visibility:visible}.fancybox-title-float-wrap{position:absolute;bottom:0;right:50%;margin-bottom:-35px;z-index:8050;text-align:center}.fancybox-title-float-wrap .child{display:inline-block;margin-right:-100%;padding:2px 20px;background:0 0;background:rgba(0,0,0,.8);-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;text-shadow:0 1px 2px #222;color:#fff;font-weight:700;line-height:24px;white-space:nowrap}.fancybox-title-outside-wrap{position:relative;margin-top:10px;color:#fff}.fancybox-title-inside-wrap{padding-top:10px}.fancybox-title-over-wrap{position:absolute;bottom:0;left:0;color:#fff;padding:10px;background:#000;background:rgba(0,0,0,.8)}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){#fancybox-loading,.fancybox-close,.fancybox-next span,.fancybox-prev span{background-image:url(fancybox_sprite@2x.png);background-size:44px 152px}#fancybox-loading div{background-image:url(fancybox_loading@2x.gif);background-size:24px 24px}} /* rebuild by neat */ \ No newline at end of file diff --git a/lib/font-awesome/css/font-awesome.css b/lib/font-awesome/css/font-awesome.css index a773b12aeb..70e48a8562 100644 --- a/lib/font-awesome/css/font-awesome.css +++ b/lib/font-awesome/css/font-awesome.css @@ -1,4 +1,4 @@ -/* build time:Mon Jul 24 2023 09:52:53 GMT+0800 (中国标准时间)*/ +/* build time:Mon Jul 24 2023 09:55:56 GMT+0800 (中国标准时间)*/ /*! * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) diff --git a/post-sitemap.xml b/post-sitemap.xml index 24859240c2..a8053fc978 100644 --- a/post-sitemap.xml +++ b/post-sitemap.xml @@ -681,7 +681,7 @@ - https://mds1455975151.github.io/archives/a946f55.html + https://mds1455975151.github.io/archives/b791b27f.html 2020-04-03T07:09:13.970Z weekly 0.6 @@ -689,7 +689,7 @@ - https://mds1455975151.github.io/archives/b791b27f.html + https://mds1455975151.github.io/archives/a946f55.html 2020-04-03T07:09:13.970Z weekly 0.6 diff --git a/search.xml b/search.xml index 80e847ed04..7bf2d7c2ca 100644 --- a/search.xml +++ b/search.xml @@ -1360,7 +1360,7 @@ /archives/bdb4d807.html -

Linux之服务器修改SSH默认端口后git访问设置

前言

由于安全或者其它原因,可能会修改默认的SSH服务端口号,默认情况下,已有的git项目在pull或者push的时候会报错。
假设原来的项目的remote设置为git@github.com:mds1455975151/tools.git,将服务器SSH默认端口修改为4000后,导致pull或push出错。
报错信息如下:

1
2
3
4
5
6
# git pull
ssh: connect to host github.com port 4000: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

实践记录

解决方案1:直接修改URL为SSH://开头

1
2
3
4
5
# git remote -v
origin git@github.com:mds1455975151/tools.git (fetch)
origin git@github.com:mds1455975151/tools.git (push)
# git remote set-url origin ssh://git@github.com:22/mds1455975151/tools.git
# git pull

由于修改了访问方式需要添加github的deploy key

解决方案2:修改本地配置文件

1
2
3
4
5
6
7
8
9
10
11
# cat >>~/.ssh/config<<EOF

host proxy.github.com
Hostname github.com
Port 22
EOF
# git remote -v
origin git@github.com:mds1455975151/tools.git (fetch)
origin git@github.com:mds1455975151/tools.git (push)
# git remote set-url origin git@proxy.github.com:mds1455975151/tools.git
# git pull

参考资料

https://blog.csdn.net/yuliying/article/details/68956765

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/bdb4d807.html
__版权声明__:转载请注明出处!

]]>
+

Linux之服务器修改SSH默认端口后git访问设置

前言

由于安全或者其它原因,可能会修改默认的SSH服务端口号,默认情况下,已有的git项目在pull或者push的时候会报错。
假设原来的项目的remote设置为git@github.com:mds1455975151/tools.git,将服务器SSH默认端口修改为4000后,导致pull或push出错。
报错信息如下:

1
2
3
4
5
6
# git pull
ssh: connect to host github.com port 4000: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

实践记录

解决方案1:直接修改URL为SSH://开头

1
2
3
4
5
# git remote -v
origin git@github.com:mds1455975151/tools.git (fetch)
origin git@github.com:mds1455975151/tools.git (push)
# git remote set-url origin ssh://git@github.com:22/mds1455975151/tools.git
# git pull

由于修改了访问方式需要添加github的deploy key

解决方案2:修改本地配置文件

1
2
3
4
5
6
7
8
9
10
11
# cat >>~/.ssh/config<<EOF

host proxy.github.com
Hostname github.com
Port 22
EOF
# git remote -v
origin git@github.com:mds1455975151/tools.git (fetch)
origin git@github.com:mds1455975151/tools.git (push)
# git remote set-url origin git@proxy.github.com:mds1455975151/tools.git
# git pull

参考资料

https://blog.csdn.net/yuliying/article/details/68956765

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/bdb4d807.html
__版权声明__:转载请注明出处!

]]>
@@ -4353,7 +4353,7 @@ /archives/885609a5.html -

GitLab介绍

GitLab简介

GitLab 是一个用于仓库管理系统的开源项目。即使用git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab特点

1、web框架使用ruby on rails
2、基于MIT代码发布协议
3、需要gitolite协调工作

GitLab架构

1、前端:Nginx,用于git tool走http或https协议
2、后端:gitlab服务,采用ruby on Rails框架,通过unicorn实现后台服务及多进程
3、SSHD:开启sshd服务,用于用户上传ssh key进行版本克隆及上传。注:用户上传的ssh key是保存到git账户中
4、数据库:目前仅支持MySQL和PostgreSQL
5、Redis:用于存储用户session和任务,任务包括新建仓库、发送邮件等等
6、Sidekiq:Rails框架自带的,订阅redis中的任务并执行

GitLab部署配置(RPM安装)

GitLab资料

官网部署说明:
https://about.gitlab.com/downloads/#centos6
http://www.gitlab.cc/downloads/#centos6(中文)

手册:http://doc.gitlab.com/omnibus/
资料:http://www.tuicool.com/articles/ZR7rmuz

官网支持的方式:
1)包含一切的rpm包(官方推荐)
https://about.gitlab.com/downloads/
2)手动安装(深入了解)
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md
3)第三方docker镜像
https://github.com/sameersbn/docker-gitlab
资料:http://www.tuicool.com/articles/bYbi2mJ

安装配置依赖项

如果已经安装了Postfix来发送邮件请在安装期间选择 ‘Internet Site’. 你也可以用Sendmail或者使用自定义的SMTP服务器来代替Postfix. 如果希望使用 Exim, 请把它当做SMTP来配置.在Centos 6和7上, 下面的命令也会配置系统防火墙,把HTTP和SSH端口开放.

1
2
3
4
yum install curl openssh-server postfix cronie
service postfix start
chkconfig postfix on
lokkit -s http -s ssh

添加并安装GitLab软件包

1
2
curl http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce

如果不习惯这种通过管道命令安装的方式,可以在这里找到完整的安装脚本.或者你可以选择对应系统的GitLab安装包 并使用下面的命令进行安装

1
2
curl -LJO http://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-XXX.rpm/download
rpm -i gitlab-ce-XXX.rpm

(推荐使用gitlab-ce镜像站,下载后保留使用300M左右)
国内yum源:
https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/

配置和使用GitLab

1
gitlab-ctl reconfigure

在浏览器访问GitLab主机名

1
2
Username: root
Password: 5iveL!fe

修改域名

默认的配置文件保存在 /etc/gitlab/gitlab.rb ,执行:

1
2
3
vim /etc/gitlab/gitlab.rb
external_url 'http://your.domain'
gitlab-ctl reconfigure

有一定概率出现 502 错误,刷新浏览器或者再次更新配置即可。

界面汉化(测试通过)

问题:保证版本一致性,否则上传代码会触发bug
由于服务对象是广大师生,为了降低新手上手的难度,所有进行汉化也是非常有必要的。好在国内有人已经进行了这方面的工作,我们只需要共享其成果即可(欢迎向原项目提交高质量翻译)。
首先确认版本:

1
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

并确认当前汉化版本的VERSION 是否相同,当前最新的汉化版本为8.6。如果安装版本小于当前汉化版本,请先升级。如果安装版本大于当前汉化版本,请在本项目中提交新的issue。如果版本相同,首先在本地 clone 仓库。
GitLab.com 仓库

1
git clone https://gitlab.com/larryli/gitlab.git

Coding.net 镜像

1
git clone https://git.coding.net/larryli/gitlab.git

根据我的测试,Coding.net的镜像不完整,clone之后无法checkout。然后比较汉化分支和原分支,导出 patch用的diff文件。

8.1 版本的汉化补丁

1
git diff origin/8-6-stable..8-6-zh > ../8.6.diff   (已经生成可以直接进行下面的操作)

然后上传 8.6.diff 文件到服务器。
停止 gitlab

1
2
gitlab-ctl stop
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 8.6.diff

确定没有.rej文件,重启 GitLab即可。

1
gitlab-ctl start

如果汉化中出现问题,请重新安装 GitLab( 注意备份数据 )。

GitLab管理

启动、停止、重启组件

1
2
3
gitlab-ctl start    启动所有 GitLab 组件
gitlab-ctl stop 停止所有 GitLab 组件
gitlab-ctl restart 重启所有 GitLab 组件

常用管理命令

相关操作

1
2
3
4
5
6
7
8
9
10
gitlab-ctl reconfigure       如果更改了主配置文件 [gitlab.rb文件],使配置文件生效 但是会初始化除了gitlab.rb之外的所有文件
gitlab-ctl show-config 验证配置文件
gitlab-ctl restart 重启gitlab服务
gitlab-ctl stop unicorn 停止组件内某一个服务
gitlab-ctl status unicorn 查看状态
gitlab-ctl kill unicorn kill掉某一个服务
gitlab-ctl status unicorn 再次查看状态
gitlab-ctl start unicorn 启动服务
gitlab-rake gitlab:env:info 系统信息监测
gitlab-rake gitlab:check 各种状态监测

相关目录

1
2
3
4
5
6
/var/opt/gitlab/git-data/repositories/root 库默认存储目录
/opt/gitlab 是gitlab的应用代码和相应的依赖程序
/var/opt/gitlab 此目录下是运行gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
/etc/gitlab 此目录下存放了以omnibus-gitlab包安装方式时的配置文件,这里的配置文件才需要管理员手动编译配置
/var/log/gitlab 此目录下存放了gitlab各个组件产生的日志
/var/opt/gitlab/backups/ 备份文件生成的目录

备份和恢复

备份

备份GitLab repositories and GitLab metadata
在 crontab 中加入如下命令:

1
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@vm10-253-26-148 gitlab-workhorse]# /usr/bin/gitlab-rake gitlab:backup:create
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
* root/jsws ... [DONE]
* root/jsws.wiki ... [SKIPPED]
done
Dumping uploads ...
done
Dumping builds ...
done
Dumping artifacts ...
done
Dumping lfs objects ...
done
Creating backup archive: 1461569556_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
Deleting old backups ... Skipping

默认生成备份文件的路径:

1
2
3
4
5
6
[root@vm10-253-26-148 gitlab-workhorse]# cd /var/opt/gitlab/backups/
[root@vm10-253-26-148 backups]# ls -al
total 88
drwx------ 2 git root 4096 Apr 25 15:32 .
drwxr-xr-x 13 root root 4096 Apr 22 15:25 ..
-rw------- 1 git git 81920 Apr 25 15:32 1461569556_gitlab_backup.tar

注:备份文件是一个归档文件,且开头是unix时间
在实际的生产环境中备份策略建议:本地保留三天,在异地备份永久保存
这里以unix时间戳来标记备份的时间,这个时间戳对人来说不好读懂,可使用date命令把其转换成人可读的格式,如下:

1
2
root@test1:~/backup# date -d @1453432213
2016年 01月 22日 星期五 11:10:13 CST

修改备份目录

1
2
3
4
root@test1:~/backup# vim /etc/gitlab/gitlab.rb:
gitlab_rails['backup_path'] = "/data/git-backups"
# limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800

创建备份目录,修改属主和属组:

1
2
root@test1:~# mkdir /data/git-backups
chown -R git.git /data/git-backups

手动进行一次备份,测试一下备份是否有效,测试备份正常,添加定时任务即可

恢复

首先进入备份 GitLab 的目录,这个目录是配置文件中的 gitlab_rails[‘backup_path’] ,默认为 /var/opt/gitlab/backups 。然后停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。

1
2
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

然后恢复数据,1406691018为备份文件的时间戳

1
gitlab-rake gitlab:backup:restore BACKUP=1406691018

GitLab命令

1
2
3
4
5
6
7
8
9
10
11
[root@vm10-253-26-148 ~]# git
git
gitk
gitlab-rails
git-receive-pack
git-upload-archive
git-cvsserver
gitlab-ctl # GitLab服务管理
gitlab-rake
git-shell
git-upload-pack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@vm10-253-26-148 ~]# gitlab-ctl
I don\'t know that command.
/opt/gitlab/embedded/bin/omnibus-ctl: command (subcommand)
deploy-page
Put up the deploy page
remove-accounts
Delete *all* users and groups used by this package
upgrade
Run migrations after a package upgrade
General Commands:
cleanse
Delete *all* gitlab data, and start from scratch.
help
Print this help message.
reconfigure
Reconfigure the application.
show-config
Show the configuration that would be generated by reconfigure.
uninstall
Kill all processes and uninstall the process supervisor (data will be preserved).
Service Management Commands:
graceful-kill
Attempt a graceful stop, then SIGKILL the entire process group.
hup
Send the services a HUP.
int
Send the services an INT.
kill
Send the services a KILL.
once
Start the services if they are down. Do not restart them if they stop.
restart
Stop the services if they are running, then start them again.
service-list
List all the services (enabled services appear with a *.)
start
Start services if they are down, and restart them if they stop.
status
Show the status of all the services.
stop
Stop the services, and do not restart them.
tail
Watch the service logs of all enabled services.
term
Send the services a TERM.

gitlab-ce官方文档查看备录(重要)

文章地址:http://www.178linux.com/7985

邮箱设置

1)GitLab中使用postfix进行邮件发送。因此,可以卸载系统中自带的sendmail。
使用yum list installed查看系统中是否存在sendmail,若存在,则使用yum remove sendmail指令进行卸载。
2)测试系统是否可以正常发送邮件。

1
echo "Test mail from postfix" | mail -s "Test Postfix" xxx@xxx.com

注:上面的xxx@xxx.com为你希望收到邮件的邮箱地址。

当邮箱收到系统发送来的邮件时,将系统的地址复制下来,如:root@iZ23syflhhzZ.localdomain,打开/etc/gitlab/gitlab.rb,将
gitlab_rails[‘gitlab_email_from’] = ‘gitlab@example.com
修改为
gitlab_rails[‘gitlab_email_from’] = ‘root@iZ23syflhhzZ.localdomain
保存后,执行sudo gitlab-ctl reconfigure重新编译GitLab。如果邮箱的过滤功能较强,请添加系统的发件地址到邮箱的白名单中,防止邮件被过滤。
Note:系统中邮件发送的日志可通过tail /var/log/maillog命令进行查看。

开启HTTPS

FQA

1)在浏览器中访问GitLab出现502错误
原因:内存不足。
解决办法:检查系统的虚拟内存是否随机启动了,如果系统无虚拟内存,则增加虚拟内存,再重新启动系统。
2)80端口冲突
原因:Nginx默认使用了80端口。
解决办法:为了使Nginx与Apache能够共存,并且为了简化GitLab的URL地址,Nginx端口保持不变,修改Apache的端口为4040。这样就可以直接用使用ip访问Gitlab。而禅道则可以使用4040端口进行访问,像这样:xxx.xx.xxx.xx:4040/zentao。具体修改的地方在/etc/httpd/conf/httpd.conf这个文件中,找到Listen 80这一句并将之注释掉,在底下添加一句Listen 4040,保存后执行service httpd restart重启apache服务即可。
#Listen 80
Listen 4040
3)8080端口冲突
原因:由于unicorn默认使用的是8080端口。
解决办法:打开/etc/gitlab/gitlab.rb,打开# unicorn[‘port’] = 8080的注释,将8080修改为9090,保存后运行sudo gitlab-ctl reconfigure即可。
4)STMP设置
配置无效,暂时不知道原因。
5)GitLab头像无法正常显示
原因:gravatar被墙
解决办法:
编辑 /etc/gitlab/gitlab.rb,将

#gitlab_rails[‘gravatar_plain_url’] = ‘http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon
修改为:
gitlab_rails[‘gravatar_plain_url’] = ‘http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon

然后在命令行执行:

1
2
gitlab-ctl reconfigure
gitlab-rake cache:clear RAILS_ENV=production

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/885609a5.html
__版权声明__:转载请注明出处!

]]>
+

GitLab介绍

GitLab简介

GitLab 是一个用于仓库管理系统的开源项目。即使用git作为代码管理工具,并在此基础上搭建起来的web服务。

GitLab特点

1、web框架使用ruby on rails
2、基于MIT代码发布协议
3、需要gitolite协调工作

GitLab架构

1、前端:Nginx,用于git tool走http或https协议
2、后端:gitlab服务,采用ruby on Rails框架,通过unicorn实现后台服务及多进程
3、SSHD:开启sshd服务,用于用户上传ssh key进行版本克隆及上传。注:用户上传的ssh key是保存到git账户中
4、数据库:目前仅支持MySQL和PostgreSQL
5、Redis:用于存储用户session和任务,任务包括新建仓库、发送邮件等等
6、Sidekiq:Rails框架自带的,订阅redis中的任务并执行

GitLab部署配置(RPM安装)

GitLab资料

官网部署说明:
https://about.gitlab.com/downloads/#centos6
http://www.gitlab.cc/downloads/#centos6(中文)

手册:http://doc.gitlab.com/omnibus/
资料:http://www.tuicool.com/articles/ZR7rmuz

官网支持的方式:
1)包含一切的rpm包(官方推荐)
https://about.gitlab.com/downloads/
2)手动安装(深入了解)
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md
3)第三方docker镜像
https://github.com/sameersbn/docker-gitlab
资料:http://www.tuicool.com/articles/bYbi2mJ

安装配置依赖项

如果已经安装了Postfix来发送邮件请在安装期间选择 ‘Internet Site’. 你也可以用Sendmail或者使用自定义的SMTP服务器来代替Postfix. 如果希望使用 Exim, 请把它当做SMTP来配置.在Centos 6和7上, 下面的命令也会配置系统防火墙,把HTTP和SSH端口开放.

1
2
3
4
yum install curl openssh-server postfix cronie
service postfix start
chkconfig postfix on
lokkit -s http -s ssh

添加并安装GitLab软件包

1
2
curl http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
yum install gitlab-ce

如果不习惯这种通过管道命令安装的方式,可以在这里找到完整的安装脚本.或者你可以选择对应系统的GitLab安装包 并使用下面的命令进行安装

1
2
curl -LJO http://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-XXX.rpm/download
rpm -i gitlab-ce-XXX.rpm

(推荐使用gitlab-ce镜像站,下载后保留使用300M左右)
国内yum源:
https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/

配置和使用GitLab

1
gitlab-ctl reconfigure

在浏览器访问GitLab主机名

1
2
Username: root
Password: 5iveL!fe

修改域名

默认的配置文件保存在 /etc/gitlab/gitlab.rb ,执行:

1
2
3
vim /etc/gitlab/gitlab.rb
external_url 'http://your.domain'
gitlab-ctl reconfigure

有一定概率出现 502 错误,刷新浏览器或者再次更新配置即可。

界面汉化(测试通过)

问题:保证版本一致性,否则上传代码会触发bug
由于服务对象是广大师生,为了降低新手上手的难度,所有进行汉化也是非常有必要的。好在国内有人已经进行了这方面的工作,我们只需要共享其成果即可(欢迎向原项目提交高质量翻译)。
首先确认版本:

1
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

并确认当前汉化版本的VERSION 是否相同,当前最新的汉化版本为8.6。如果安装版本小于当前汉化版本,请先升级。如果安装版本大于当前汉化版本,请在本项目中提交新的issue。如果版本相同,首先在本地 clone 仓库。
GitLab.com 仓库

1
git clone https://gitlab.com/larryli/gitlab.git

Coding.net 镜像

1
git clone https://git.coding.net/larryli/gitlab.git

根据我的测试,Coding.net的镜像不完整,clone之后无法checkout。然后比较汉化分支和原分支,导出 patch用的diff文件。

8.1 版本的汉化补丁

1
git diff origin/8-6-stable..8-6-zh > ../8.6.diff   (已经生成可以直接进行下面的操作)

然后上传 8.6.diff 文件到服务器。
停止 gitlab

1
2
gitlab-ctl stop
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 8.6.diff

确定没有.rej文件,重启 GitLab即可。

1
gitlab-ctl start

如果汉化中出现问题,请重新安装 GitLab( 注意备份数据 )。

GitLab管理

启动、停止、重启组件

1
2
3
gitlab-ctl start    启动所有 GitLab 组件
gitlab-ctl stop 停止所有 GitLab 组件
gitlab-ctl restart 重启所有 GitLab 组件

常用管理命令

相关操作

1
2
3
4
5
6
7
8
9
10
gitlab-ctl reconfigure       如果更改了主配置文件 [gitlab.rb文件],使配置文件生效 但是会初始化除了gitlab.rb之外的所有文件
gitlab-ctl show-config 验证配置文件
gitlab-ctl restart 重启gitlab服务
gitlab-ctl stop unicorn 停止组件内某一个服务
gitlab-ctl status unicorn 查看状态
gitlab-ctl kill unicorn kill掉某一个服务
gitlab-ctl status unicorn 再次查看状态
gitlab-ctl start unicorn 启动服务
gitlab-rake gitlab:env:info 系统信息监测
gitlab-rake gitlab:check 各种状态监测

相关目录

1
2
3
4
5
6
/var/opt/gitlab/git-data/repositories/root 库默认存储目录
/opt/gitlab 是gitlab的应用代码和相应的依赖程序
/var/opt/gitlab 此目录下是运行gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
/etc/gitlab 此目录下存放了以omnibus-gitlab包安装方式时的配置文件,这里的配置文件才需要管理员手动编译配置
/var/log/gitlab 此目录下存放了gitlab各个组件产生的日志
/var/opt/gitlab/backups/ 备份文件生成的目录

备份和恢复

备份

备份GitLab repositories and GitLab metadata
在 crontab 中加入如下命令:

1
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@vm10-253-26-148 gitlab-workhorse]# /usr/bin/gitlab-rake gitlab:backup:create
Dumping database ...
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
* root/jsws ... [DONE]
* root/jsws.wiki ... [SKIPPED]
done
Dumping uploads ...
done
Dumping builds ...
done
Dumping artifacts ...
done
Dumping lfs objects ...
done
Creating backup archive: 1461569556_gitlab_backup.tar ... done
Uploading backup archive to remote storage ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
Deleting old backups ... Skipping

默认生成备份文件的路径:

1
2
3
4
5
6
[root@vm10-253-26-148 gitlab-workhorse]# cd /var/opt/gitlab/backups/
[root@vm10-253-26-148 backups]# ls -al
total 88
drwx------ 2 git root 4096 Apr 25 15:32 .
drwxr-xr-x 13 root root 4096 Apr 22 15:25 ..
-rw------- 1 git git 81920 Apr 25 15:32 1461569556_gitlab_backup.tar

注:备份文件是一个归档文件,且开头是unix时间
在实际的生产环境中备份策略建议:本地保留三天,在异地备份永久保存
这里以unix时间戳来标记备份的时间,这个时间戳对人来说不好读懂,可使用date命令把其转换成人可读的格式,如下:

1
2
root@test1:~/backup# date -d @1453432213
2016年 01月 22日 星期五 11:10:13 CST

修改备份目录

1
2
3
4
root@test1:~/backup# vim /etc/gitlab/gitlab.rb:
gitlab_rails['backup_path'] = "/data/git-backups"
# limit backup lifetime to 7 days - 604800 seconds
gitlab_rails['backup_keep_time'] = 604800

创建备份目录,修改属主和属组:

1
2
root@test1:~# mkdir /data/git-backups
chown -R git.git /data/git-backups

手动进行一次备份,测试一下备份是否有效,测试备份正常,添加定时任务即可

恢复

首先进入备份 GitLab 的目录,这个目录是配置文件中的 gitlab_rails[‘backup_path’] ,默认为 /var/opt/gitlab/backups 。然后停止 unicorn 和 sidekiq ,保证数据库没有新的连接,不会有写数据情况。

1
2
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

然后恢复数据,1406691018为备份文件的时间戳

1
gitlab-rake gitlab:backup:restore BACKUP=1406691018

GitLab命令

1
2
3
4
5
6
7
8
9
10
11
[root@vm10-253-26-148 ~]# git
git
gitk
gitlab-rails
git-receive-pack
git-upload-archive
git-cvsserver
gitlab-ctl # GitLab服务管理
gitlab-rake
git-shell
git-upload-pack
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@vm10-253-26-148 ~]# gitlab-ctl
I don\'t know that command.
/opt/gitlab/embedded/bin/omnibus-ctl: command (subcommand)
deploy-page
Put up the deploy page
remove-accounts
Delete *all* users and groups used by this package
upgrade
Run migrations after a package upgrade
General Commands:
cleanse
Delete *all* gitlab data, and start from scratch.
help
Print this help message.
reconfigure
Reconfigure the application.
show-config
Show the configuration that would be generated by reconfigure.
uninstall
Kill all processes and uninstall the process supervisor (data will be preserved).
Service Management Commands:
graceful-kill
Attempt a graceful stop, then SIGKILL the entire process group.
hup
Send the services a HUP.
int
Send the services an INT.
kill
Send the services a KILL.
once
Start the services if they are down. Do not restart them if they stop.
restart
Stop the services if they are running, then start them again.
service-list
List all the services (enabled services appear with a *.)
start
Start services if they are down, and restart them if they stop.
status
Show the status of all the services.
stop
Stop the services, and do not restart them.
tail
Watch the service logs of all enabled services.
term
Send the services a TERM.

gitlab-ce官方文档查看备录(重要)

文章地址:http://www.178linux.com/7985

邮箱设置

1)GitLab中使用postfix进行邮件发送。因此,可以卸载系统中自带的sendmail。
使用yum list installed查看系统中是否存在sendmail,若存在,则使用yum remove sendmail指令进行卸载。
2)测试系统是否可以正常发送邮件。

1
echo "Test mail from postfix" | mail -s "Test Postfix" xxx@xxx.com

注:上面的xxx@xxx.com为你希望收到邮件的邮箱地址。

当邮箱收到系统发送来的邮件时,将系统的地址复制下来,如:root@iZ23syflhhzZ.localdomain,打开/etc/gitlab/gitlab.rb,将
gitlab_rails[‘gitlab_email_from’] = ‘gitlab@example.com
修改为
gitlab_rails[‘gitlab_email_from’] = ‘root@iZ23syflhhzZ.localdomain
保存后,执行sudo gitlab-ctl reconfigure重新编译GitLab。如果邮箱的过滤功能较强,请添加系统的发件地址到邮箱的白名单中,防止邮件被过滤。
Note:系统中邮件发送的日志可通过tail /var/log/maillog命令进行查看。

开启HTTPS

FQA

1)在浏览器中访问GitLab出现502错误
原因:内存不足。
解决办法:检查系统的虚拟内存是否随机启动了,如果系统无虚拟内存,则增加虚拟内存,再重新启动系统。
2)80端口冲突
原因:Nginx默认使用了80端口。
解决办法:为了使Nginx与Apache能够共存,并且为了简化GitLab的URL地址,Nginx端口保持不变,修改Apache的端口为4040。这样就可以直接用使用ip访问Gitlab。而禅道则可以使用4040端口进行访问,像这样:xxx.xx.xxx.xx:4040/zentao。具体修改的地方在/etc/httpd/conf/httpd.conf这个文件中,找到Listen 80这一句并将之注释掉,在底下添加一句Listen 4040,保存后执行service httpd restart重启apache服务即可。
#Listen 80
Listen 4040
3)8080端口冲突
原因:由于unicorn默认使用的是8080端口。
解决办法:打开/etc/gitlab/gitlab.rb,打开# unicorn[‘port’] = 8080的注释,将8080修改为9090,保存后运行sudo gitlab-ctl reconfigure即可。
4)STMP设置
配置无效,暂时不知道原因。
5)GitLab头像无法正常显示
原因:gravatar被墙
解决办法:
编辑 /etc/gitlab/gitlab.rb,将

#gitlab_rails[‘gravatar_plain_url’] = ‘http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon
修改为:
gitlab_rails[‘gravatar_plain_url’] = ‘http://gravatar.duoshuo.com/avatar/%{hash}?s=%{size}&d=identicon

然后在命令行执行:

1
2
gitlab-ctl reconfigure
gitlab-rake cache:clear RAILS_ENV=production

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/885609a5.html
__版权声明__:转载请注明出处!

]]>
@@ -4797,7 +4797,7 @@ /archives/f44e13b.html -

前言

如何在多个电脑上编辑同一个hexo博客?
如何有效的备份hexo源码,防止数据丢失?
如何共享已有的hexo配置给其他人?

解决方案

概述

使用分支的思路,如下:
hexo分支:用来存放Hexo生成的网站原始的文件(默认分支)
master分支:用来存放生成的静态网页

部署流程

master分支配置

修改站点主配置_config.xml,确保静态网页是提交到master分支,与hexo源文件提交分支分离

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/mds1455975151/mds1455975151.github.io.git
branch: master

hexo分支配置

1、新建仓库mds1455975151.github.io
2、创建两个分支:master和hexo
3、设置hexo为默认分支(手动管理该分支上的Hexo网站源文件)
4、使用git clone git@github.com:mds1455975151/mds1455975151.github.io.git或者git clone https://github.com/mds1455975151/mds1455975151.github.io.git 拷贝仓库(ssh设置好密钥,http设置好免密码)
5、在本地mds1455975151.github.io文件夹下进行hexo init xxxx及进行各种配置(此时当前处于hexo分支)
6、修改hexo主配置_config.xml的deploy部分配置,设置静态页面的发布分支为master
7、添加.gitignore文件,将静态网页的目录及其他无需提交的源文件及目录排除掉
8、执行hexo g -d生成网站并部署到GitHub上
9、依次执行git add .、git commit -m ‘add xxx’、git push origin hexo提交网站源文件到hexo分支

日常修改流程

在本地对博客进行修改(增、删、修改博文)、设置插件、修改其他配置等等
1、提交hexo源代码

1
2
3
git checkout hexo
git add .
git commit -m 'add hexo source files'

2、发布hexo静态文件

1
2
3
hexo clean
hexo generate
hexo deploy

本地资料丢失或其他主机搭建环境流程

更换电脑或者本地资料丢失后
1、拷贝仓库到本地(默认hexo分支)
2、安装hexo及各类插件
3、调试测试即可

其他方案

1、使用svn备份Hexo源文件
2、使用同步软件例如百度云盘等等定时备份
3、hexo-git-backup插件

参考资料

使用hexo,如果换了电脑怎么更新博客?

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/f44e13b.html
__版权声明__:转载请注明出处!

]]>
+

前言

如何在多个电脑上编辑同一个hexo博客?
如何有效的备份hexo源码,防止数据丢失?
如何共享已有的hexo配置给其他人?

解决方案

概述

使用分支的思路,如下:
hexo分支:用来存放Hexo生成的网站原始的文件(默认分支)
master分支:用来存放生成的静态网页

部署流程

master分支配置

修改站点主配置_config.xml,确保静态网页是提交到master分支,与hexo源文件提交分支分离

1
2
3
4
5
6
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: https://github.com/mds1455975151/mds1455975151.github.io.git
branch: master

hexo分支配置

1、新建仓库mds1455975151.github.io
2、创建两个分支:master和hexo
3、设置hexo为默认分支(手动管理该分支上的Hexo网站源文件)
4、使用git clone git@github.com:mds1455975151/mds1455975151.github.io.git或者git clone https://github.com/mds1455975151/mds1455975151.github.io.git 拷贝仓库(ssh设置好密钥,http设置好免密码)
5、在本地mds1455975151.github.io文件夹下进行hexo init xxxx及进行各种配置(此时当前处于hexo分支)
6、修改hexo主配置_config.xml的deploy部分配置,设置静态页面的发布分支为master
7、添加.gitignore文件,将静态网页的目录及其他无需提交的源文件及目录排除掉
8、执行hexo g -d生成网站并部署到GitHub上
9、依次执行git add .、git commit -m ‘add xxx’、git push origin hexo提交网站源文件到hexo分支

日常修改流程

在本地对博客进行修改(增、删、修改博文)、设置插件、修改其他配置等等
1、提交hexo源代码

1
2
3
git checkout hexo
git add .
git commit -m 'add hexo source files'

2、发布hexo静态文件

1
2
3
hexo clean
hexo generate
hexo deploy

本地资料丢失或其他主机搭建环境流程

更换电脑或者本地资料丢失后
1、拷贝仓库到本地(默认hexo分支)
2、安装hexo及各类插件
3、调试测试即可

其他方案

1、使用svn备份Hexo源文件
2、使用同步软件例如百度云盘等等定时备份
3、hexo-git-backup插件

参考资料

使用hexo,如果换了电脑怎么更新博客?

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/f44e13b.html
__版权声明__:转载请注明出处!

]]>
@@ -5420,7 +5420,7 @@ /archives/5d3f2cbe.html -

[TOC]

前言

Markdown 是一种轻量级的标记语言,其用简单的标记语法便可达到排版的目的,其可以使我们更加专注于内容的编写,而不需过多关注排版。本文主要整理了 Markdown 中的常用的标记语法,以便自己与他人以后查用。

Markdown编辑器

推荐:Atom
使用Markdown格式的场景: Hexo博客,简书
其他Markdown编辑器产品

Atom介绍

Atom 是 Github 官方开发的一款可定制化的、跨平台的文本编辑器。有两点需要注意一下,一是 Atom 是由 Github 官方开发,二是其定制化程度非常高。前者的结果是编辑器对 Github 非常友好,如果项目托管在 Github 上的话,用 Atom 可以很方便地进行 Git 操作。后者的结果就是我们可以根据自己的需要定制自己的编辑器,使得自己的效率最大化,也让自己舒舒服服、开开心心地码代码。
Atom预览Markdown快捷键:Ctrl+Shift+M
Atom相关资料

Markdown语法介绍

献给写作者的 Markdown 新手指南
Markdown 语法说明 (简体中文版)

段落与换行

Markdown中段落指连续的一段文字,编写时段落之间至少一个空行隔开,段落内多个空格被视为一个空格,段首不支持缩进。
如何想要在显示时显示多个空行,可以插入
实现,注意的是,插入的
应与前后的段落中间至少空一行。

标题

Markdown支持两种类型的标题
方法1:只能表示两个级别
1
2
3
4
一级标题
========
二级标题
--------

<!– 效果:
一级标题

二级标题
——– –>
方法2:推荐

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

强调

星号或者下划线都可以,单是斜体,双是粗体,符号可以跨行,符号可加空格

1
2
3
4
5
6
7
8
9
10
** 我是被强调的字段 **
__ 我是被强调的字段__

**
跨行
跨行
**

*斜体*
_ 斜体_

效果如下:
** 我是被强调的字段 **
__ 我是被强调的字段__

**
跨行
跨行
**

斜体
_ 斜体_

分割线

三个或更多-_*,必须单独一行,可含空格

1
2
3
- - -
***
___

效果如下:




引用

1
2
>引用
>> 引用中的引用

效果:

引用

引用中的引用

序列

无序列表

符号之后的空格不能少,-+*效果一样,但不能混合使用,因混合是嵌套列表,内容可超长

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 无序列表
- 无序列表
- 无序列表
- 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

* 无序列表
* 无序列表
* 无序列表
* 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

+ 无序列表
+ 无序列表
+ 无序列表
+ 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

三种效果都是一样的,如下:

  • 无序列表
  • 无序列表
  • 无序列表
  • 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

有序列表

数字不能省略但可无序,点号之后的空格不能少

1
2
3
4
1. 有序列表
2. 有序列表
3. 有序列表
4. 有序列表

效果:

  1. 有序列表
  2. 有序列表
  3. 有序列表
  4. 有序列表

嵌套列表

-+*可循环使用,但符号之后的空格不能少,符号之前的空格也不能少

1
2
3
4
5
6
- 嵌套列表1
+ 嵌套列表2
+ 嵌套列表3
- 嵌套列表4
* 嵌套列表5
- 嵌套列表6

效果如下:

  • 嵌套列表1
  • 嵌套列表2
  • 嵌套列表3
  • 嵌套列表4
  • 嵌套列表5
  • 嵌套列表6

文字超链

Tooltips可省略

1
[不如](http://bruce-sha.github.io "不如的博客")

效果如下:
不如

图片超链

多个感叹号,Tooltips可省略,要设置大小只能借助HTML标记

1
![GitHub Mark](http://github.global.ssl.fastly.net/images/modules/logos_page/GitHub-Mark.png "GitHub Mark")

效果如下:
GitHub Mark

索引超链

索引,1 可以是任意字符

1
2
3
[不如][1]
[1]:http://bruce-sha.github.io
效果如下:

[不如][1]
[1]:http://bruce-sha.github.io

自动链接

尖括号

1
2
<http://ibruce.info>
<bu.ru@qq.com>

效果如下:
http://ibruce.info
bu.ru@qq.com

代码

行内代码

1
2
3
4
5
6
7
8
9
10
11
``` python
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
1
2
3
4
5
6
7
8
9
10
11
12
可代码高亮
``` python
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''

段落代码

每行文字前加4个空格或者1个Tab

1
2
3
4
val s = "hello Markdown"
println( s )
val s = "hello Markdown"
println( s )

效果如下:
val s = “hello Markdown”
println( s )
val s = “hello Markdown”
println( s )

注释

用html的注释

1
<!-- 用html的注释 -->
这有内容就是被注释了,所以未显示

转义字符

用html的注释,好像只有这样?
Markdown中的转义字符为\,转义的有:

1
2
3
4
5
6
7
8
9
10
11
12
\\ 反斜杠
\` 反引号
\* 星号
\_ 下划线
\{\} 大括号
\[\] 中括号
\(\) 小括号
\# 井号
\+ 加号
\- 减号
\. 英文句号
\! 感叹号

效果如下:
\ 反斜杠
` 反引号
* 星号
_ 下划线
{} 大括号
[] 中括号
() 小括号
# 井号
+ 加号
- 减号
. 英文句号
! 感叹号

删除线语法

支持两种方法:

1
2
~~我是被删除的~~
<del> 我是被删除的 </del>

效果如下
我是被删除的

插入图片

语法

1
![](/68cb3bb5/lifecycle.png)

效果如下:

注:相关内容扩展,如何控制图片显示大小等等

生成表格

md原生

1
2
3
4
5
| 水果        | 价格    |  数量  |
| -------- | -----: | :----: |
| 香蕉 | $1 | 5 |
| 苹果 | $1 | 6 |
| 草莓 | $1 | 7 |

效果如下:

水果价格数量
香蕉$15
苹果$16
草莓$17

HTML表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<table>
<tr>
<th>设备</th>
<th>设备文件名</th>
<th>文件描述符</th>
<th>类型</th>
</tr>
<tr>
<th>键盘</th>
<th>/dev/stdin</th>
<th>0</th>
<th>标准输入</th>
</tr>
<tr>
<th>显示器</th>
<th>/dev/stdout</th>
<th>1</th>
<th>标准输出</th>
</tr>
<tr>
<th>显示器</th>
<th>/dev/stderr</th>
<th>2</th>
<th>标准错误输出</th>
</tr>
</table>

效果如下:

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
### execl表格项目地址:https://github.com/fanfeilong/exceltk有兴趣的同学可以自己测试下,未测试.

段落缩进(空格)

1
2
3
4
半方大的空白&ensp;或&#8194;看,飞碟
全方大的空白&emsp;或&#8195;看,飞碟
不断行的空白格&nbsp;或&#160;看,飞碟
&emsp;&emsp;段落从此开始。

效果如下:
半方大的空白 或 看,飞碟
全方大的空白 或 看,飞碟
不断行的空白格 或 看,飞碟
  段落从此开始。

字体、字号、颜色、背景色

1
2
3
4
5
6
7
<font face="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font face="STCAIYUN">我是华文彩云</font>
<font color=#0099ff size=12 face="黑体">黑体</font>
<font color=#00ffff size=3>null</font>
<font color=gray size=5>gray</font>
<table><tr><td bgcolor=#FF4500>这里的背景色是:OrangeRed, 十六进制颜色值:#FF4500, rgb(255, 69, 0)</td></tr></table>

效果如下:
我是黑体字
我是微软雅黑
我是华文彩云
黑体
null
gray

这里的背景色是:OrangeRed, 十六进制颜色值:#FF4500, rgb(255, 69, 0)
## 标签### 行内标签
1
快捷键 `Ctrl + D` 来收藏本页
效果如下:快捷键 `Ctrl + D` 来收藏本页## 注脚不是标准 MarkDown的范畴,各个扩展的定义可能有所不同.## 其他

参考资料

Markdown 快速生成表格
markdown 语法之字体、字号、颜色以及背景色
markdown语法实例

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/5d3f2cbe.html
__版权声明__:转载请注明出处!

]]>
+

[TOC]

前言

Markdown 是一种轻量级的标记语言,其用简单的标记语法便可达到排版的目的,其可以使我们更加专注于内容的编写,而不需过多关注排版。本文主要整理了 Markdown 中的常用的标记语法,以便自己与他人以后查用。

Markdown编辑器

推荐:Atom
使用Markdown格式的场景: Hexo博客,简书
其他Markdown编辑器产品

Atom介绍

Atom 是 Github 官方开发的一款可定制化的、跨平台的文本编辑器。有两点需要注意一下,一是 Atom 是由 Github 官方开发,二是其定制化程度非常高。前者的结果是编辑器对 Github 非常友好,如果项目托管在 Github 上的话,用 Atom 可以很方便地进行 Git 操作。后者的结果就是我们可以根据自己的需要定制自己的编辑器,使得自己的效率最大化,也让自己舒舒服服、开开心心地码代码。
Atom预览Markdown快捷键:Ctrl+Shift+M
Atom相关资料

Markdown语法介绍

献给写作者的 Markdown 新手指南
Markdown 语法说明 (简体中文版)

段落与换行

Markdown中段落指连续的一段文字,编写时段落之间至少一个空行隔开,段落内多个空格被视为一个空格,段首不支持缩进。
如何想要在显示时显示多个空行,可以插入
实现,注意的是,插入的
应与前后的段落中间至少空一行。

标题

Markdown支持两种类型的标题
方法1:只能表示两个级别
1
2
3
4
一级标题
========
二级标题
--------

<!– 效果:
一级标题

二级标题
——– –>
方法2:推荐

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

强调

星号或者下划线都可以,单是斜体,双是粗体,符号可以跨行,符号可加空格

1
2
3
4
5
6
7
8
9
10
** 我是被强调的字段 **
__ 我是被强调的字段__

**
跨行
跨行
**

*斜体*
_ 斜体_

效果如下:
** 我是被强调的字段 **
__ 我是被强调的字段__

**
跨行
跨行
**

斜体
_ 斜体_

分割线

三个或更多-_*,必须单独一行,可含空格

1
2
3
- - -
***
___

效果如下:




引用

1
2
>引用
>> 引用中的引用

效果:

引用

引用中的引用

序列

无序列表

符号之后的空格不能少,-+*效果一样,但不能混合使用,因混合是嵌套列表,内容可超长

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- 无序列表
- 无序列表
- 无序列表
- 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

* 无序列表
* 无序列表
* 无序列表
* 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

+ 无序列表
+ 无序列表
+ 无序列表
+ 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

三种效果都是一样的,如下:

  • 无序列表
  • 无序列表
  • 无序列表
  • 无序列表:我很长。我也很长!那比一比啊?比就比!我有这么长,你有我长吗?我有这么这么长!就是这么长!

有序列表

数字不能省略但可无序,点号之后的空格不能少

1
2
3
4
1. 有序列表
2. 有序列表
3. 有序列表
4. 有序列表

效果:

  1. 有序列表
  2. 有序列表
  3. 有序列表
  4. 有序列表

嵌套列表

-+*可循环使用,但符号之后的空格不能少,符号之前的空格也不能少

1
2
3
4
5
6
- 嵌套列表1
+ 嵌套列表2
+ 嵌套列表3
- 嵌套列表4
* 嵌套列表5
- 嵌套列表6

效果如下:

  • 嵌套列表1
  • 嵌套列表2
  • 嵌套列表3
  • 嵌套列表4
  • 嵌套列表5
  • 嵌套列表6

文字超链

Tooltips可省略

1
[不如](http://bruce-sha.github.io "不如的博客")

效果如下:
不如

图片超链

多个感叹号,Tooltips可省略,要设置大小只能借助HTML标记

1
![GitHub Mark](http://github.global.ssl.fastly.net/images/modules/logos_page/GitHub-Mark.png "GitHub Mark")

效果如下:
GitHub Mark

索引超链

索引,1 可以是任意字符

1
2
3
[不如][1]
[1]:http://bruce-sha.github.io
效果如下:

[不如][1]
[1]:http://bruce-sha.github.io

自动链接

尖括号

1
2
<http://ibruce.info>
<bu.ru@qq.com>

效果如下:
http://ibruce.info
bu.ru@qq.com

代码

行内代码

1
2
3
4
5
6
7
8
9
10
11
``` python
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
1
2
3
4
5
6
7
8
9
10
11
12
可代码高亮
``` python
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''

段落代码

每行文字前加4个空格或者1个Tab

1
2
3
4
val s = "hello Markdown"
println( s )
val s = "hello Markdown"
println( s )

效果如下:
val s = “hello Markdown”
println( s )
val s = “hello Markdown”
println( s )

注释

用html的注释

1
<!-- 用html的注释 -->
这有内容就是被注释了,所以未显示

转义字符

用html的注释,好像只有这样?
Markdown中的转义字符为\,转义的有:

1
2
3
4
5
6
7
8
9
10
11
12
\\ 反斜杠
\` 反引号
\* 星号
\_ 下划线
\{\} 大括号
\[\] 中括号
\(\) 小括号
\# 井号
\+ 加号
\- 减号
\. 英文句号
\! 感叹号

效果如下:
\ 反斜杠
` 反引号
* 星号
_ 下划线
{} 大括号
[] 中括号
() 小括号
# 井号
+ 加号
- 减号
. 英文句号
! 感叹号

删除线语法

支持两种方法:

1
2
~~我是被删除的~~
<del> 我是被删除的 </del>

效果如下
我是被删除的

插入图片

语法

1
![](/68cb3bb5/lifecycle.png)

效果如下:

注:相关内容扩展,如何控制图片显示大小等等

生成表格

md原生

1
2
3
4
5
| 水果        | 价格    |  数量  |
| -------- | -----: | :----: |
| 香蕉 | $1 | 5 |
| 苹果 | $1 | 6 |
| 草莓 | $1 | 7 |

效果如下:

水果价格数量
香蕉$15
苹果$16
草莓$17

HTML表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<table>
<tr>
<th>设备</th>
<th>设备文件名</th>
<th>文件描述符</th>
<th>类型</th>
</tr>
<tr>
<th>键盘</th>
<th>/dev/stdin</th>
<th>0</th>
<th>标准输入</th>
</tr>
<tr>
<th>显示器</th>
<th>/dev/stdout</th>
<th>1</th>
<th>标准输出</th>
</tr>
<tr>
<th>显示器</th>
<th>/dev/stderr</th>
<th>2</th>
<th>标准错误输出</th>
</tr>
</table>

效果如下:

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
### execl表格项目地址:https://github.com/fanfeilong/exceltk有兴趣的同学可以自己测试下,未测试.

段落缩进(空格)

1
2
3
4
半方大的空白&ensp;或&#8194;看,飞碟
全方大的空白&emsp;或&#8195;看,飞碟
不断行的空白格&nbsp;或&#160;看,飞碟
&emsp;&emsp;段落从此开始。

效果如下:
半方大的空白 或 看,飞碟
全方大的空白 或 看,飞碟
不断行的空白格 或 看,飞碟
  段落从此开始。

字体、字号、颜色、背景色

1
2
3
4
5
6
7
<font face="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font face="STCAIYUN">我是华文彩云</font>
<font color=#0099ff size=12 face="黑体">黑体</font>
<font color=#00ffff size=3>null</font>
<font color=gray size=5>gray</font>
<table><tr><td bgcolor=#FF4500>这里的背景色是:OrangeRed, 十六进制颜色值:#FF4500, rgb(255, 69, 0)</td></tr></table>

效果如下:
我是黑体字
我是微软雅黑
我是华文彩云
黑体
null
gray

这里的背景色是:OrangeRed, 十六进制颜色值:#FF4500, rgb(255, 69, 0)
## 标签### 行内标签
1
快捷键 `Ctrl + D` 来收藏本页
效果如下:快捷键 `Ctrl + D` 来收藏本页## 注脚不是标准 MarkDown的范畴,各个扩展的定义可能有所不同.## 其他

参考资料

Markdown 快速生成表格
markdown 语法之字体、字号、颜色以及背景色
markdown语法实例

======================================================
希望各位朋友支持一下

__本文作者__:dongsheng
__本文地址__: https://mds1455975151.github.io/archives/5d3f2cbe.html
__版权声明__:转载请注明出处!

]]>
diff --git a/tag-sitemap.xml b/tag-sitemap.xml index 7ab6aec44b..76e7e0397a 100644 --- a/tag-sitemap.xml +++ b/tag-sitemap.xml @@ -1158,14 +1158,14 @@
- https://mds1455975151.github.io/tags/%E8%B5%84%E6%BA%90%E6%9B%B4%E6%96%B0/ + https://mds1455975151.github.io/tags/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/ 2020-04-03T07:09:13.970Z weekly 0.2 - https://mds1455975151.github.io/tags/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/ + https://mds1455975151.github.io/tags/%E8%B5%84%E6%BA%90%E6%9B%B4%E6%96%B0/ 2020-04-03T07:09:13.970Z weekly 0.2