Commit c1d06c8c authored by John's avatar John

Site updated: 2018-04-29 21:49:31

parent 74422d32
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}body{font-family:Spoqa Han Sans,Spoqa Han Sans JP,Noto Sans Korean,sans-serif;text-shadow:0 0 .1px rgba(0,0,0,.3);-webkit-text-size-adjust:antialiased;-moz-osx-font-smoothing:grayscale}html{height:100%;font-size:14px}@media only screen and (min-width:624px){html{font-size:16px}}body{display:table;width:100%;height:100%;margin:0;color:#454545;line-height:1.5em;-webkit-font-smoothing:antialiased;table-layout:fixed}a{text-decoration:none;color:#59abe3;-webkit-transition:color .3s ease;transition:color .3s ease}a:hover{color:#4789b6}hr{margin:1.5rem 0;border:0;border-bottom:1px solid #ededed}h1,h2,h3,h4,h5,h6{font-weight:500}.page-background{z-index:-1;background-color:#fff;position:fixed;top:0;right:0;bottom:0;left:0}.content-outer{margin-top:8rem}@media only screen and (min-width:624px){.content-outer{margin-top:4rem}}.content-inner{width:100%;padding:1.5rem 0}.menu{display:table-row;width:100%;background-color:#fff;border-bottom:1px solid #ededed;list-style:none;margin:0;padding:0;overflow:hidden;position:absolute;top:0;z-index:3;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}@media only screen and (min-width:624px){.menu{position:fixed}}@media only screen and (min-width:624px){.menu--hide{-webkit-transform:translateY(-4rem);transform:translateY(-4rem)}}.menu-inner{width:100%;max-width:72rem;margin:auto;padding:0 1rem;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:624px){.menu-inner{padding:0}}.menu__left-area{float:left;height:4rem}@media only screen and (max-width:624px){.menu__left-area{width:100%;text-align:center;border-bottom:1px solid #f6f6f6}.menu__left-area .menu__item{float:none}}.menu__right-area{float:right;height:4rem}@media only screen and (max-width:624px){.menu__right-area{width:100%;overflow-x:auto;white-space:nowrap;padding:0 1.5rem;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}}.menu__item{position:relative;display:inline-block;float:left;margin-right:1.5rem}.menu__item:last-child{margin-right:0}.menu__item:after{content:"";position:absolute;right:0;bottom:0;left:0;height:2px;background-color:transparent;-webkit-transform:translateY(2px);transform:translateY(2px);-webkit-transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,transform .3s ease;transition:background-color .3s ease,transform .3s ease,-webkit-transform .3s ease}.menu__item:hover .menu__item__link{color:#999}.menu__item:hover:after{background-color:#999;-webkit-transform:translateY(0);transform:translateY(0)}@media only screen and (max-width:624px){.menu__item{float:none}}.menu__item--active .menu__item__link{color:#59abe3}.menu__item--active:after{background-color:#59abe3;-webkit-transform:translateY(0);transform:translateY(0)}.menu__item__link{color:#666;font-size:1rem;display:inline-block;height:4rem;line-height:4rem}.menu__item__link--brand{color:#454545}.menu__item__link--brand__image{width:2.5rem;height:2.5rem;margin:.75rem 1rem .75rem 0;display:inline-block;float:left}.menu__item__link--brand__label{height:4rem;line-height:4rem;display:inline-block;float:left;font-weight:500}.article{position:relative;padding:1rem;overflow:hidden;max-width:45rem;margin:auto}@media only screen and (max-width:624px){.article{padding-top:0}}.article .article__contents img{display:block;margin:1rem}@media only screen and (max-width:624px){.article .article__contents img{width:calc(100% + 2rem);margin-left:-1rem;margin-right:-1rem}}@media only screen and (min-width:624px){.article .article__contents img{max-width:100%;margin-left:auto;margin-right:auto}}.article .article__contents h1,.article .article__contents h2,.article .article__contents h3,.article .article__contents h4,.article .article__contents h5,.article .article__contents h6{color:#222;margin-top:3rem}.article .article__contents blockquote{background-color:#f6f6f6;padding:1.5rem 1rem;margin-left:-1rem;margin-right:-1rem}.article .article__contents blockquote p{margin:0}.article .article__contents blockquote p+p{margin-top:1rem}.article .article__contents blockquote code{background-color:transparent;padding:0;font-style:italic}.article .article__contents blockquote.pullquote.left{float:left;margin:0 1.5rem 1.5rem 0}.article .article__contents blockquote.pullquote.right{float:right;margin:0 0 1.5rem 1.5rem}.article .article__contents cite:before{content:"-";margin:0 7px;margin:0 .5rem}.article .article__contents code{font-family:consolas,monospace;background-color:#f6f6f6;color:#e28f0b;padding:.125rem .25rem;border-radius:2px;margin-left:0;margin-right:0}.article .article__contents figure.highlight{padding:0 1rem;margin-left:-1rem;margin-right:-1rem}.article .article__contents figure.highlight *{font-family:consolas,monospace}.article .article__contents figure.highlight figcaption{margin-top:1rem}.article .article__contents figure.highlight figcaption span{color:#999;margin-right:.5rem}.article .article__contents figure.highlight figcaption a{float:right}.article .article__contents figure.highlight table{border:0}.article .article__contents figure.highlight table tr td{padding:0}.article .article__contents figure.highlight .line{min-height:1.5rem}.article .article__contents figure.highlight .line.marked{background-color:rgba(0,0,0,.3)}.article .article__contents figure.highlight .gutter{width:1rem;padding-right:1rem;color:#999}.article .article__contents table{border-top:1px solid #999;width:100%;text-align:left;border-collapse:collapse}.article .article__contents table thead tr th{border-bottom:2px solid #f6f6f6;padding:.25rem 0}.article .article__contents table tbody tr td{border-bottom:1px solid #f6f6f6;padding:.25rem 0}.article .article__contents table tbody tr:last-child td{border-color:#999}.article .article__contents iframe{display:block;margin:1rem -1rem;width:calc(100% + 2rem)}.article .article__contents .video-container{position:relative;padding-top:56.25%;overflow:hidden}@media only screen and (max-width:624px){.article .article__contents .video-container{margin:0 -1rem;width:calc(100% + 2rem)}}.article .article__contents .video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;margin:0}.article .article__contents ol,.article .article__contents ul{list-style:none}.article .article__contents ol li,.article .article__contents ul li{position:relative}.article .article__contents ol li:before,.article .article__contents ul li:before{position:absolute}.article .article__contents ul{padding-left:1.5rem}.article .article__contents ul li:before{content:"•";left:-21px;left:-1.5rem}.article .article__contents ol{padding-left:2rem;counter-reset:a}.article .article__contents ol li:before{left:-28px;left:-2rem;display:inline-block;content:counter(a) ".";counter-increment:a;width:21px;width:1.5rem;text-align:right}.article .article__contents #footnotelist ol{padding-left:2rem!important}.article .article__contents #footnotelist ol li span:first-child{display:none!important}.article .article__contents #footnotelist ol li span:nth-child(2){display:inline!important}.article .article__contents hr{position:relative;border:0;margin:0;height:4rem}.article .article__contents hr:after{content:"• • •";position:absolute;top:50%;left:50%;margin-top:-10.5px;margin-top:-.75rem;margin-left:-21px;margin-left:-1.5rem}.article__title{line-height:1.2em}.article__image{display:block;margin:1.5rem -1rem;width:calc(100% + 2rem)}@media only screen and (min-width:624px){.article__image{max-width:100%;margin-left:auto;margin-right:auto}}.article__meta{font-size:14px;color:#999;overflow:hidden;width:100%}.article__meta__time{float:left}@media only screen and (max-width:624px){.article__meta__time{width:100%}}.article__meta__categories{float:right}@media only screen and (max-width:624px){.article__meta__categories{float:left;width:100%}}.article__meta__categories__item{color:#999}.article__meta__categories__item:hover{color:#59abe3}.article__meta__categories__separator{margin:0 8px;color:#999}.article__tags{margin:2rem 0}.article__tags__item{background-color:#ededed;color:#454545;border-radius:2px;font-size:.875rem;display:inline-block;padding:0 .5rem;margin-right:.5rem;margin-bottom:.5rem;-webkit-transition:background-color .3s ease;transition:background-color .3s ease}.article__tags__item:hover{background-color:#7abce9;color:#454545}.article__author{position:relative;padding:2rem 0 2rem 8rem;margin-bottom:2rem;border-top:1px solid #f6f6f6;border-bottom:1px solid #f6f6f6}.article__author__image{position:absolute;left:0;top:1.5rem;width:5rem;height:5rem;border-radius:50%}.article__author__link{font-size:1.5rem;font-weight:500;color:#454545}.article__author__link:hover{color:#59abe3}.article__author__desc{margin:0}.article__author__socials{margin-top:1rem}.article__author__socials__item{color:#999;font-size:1.25rem;margin-right:.75rem}.related-posts{text-align:center;overflow:hidden;width:100%;max-width:72rem;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (min-width:624px){.related-posts{padding:0 .5rem;margin:1rem auto}.related-posts h3{margin-bottom:0}}.related-posts__item__wrapper{width:100%;height:15rem;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (min-width:624px){.related-posts__item__wrapper{display:inline-block;width:33.33%;padding:0 .5rem;margin-top:.75rem}}.related-posts__item{position:relative;display:block;width:100%;height:100%;overflow:hidden}.related-posts__item:hover .related-posts__item__background{-webkit-transform:scale(1.2);transform:scale(1.2)}.related-posts__item__background{display:block;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.related-posts__item__overlay{background-color:rgba(0,0,0,.4);position:absolute;top:0;right:0;left:0;bottom:0}.related-posts__item__title{font-size:1.25rem;line-height:1.5em;font-weight:500;color:#fff;padding:0 1rem;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.sharer{position:fixed;left:0;right:0;bottom:0;height:3rem;background-color:#fff;z-index:2;border-top:1px solid #ededed;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.sharer--hide{-webkit-transform:translateY(3rem);transform:translateY(3rem)}.sharer-inner{padding:0 1rem;max-width:45rem;margin:auto}.sharer__right{float:right}.sharer__item{background:none;border:0;padding:0;margin-left:1.5rem;font-size:1.5rem;line-height:3rem;color:#999;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease}#sharer-facebook:hover{color:#3b5998}#sharer-twitter:hover{color:#00aced}#sharer-pinterest:hover{color:#b5071a}#sharer-pocket:hover{color:#ef4056}.post-list{position:relative;width:100%;max-width:45rem;margin:auto;padding:0 1rem;-webkit-box-sizing:border-box;box-sizing:border-box}.post-list__item{overflow:hidden;padding:1rem 0;border-bottom:1px solid #f6f6f6}.post-list__item:last-child{border:0}.post-list__item__col-1{width:33.3333%;padding-right:.5rem}.post-list__item__col-1,.post-list__item__col-2{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.post-list__item__col-2{width:66.6666%;padding-left:.5rem}.post-list__item__link{display:block;overflow:hidden;position:relative;width:100%;padding-top:75%}.post-list__item__link:hover .post-list__item__link__background{-webkit-transform:scale(1.2);transform:scale(1.2)}.post-list__item__link__background{position:absolute;top:0;right:0;bottom:0;left:0;background-position:50% 50%;background-size:cover;background-repeat:no-repeat;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.post-list__item__meta__link{color:#999}.post-list__item__meta__link:hover{color:#59abe3}.post-list__item__meta__label{color:#999;margin:0 .5rem}.post-list__item__title{margin:.5rem 0}@media only screen and (max-width:624px){.post-list__item__title{height:1.5rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}}.post-list__item__title a{color:#454545}.post-list__item__title a:hover{color:#59abe3}.post-list__item__description{margin:0}@media only screen and (max-width:624px){.post-list__item__description{height:1.5rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}}.pagination{width:100%;text-align:center;padding:1rem 0}.pagination .current,.pagination a{display:inline-block;height:1.5rem;line-height:1.5rem;padding:0 .25rem;margin:0 .25rem;border-bottom:2px solid}.pagination .current{color:#454545}.pagination .space{color:#999}.pagination a{color:#999;border-color:transparent;-webkit-transition:border-color .3s ease,color .3s ease;transition:border-color .3s ease,color .3s ease}.pagination a:hover{color:#59abe3;border-color:#59abe3}.widgets{background-color:#f6f6f6}.widgets-inner{width:100%;max-width:72rem;margin:auto;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}@media only screen and (min-width:624px){.widgets-inner{padding:0 .5rem;text-align:center}}.widgets__item{width:100%;float:left;-webkit-box-sizing:border-box;box-sizing:border-box;margin:1rem 0;padding:0 1rem}@media only screen and (min-width:624px){.widgets__item{width:33.33%;padding:0 .5rem;display:inline-block;float:none;vertical-align:top;text-align:left}}.widgets__item ul{padding:0;list-style:none}.widgets__item ul ul{padding-left:1rem}.widgets__item ul ul li:before{float:left;padding-right:3.5px;padding-right:.25rem;content:"-"}.widgets__item li{overflow:hidden;width:100%}.widgets__item a{color:#666}.widgets__item a:hover{color:#59abe3}.widgets__item__heading{margin-top:0}.archive-list-link,.category-list-link,.tag-list-link{float:left}.archive-list-count,.category-list-count,.tag-list-count{font-size:.75em;padding-left:.5em;float:left}.archive-list-count:before,.category-list-count:before,.tag-list-count:before{content:"("}.archive-list-count:after,.category-list-count:after,.tag-list-count:after{content:")"}.copyright{background-color:#ededed;text-align:center;padding:2rem 0 5rem;margin:0}
\ No newline at end of file
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}body{font-family:Spoqa Han Sans,Spoqa Han Sans JP,Noto Sans Korean,sans-serif;text-shadow:0 0 .1px rgba(0,0,0,.3);-webkit-text-size-adjust:antialiased;-moz-osx-font-smoothing:grayscale}html{height:100%;font-size:14px}@media only screen and (min-width:624px){html{font-size:16px}}body{display:table;width:100%;height:100%;margin:0;color:#454545;line-height:1.5em;-webkit-font-smoothing:antialiased;table-layout:fixed}a{text-decoration:none;color:#59abe3;-webkit-transition:color .3s ease;transition:color .3s ease}a:hover{color:#4789b6}hr{margin:1.5rem 0;border:0;border-bottom:1px solid #ededed}h1,h2,h3,h4,h5,h6{font-weight:500}.page-background{z-index:-1;background-color:#fff;position:fixed;top:0;right:0;bottom:0;left:0}.content-outer{margin-top:8rem}@media only screen and (min-width:624px){.content-outer{margin-top:4rem}}.content-inner{width:100%;padding:1.5rem 0}.menu{display:table-row;width:100%;background-color:#fff;border-bottom:1px solid #ededed;list-style:none;margin:0;padding:0;overflow:hidden;position:absolute;top:0;z-index:3;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}@media only screen and (min-width:624px){.menu{position:fixed}}@media only screen and (min-width:624px){.menu--hide{-webkit-transform:translateY(-4rem);transform:translateY(-4rem)}}.menu-inner{width:100%;max-width:72rem;margin:auto;padding:0 1rem;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:624px){.menu-inner{padding:0}}.menu__left-area{float:left;height:4rem}@media only screen and (max-width:624px){.menu__left-area{width:100%;text-align:center;border-bottom:1px solid #f6f6f6}.menu__left-area .menu__item{float:none}}.menu__right-area{float:right;height:4rem}@media only screen and (max-width:624px){.menu__right-area{width:100%;overflow-x:auto;white-space:nowrap;padding:0 1.5rem;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}}.menu__item{position:relative;display:inline-block;float:left;margin-right:1.5rem}.menu__item:last-child{margin-right:0}.menu__item:after{content:"";position:absolute;right:0;bottom:0;left:0;height:2px;background-color:transparent;-webkit-transform:translateY(2px);transform:translateY(2px);-webkit-transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,transform .3s ease;transition:background-color .3s ease,transform .3s ease,-webkit-transform .3s ease}.menu__item:hover .menu__item__link{color:#999}.menu__item:hover:after{background-color:#999;-webkit-transform:translateY(0);transform:translateY(0)}@media only screen and (max-width:624px){.menu__item{float:none}}.menu__item--active .menu__item__link{color:#59abe3}.menu__item--active:after{background-color:#59abe3;-webkit-transform:translateY(0);transform:translateY(0)}.menu__item__link{color:#666;font-size:1rem;display:inline-block;height:4rem;line-height:4rem}.menu__item__link--brand{color:#454545}.menu__item__link--brand__image{width:2.5rem;height:2.5rem;margin:.75rem 1rem .75rem 0;display:inline-block;float:left}.menu__item__link--brand__label{height:4rem;line-height:4rem;display:inline-block;float:left;font-weight:500}.article{position:relative;padding:1rem;overflow:hidden;max-width:45rem;margin:auto}@media only screen and (max-width:624px){.article{padding-top:0}}.article .article__contents img{display:block;margin:1rem}@media only screen and (max-width:624px){.article .article__contents img{width:calc(100% + 2rem);margin-left:-1rem;margin-right:-1rem}}@media only screen and (min-width:624px){.article .article__contents img{max-width:100%;margin-left:auto;margin-right:auto}}.article .article__contents h1,.article .article__contents h2,.article .article__contents h3,.article .article__contents h4,.article .article__contents h5,.article .article__contents h6{color:#222;margin-top:3rem}.article .article__contents blockquote{background-color:#f6f6f6;padding:1.5rem 1rem;margin-left:-1rem;margin-right:-1rem}.article .article__contents blockquote p{margin:0}.article .article__contents blockquote p+p{margin-top:1rem}.article .article__contents blockquote code{background-color:transparent;padding:0;font-style:italic}.article .article__contents blockquote.pullquote.left{float:left;margin:0 1.5rem 1.5rem 0}.article .article__contents blockquote.pullquote.right{float:right;margin:0 0 1.5rem 1.5rem}.article .article__contents cite:before{content:"-";margin:0 7px;margin:0 .5rem}.article .article__contents code{font-family:consolas,monospace;background-color:#f6f6f6;color:#e28f0b;padding:.125rem .25rem;border-radius:2px;margin-left:0;margin-right:0}.article .article__contents figure.highlight{padding:0 1rem;margin-left:-1rem;margin-right:-1rem}.article .article__contents figure.highlight *{font-family:consolas,monospace}.article .article__contents figure.highlight figcaption{margin-top:1rem}.article .article__contents figure.highlight figcaption span{color:#999;margin-right:.5rem}.article .article__contents figure.highlight figcaption a{float:right}.article .article__contents figure.highlight table{border:0}.article .article__contents figure.highlight table tr td{padding:0}.article .article__contents figure.highlight .line{min-height:1.5rem}.article .article__contents figure.highlight .line.marked{background-color:rgba(0,0,0,.3)}.article .article__contents figure.highlight .gutter{width:1rem;padding-right:1rem;color:#999}.article .article__contents table{border-top:1px solid #999;width:100%;text-align:left;border-collapse:collapse}.article .article__contents table thead tr th{border-bottom:2px solid #f6f6f6;padding:.25rem 0}.article .article__contents table tbody tr td{border-bottom:1px solid #f6f6f6;padding:.25rem 0}.article .article__contents table tbody tr:last-child td{border-color:#999}.article .article__contents iframe{display:block;margin:1rem -1rem;width:calc(100% + 2rem)}.article .article__contents .video-container{position:relative;padding-top:56.25%;overflow:hidden}@media only screen and (max-width:624px){.article .article__contents .video-container{margin:0 -1rem;width:calc(100% + 2rem)}}.article .article__contents .video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;margin:0}.article .article__contents ol,.article .article__contents ul{list-style:none}.article .article__contents ol li,.article .article__contents ul li{position:relative}.article .article__contents ol li:before,.article .article__contents ul li:before{position:absolute}.article .article__contents ul{padding-left:1.5rem}.article .article__contents ul li:before{content:"•";left:-21px;left:-1.5rem}.article .article__contents ol{padding-left:2rem;counter-reset:a}.article .article__contents ol li:before{left:-28px;left:-2rem;display:inline-block;content:counter(a) ".";counter-increment:a;width:21px;width:1.5rem;text-align:right}.article .article__contents #footnotelist ol{padding-left:2rem!important}.article .article__contents #footnotelist ol li span:first-child{display:none!important}.article .article__contents #footnotelist ol li span:nth-child(2){display:inline!important}.article .article__contents hr{position:relative;border:0;margin:0;height:4rem}.article .article__contents hr:after{content:"• • •";position:absolute;top:50%;left:50%;margin-top:-10.5px;margin-top:-.75rem;margin-left:-21px;margin-left:-1.5rem}.article__title{line-height:1.2em}.article__image{display:block;margin:1.5rem -1rem;width:calc(100% + 2rem)}@media only screen and (min-width:624px){.article__image{max-width:100%;margin-left:auto;margin-right:auto}}.article__meta{font-size:14px;color:#999;overflow:hidden;width:100%}.article__meta__time{float:left}@media only screen and (max-width:624px){.article__meta__time{width:100%}}.article__meta__categories{float:right}@media only screen and (max-width:624px){.article__meta__categories{float:left;width:100%}}.article__meta__categories__item{color:#999}.article__meta__categories__item:hover{color:#59abe3}.article__meta__categories__separator{margin:0 8px;color:#999}.article__tags{margin:2rem 0}.article__tags__item{background-color:#ededed;color:#454545;border-radius:2px;font-size:.875rem;display:inline-block;padding:0 .5rem;margin-right:.5rem;margin-bottom:.5rem;-webkit-transition:background-color .3s ease;transition:background-color .3s ease}.article__tags__item:hover{background-color:#7abce9;color:#454545}.article__author{position:relative;padding:2rem 0 2rem 8rem;margin-bottom:2rem;border-top:1px solid #f6f6f6;border-bottom:1px solid #f6f6f6}.article__author__image{position:absolute;left:0;top:1.5rem;width:5rem;height:5rem;border-radius:50%}.article__author__link{font-size:1.5rem;font-weight:500;color:#454545}.article__author__link:hover{color:#59abe3}.article__author__desc{margin:0}.article__author__socials{margin-top:1rem}.article__author__socials__item{color:#999;font-size:1.25rem;margin-right:.75rem}.related-posts{text-align:center;overflow:hidden;width:100%;max-width:72rem;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (min-width:624px){.related-posts{padding:0 .5rem;margin:1rem auto}.related-posts h3{margin-bottom:0}}.related-posts__item__wrapper{width:100%;height:15rem;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (min-width:624px){.related-posts__item__wrapper{display:inline-block;width:33.33%;padding:0 .5rem;margin-top:.75rem}}.related-posts__item{position:relative;display:block;width:100%;height:100%;overflow:hidden}.related-posts__item:hover .related-posts__item__background{-webkit-transform:scale(1.2);transform:scale(1.2)}.related-posts__item__background{display:block;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.related-posts__item__overlay{background-color:rgba(0,0,0,.4);position:absolute;top:0;right:0;left:0;bottom:0}.related-posts__item__title{font-size:1.25rem;line-height:1.5em;font-weight:500;color:#fff;padding:0 1rem;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.sharer{position:fixed;left:0;right:0;bottom:0;height:3rem;background-color:#fff;z-index:2;border-top:1px solid #ededed;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.sharer--hide{-webkit-transform:translateY(3rem);transform:translateY(3rem)}.sharer-inner{padding:0 1rem;max-width:45rem;margin:auto}.sharer__right{float:right}.sharer__item{background:none;border:0;padding:0;margin-left:1.5rem;font-size:1.5rem;line-height:3rem;color:#999;cursor:pointer;-webkit-transition:color .3s ease;transition:color .3s ease}#sharer-facebook:hover{color:#3b5998}#sharer-twitter:hover{color:#00aced}#sharer-pinterest:hover{color:#b5071a}#sharer-pocket:hover{color:#ef4056}.post-list{position:relative;width:100%;max-width:45rem;margin:auto;padding:0 1rem;-webkit-box-sizing:border-box;box-sizing:border-box}.post-list__item{overflow:hidden;padding:1rem 0;border-bottom:1px solid #f6f6f6}.post-list__item:last-child{border:0}.post-list__item__col-1{width:33.3333%;padding-right:.5rem}.post-list__item__col-1,.post-list__item__col-2{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.post-list__item__col-2{width:66.6666%;padding-left:.5rem}.post-list__item__link{display:block;overflow:hidden;position:relative;width:100%;padding-top:75%}.post-list__item__link:hover .post-list__item__link__background{-webkit-transform:scale(1.2);transform:scale(1.2)}.post-list__item__link__background{position:absolute;top:0;right:0;bottom:0;left:0;background-position:50% 50%;background-size:cover;background-repeat:no-repeat;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.post-list__item__meta__link{color:#999}.post-list__item__meta__link:hover{color:#59abe3}.post-list__item__meta__label{color:#999;margin:0 .5rem}.post-list__item__title{margin:.5rem 0}@media only screen and (max-width:624px){.post-list__item__title{height:1.5rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}}.post-list__item__title a{color:#454545}.post-list__item__title a:hover{color:#59abe3}.post-list__item__description{margin:0}@media only screen and (max-width:624px){.post-list__item__description{height:1.5rem;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}}.pagination{width:100%;text-align:center;padding:1rem 0}.pagination .current,.pagination a{display:inline-block;height:1.5rem;line-height:1.5rem;padding:0 .25rem;margin:0 .25rem;border-bottom:2px solid}.pagination .current{color:#454545}.pagination .space{color:#999}.pagination a{color:#999;border-color:transparent;-webkit-transition:border-color .3s ease,color .3s ease;transition:border-color .3s ease,color .3s ease}.pagination a:hover{color:#59abe3;border-color:#59abe3}.widgets{background-color:#f6f6f6}.widgets-inner{width:100%;max-width:72rem;margin:auto;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}@media only screen and (min-width:624px){.widgets-inner{padding:0 .5rem;text-align:center}}.widgets__item{width:100%;float:left;-webkit-box-sizing:border-box;box-sizing:border-box;margin:1rem 0;padding:0 1rem}@media only screen and (min-width:624px){.widgets__item{width:33.33%;padding:0 .5rem;display:inline-block;float:none;vertical-align:top;text-align:left}}.widgets__item ul{padding:0;list-style:none}.widgets__item ul ul{padding-left:1rem}.widgets__item ul ul li:before{float:left;padding-right:3.5px;padding-right:.25rem;content:"-"}.widgets__item li{overflow:hidden;width:100%}.widgets__item a{color:#666}.widgets__item a:hover{color:#59abe3}.widgets__item__heading{margin-top:0}.archive-list-link,.category-list-link,.tag-list-link{float:left}.archive-list-count,.category-list-count,.tag-list-count{font-size:.75em;padding-left:.5em;float:left}.archive-list-count:before,.category-list-count:before,.tag-list-count:before{content:"("}.archive-list-count:after,.category-list-count:after,.tag-list-count:after{content:")"}.copyright{background-color:#ededed;text-align:center;padding:2rem 0 5rem;margin:0}img[alt]{width:}
\ No newline at end of file
......@@ -11,7 +11,7 @@
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Static Site what?!">
<meta name="twitter:description" content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and…">
<meta name="twitter:image" content="http://blog.thebestjohn.com/images/default.jpg"><meta property="article:author" content="TheBestJohn"><meta property="twitter:label1" content="Published at"><meta property="twitter:data1" content="2018-04-27 17:40:00"><meta property="twitter:label2" content="Written by"><meta property="twitter:data2" content="TheBestJohn"><link rel="icon" href="/images/logo.svg"><link rel="alternate" href="/atom.xml" type="application/atom+xml" title="TheBestJohn"></head><body itemscope itemtype="https://schema.org/WebPage"><nav class="menu" id="menu"><div class="menu-inner"><div class="menu__left-area"><div class="menu__item"><a class="menu__item__link menu__item__link--brand" href="/" title="Home" rel="home"><img class="menu__item__link--brand__image" src="/images/logo.svg" alt="TheBestJohn"><span class="menu__item__link--brand__label">TheBestJohn</span></a></div></div><div class="menu__right-area"><div class="menu__item"><a class="menu__item__link" href="/">Home</a></div><div class="menu__item"><a class="menu__item__link" href="/about">About</a></div><div class="menu__item"><a class="menu__item__link" href="/archives">Archives</a></div></div></div></nav><div class="page-background"></div><div class="content-container"><div class="content-outer"><div class="content-inner" itemscope itemtype="https://schema.org/Blog"><article class="article" id="article" itemscope itemtype="https://schema.org/BlogPosting"><h1 class="article__title" itemprop="headline">Static Site what?!</h1><div class="article__meta"><time class="article__meta__time" datetime="2018-04-27T17:40:00.000Z" itemprop="datePublished">2018-04-27 17:40:00</time><div class="article__meta__categories"><a class="article__meta__categories__item" href="/categories/Web-Dev/">Web Dev</a></div></div><hr><div class="article__contents"><p>Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive target for exploitation. In fact the first time I lost control of my server it was because of a bug in a themes use of timthumb.php. Basically, the attacker sent it an “image” file from a hosting website that had a php eval script hidden in it’s data. When accessed normally it showed an image but if they accessed the cached file that timthumb made, then the server treated it as a php file. From there they were able to install a remote shell, and own my server.</p>
<meta name="twitter:image" content="http://blog.thebestjohn.com/images/default.jpg"><meta property="article:author" content="TheBestJohn"><meta property="twitter:label1" content="Published at"><meta property="twitter:data1" content="2018-04-27 17:40:00"><meta property="twitter:label2" content="Written by"><meta property="twitter:data2" content="TheBestJohn"><link rel="icon" href="/images/logo.svg"><link rel="alternate" href="/atom.xml" type="application/atom+xml" title="TheBestJohn"></head><body itemscope itemtype="https://schema.org/WebPage"><nav class="menu" id="menu"><div class="menu-inner"><div class="menu__left-area"><div class="menu__item"><a class="menu__item__link menu__item__link--brand" href="/" title="Home" rel="home"><img class="menu__item__link--brand__image" src="/images/logo.svg" alt="TheBestJohn"><span class="menu__item__link--brand__label">TheBestJohn</span></a></div></div><div class="menu__right-area"><div class="menu__item"><a class="menu__item__link" href="//">Home</a></div><div class="menu__item"><a class="menu__item__link" href="//about">About</a></div><div class="menu__item"><a class="menu__item__link" href="//archives">Archives</a></div></div></div></nav><div class="page-background"></div><div class="content-container"><div class="content-outer"><div class="content-inner" itemscope itemtype="https://schema.org/Blog"><article class="article" id="article" itemscope itemtype="https://schema.org/BlogPosting"><h1 class="article__title" itemprop="headline">Static Site what?!</h1><div class="article__meta"><time class="article__meta__time" datetime="2018-04-27T17:40:00.000Z" itemprop="datePublished">2018-04-27 17:40:00</time><div class="article__meta__categories"><a class="article__meta__categories__item" href="/categories/Web-Dev/">Web Dev</a></div></div><hr><div class="article__contents"><p>Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive target for exploitation. In fact the first time I lost control of my server it was because of a bug in a themes use of timthumb.php. Basically, the attacker sent it an “image” file from a hosting website that had a php eval script hidden in it’s data. When accessed normally it showed an image but if they accessed the cached file that timthumb made, then the server treated it as a php file. From there they were able to install a remote shell, and own my server.</p>
<h3 id="Static-site-generators"><a href="#Static-site-generators" class="headerlink" title="Static site generators"></a>Static site generators</h3><p>While the timthumb exploit was a pain in the ass, it was very interesting to me and made me seriously consider how I secure my systems. To that end I started reading into static site generators. Static site generators take your posts, usually formatted in some sort of markup, put them through a templating engine that outputs <code>.html</code> files, which you can then serve via the usual methods.</p>
<h3 id="Why-tho"><a href="#Why-tho" class="headerlink" title="Why tho?"></a>Why tho?</h3><p>The idea is that <em>most</em> sites don’t actually need to use dynamic code. Their content is, for the most, part static. Users aren’t interacting with the content (other than the comments sections and forms but we’ll talk about that later). They are, instead, just reading it. The only person who seems to be interacting with it is the person that owns the site. Even then, the owner isn’t actively interacting. They are writing a post, or updating a page. After that, everything stays the same.</p>
<p>All this is a “face-value” reason to move over to a static site. I have an even deeper reason for wanting to use a static site, portability. Static sites allow you to use a generic format for your posts. I write all my posts in markdown, a very common and widely used format. With this I can move from generator to generator without much change. If I were to make my blog in something like Wordpress, my post information would be locked into a <em>very</em> specific database format. If I, for some reason or another, decided I no longer wanted to use wordpress it would be a lot of work modifying all my posts to be compatible with the new platform.</p>
......@@ -20,4 +20,4 @@
<p>Originally I thought I would install it, set up an apache virtual reverse proxy via an <code>.htaccess</code> file and let node serve static files. Some people do this. It’s a valid way to serve a site. The problem that I have with this, is that it’s just another vulnerable layer of code that I don’t have the inclination to audit. It could potentially have glaring security holes and I wouldn’t know. Again, I want to clarify that I don’t know much of anything about security. I’m not a cryptographer, nor an expert on cyber security. However, I can easily read the html that comes out the other end of the site generator and verify that there are no well-known issues with the javascript or html.</p>
<p>If this is the way you wanted to do it, you would need, at the very least, this sort of <code>.htaccess</code> configuration in your root<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">RewriteEngine On</span><br><span class="line">DirectoryIndex index.html </span><br><span class="line">RewriteRule ^$ http://127.0.0.1:4000 [P,L]</span><br><span class="line">RewriteCond %&#123;REQUEST_FILENAME&#125; !-f</span><br><span class="line">RewriteCond %&#123;REQUEST_FILENAME&#125; !-d</span><br><span class="line">RewriteRule ^(.*)$ http://127.0.0.1:4000/$1 [P,L]</span><br></pre></td></tr></table></figure></p>
<p>So what to do? Well, the output is a fully static html/css/js site. No need for node, no need for a reverse proxy. This will just work when popped into a public directory of a webserver.</p>
<a href="/posts/setting-up-hexo-auto-deploy-from-gitlab/" title="getting that set up">getting that set up</a></div><div class="article__author" itemscope itemprop="author" itemtype="https://schema.org/Person"><img class="article__author__image" src="/images/avatar.jpg" alt="TheBestJohn"><a class="article__author__link" title="About TheBestJohn" rel="author">TheBestJohn</a><p class="article__author__desc"></p><div class="article__author__socials"><a class="article__author__socials__item" href="/atom.xml" title="rss" target="_blank"><i class="fa fa-rss"></i></a></div><meta itemprop="name" content="TheBestJohn"></div><div class="sharer" id="sharer"><div class="sharer-inner"><div class="sharer__right"><button class="sharer__item" id="sharer-facebook"><i class="fa fa-facebook-official"></i></button><button class="sharer__item" id="sharer-twitter"><i class="fa fa-twitter"></i></button><button class="sharer__item" id="sharer-pinterest"><i class="fa fa-pinterest"></i></button><button class="sharer__item" id="sharer-pocket"><i class="fa fa-get-pocket"></i></button></div></div></div><!-- Disqus Code--><!-- Meta Tags for Structured Data--><meta itemprop="dateModified" content="2018-04-29T20:39:52.874Z"><meta itemprop="articleBody" content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive..."><meta itemprop="url" content="http://blog.thebestjohn.com/posts/static-site-what/"><meta itemprop="mainEntityOfPage" content="http://blog.thebestjohn.com/posts/static-site-what/"><div itemscope itemtype="https://schema.org/Organization" itemprop="publisher"><meta itemprop="name" content="TheBestJohn"><div itemscope itemprop="logo" itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="http://blog.thebestjohn.com/images/logo.svg"></div></div><div itemscope itemtype="https://schema.org/ImageObject" itemprop="image"><meta itemprop="contentUrl" content="http://blog.thebestjohn.com/images/default.jpg"><meta itemprop="url" content="http://blog.thebestjohn.com/images/default.jpg"><meta itemprop="width" content="1280"><meta itemprop="height" content="720"></div></article></div></div></div><footer id="footer"><div class="widgets"><div class="widgets-inner"><!-- Jade doesn't support dynamic inclusion with `each`.--><!-- So, I just hard coded the file names that will be included.--><div class="widgets__item"><h3 class="widgets__item__heading">Recent posts</h3><ul class="recent-posts"><li class="recent-posts__item"><a href="/posts/static-site-what/">Static Site what?!</a></li></ul></div><div class="widgets__item"><h3 class="widgets__item__heading">Archives</h3><ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2018/04/">April 2018</a><span class="archive-list-count">1</span></li></ul></div><div class="widgets__item"><h3 class="widgets__item__heading">Categories</h3><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/Web-Dev/">Web Dev</a><span class="category-list-count">1</span></li></ul></div></div></div><p class="copyright"><small>© 2018 TheBestJohn<br>Powered by <a href="https://hexo.io" rel="external" target="_blank">Hexo</a>, Theme by <a href="https://github.com/hyunseob" rel="external" target="_blank">HyunSeob</a></small></p></footer><script src="/js/sharer.min.js"></script></body></html>
\ No newline at end of file
<a href="/posts/setting-up-hexo-auto-deploy-from-gitlab/" title="getting that set up">getting that set up</a></div><div class="article__author" itemscope itemprop="author" itemtype="https://schema.org/Person"><img class="article__author__image" src="/images/avatar.jpg" alt="TheBestJohn"><a class="article__author__link" title="About TheBestJohn" rel="author">TheBestJohn</a><p class="article__author__desc"></p><div class="article__author__socials"><a class="article__author__socials__item" href="/atom.xml" title="rss" target="_blank"><i class="fa fa-rss"></i></a></div><meta itemprop="name" content="TheBestJohn"></div><div class="sharer" id="sharer"><div class="sharer-inner"><div class="sharer__right"><button class="sharer__item" id="sharer-facebook"><i class="fa fa-facebook-official"></i></button><button class="sharer__item" id="sharer-twitter"><i class="fa fa-twitter"></i></button><button class="sharer__item" id="sharer-pinterest"><i class="fa fa-pinterest"></i></button><button class="sharer__item" id="sharer-pocket"><i class="fa fa-get-pocket"></i></button></div></div></div><!-- Disqus Code--><!-- Meta Tags for Structured Data--><meta itemprop="dateModified" content="2018-04-29T20:39:52.874Z"><meta itemprop="articleBody" content="Recently I’ve become disillusioned with most CMS options. They’re a pain to keep updated, plugins are constantly being abandoned, and they’re so prevalent in sites that they make a very attractive..."><meta itemprop="url" content="/posts/static-site-what/"><meta itemprop="mainEntityOfPage" content="/posts/static-site-what/"><div itemscope itemtype="https://schema.org/Organization" itemprop="publisher"><meta itemprop="name" content="TheBestJohn"><div itemscope itemprop="logo" itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/images/logo.svg"></div></div><div itemscope itemtype="https://schema.org/ImageObject" itemprop="image"><meta itemprop="contentUrl" content="/images/default.jpg"><meta itemprop="url" content="/images/default.jpg"><meta itemprop="width" content="1280"><meta itemprop="height" content="720"></div></article></div></div></div><footer id="footer"><div class="widgets"><div class="widgets-inner"><!-- Jade doesn't support dynamic inclusion with `each`.--><!-- So, I just hard coded the file names that will be included.--><div class="widgets__item"><h3 class="widgets__item__heading">Recent posts</h3><ul class="recent-posts"><li class="recent-posts__item"><a href="/posts/static-site-what/">Static Site what?!</a></li></ul></div><div class="widgets__item"><h3 class="widgets__item__heading">Archives</h3><ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/archives/2018/04/">April 2018</a><span class="archive-list-count">1</span></li></ul></div><div class="widgets__item"><h3 class="widgets__item__heading">Categories</h3><ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/Web-Dev/">Web Dev</a><span class="category-list-count">1</span></li></ul></div></div></div><p class="copyright"><small>© 2018 TheBestJohn<br>Powered by <a href="https://hexo.io" rel="external" target="_blank">Hexo</a>, Theme by <a href="https://github.com/hyunseob" rel="external" target="_blank">HyunSeob</a>, Edited by <a href="https://github.com/moreal" rel="external" target="_blank">Moreal</a></small></p></footer><script src="/js/sharer.min.js"></script></body></html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment