-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.json
More file actions
1 lines (1 loc) · 792 KB
/
db.json
File metadata and controls
1 lines (1 loc) · 792 KB
1
{"meta":{"version":1,"warehouse":"2.2.0"},"models":{"Asset":[{"_id":"source/CNAME","path":"CNAME","modified":0,"renderable":0},{"_id":"source/favicon.ico","path":"favicon.ico","modified":0,"renderable":0},{"_id":"themes/next/source/404.html","path":"404.html","modified":0,"renderable":1},{"_id":"themes/next/source/css/main.styl","path":"css/main.styl","modified":0,"renderable":1},{"_id":"themes/next/source/images/algolia_logo.svg","path":"images/algolia_logo.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/apple-touch-icon-next.png","path":"images/apple-touch-icon-next.png","modified":0,"renderable":1},{"_id":"themes/next/source/images/alipay.jpg","path":"images/alipay.jpg","modified":0,"renderable":1},{"_id":"themes/next/source/images/avatar.gif","path":"images/avatar.gif","modified":0,"renderable":1},{"_id":"themes/next/source/images/avatar.jpg","path":"images/avatar.jpg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by-nc-nd.svg","path":"images/cc-by-nc-nd.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by-nc-sa.svg","path":"images/cc-by-nc-sa.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by-nc.svg","path":"images/cc-by-nc.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by-sa.svg","path":"images/cc-by-sa.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by-nd.svg","path":"images/cc-by-nd.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-by.svg","path":"images/cc-by.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/cc-zero.svg","path":"images/cc-zero.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/favicon-16x16-next.png","path":"images/favicon-16x16-next.png","modified":0,"renderable":1},{"_id":"themes/next/source/images/loading.gif","path":"images/loading.gif","modified":0,"renderable":1},{"_id":"themes/next/source/images/favicon-32x32-next.png","path":"images/favicon-32x32-next.png","modified":0,"renderable":1},{"_id":"themes/next/source/images/logo.svg","path":"images/logo.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/placeholder.gif","path":"images/placeholder.gif","modified":0,"renderable":1},{"_id":"themes/next/source/images/quote-r.svg","path":"images/quote-r.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/searchicon.png","path":"images/searchicon.png","modified":0,"renderable":1},{"_id":"themes/next/source/images/quote-l.svg","path":"images/quote-l.svg","modified":0,"renderable":1},{"_id":"themes/next/source/images/wechatpay.jpg","path":"images/wechatpay.jpg","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/bootstrap.js","path":"js/src/bootstrap.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/algolia-search.js","path":"js/src/algolia-search.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/affix.js","path":"js/src/affix.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/js.cookie.js","path":"js/src/js.cookie.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/motion.js","path":"js/src/motion.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/hook-duoshuo.js","path":"js/src/hook-duoshuo.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/post-details.js","path":"js/src/post-details.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/scroll-cookie.js","path":"js/src/scroll-cookie.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/scrollspy.js","path":"js/src/scrollspy.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/utils.js","path":"js/src/utils.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/algolia-instant-search/instantsearch.min.css","path":"lib/algolia-instant-search/instantsearch.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/canvas-ribbon/canvas-ribbon.js","path":"lib/canvas-ribbon/canvas-ribbon.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fastclick/LICENSE","path":"lib/fastclick/LICENSE","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fastclick/README.md","path":"lib/fastclick/README.md","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fastclick/bower.json","path":"lib/fastclick/bower.json","modified":0,"renderable":1},{"_id":"themes/next/source/lib/canvas-nest/canvas-nest.min.js","path":"lib/canvas-nest/canvas-nest.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery_lazyload/CONTRIBUTING.md","path":"lib/jquery_lazyload/CONTRIBUTING.md","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery_lazyload/README.md","path":"lib/jquery_lazyload/README.md","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery_lazyload/bower.json","path":"lib/jquery_lazyload/bower.json","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery_lazyload/jquery.lazyload.js","path":"lib/jquery_lazyload/jquery.lazyload.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery_lazyload/jquery.scrollstop.js","path":"lib/jquery_lazyload/jquery.scrollstop.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/HELP-US-OUT.txt","path":"lib/font-awesome/HELP-US-OUT.txt","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/bower.json","path":"lib/font-awesome/bower.json","modified":0,"renderable":1},{"_id":"themes/next/source/lib/needsharebutton/font-embedded.css","path":"lib/needsharebutton/font-embedded.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/needsharebutton/needsharebutton.css","path":"lib/needsharebutton/needsharebutton.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/needsharebutton/needsharebutton.js","path":"lib/needsharebutton/needsharebutton.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/three/canvas_lines.min.js","path":"lib/three/canvas_lines.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/three/three-waves.min.js","path":"lib/three/three-waves.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/three/canvas_sphere.min.js","path":"lib/three/canvas_sphere.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/velocity/bower.json","path":"lib/velocity/bower.json","modified":0,"renderable":1},{"_id":"themes/next/source/lib/velocity/velocity.min.js","path":"lib/velocity/velocity.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/velocity/velocity.ui.js","path":"lib/velocity/velocity.ui.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/velocity/velocity.ui.min.js","path":"lib/velocity/velocity.ui.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/exturl.js","path":"js/src/exturl.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-bounce.min.css","path":"lib/pace/pace-theme-bounce.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-barber-shop.min.css","path":"lib/pace/pace-theme-barber-shop.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-center-atom.min.css","path":"lib/pace/pace-theme-center-atom.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-center-radar.min.css","path":"lib/pace/pace-theme-center-radar.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-center-simple.min.css","path":"lib/pace/pace-theme-center-simple.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-center-circle.min.css","path":"lib/pace/pace-theme-center-circle.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-corner-indicator.min.css","path":"lib/pace/pace-theme-corner-indicator.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-big-counter.min.css","path":"lib/pace/pace-theme-big-counter.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-loading-bar.min.css","path":"lib/pace/pace-theme-loading-bar.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-flash.min.css","path":"lib/pace/pace-theme-flash.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-mac-osx.min.css","path":"lib/pace/pace-theme-mac-osx.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-minimal.min.css","path":"lib/pace/pace-theme-minimal.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace.min.js","path":"lib/pace/pace.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/pace/pace-theme-fill-left.min.css","path":"lib/pace/pace-theme-fill-left.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/jquery/index.js","path":"lib/jquery/index.js","modified":0,"renderable":1},{"_id":"themes/next/source/js/src/schemes/pisces.js","path":"js/src/schemes/pisces.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/han.css","path":"lib/Han/dist/han.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/han.min.css","path":"lib/Han/dist/han.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/han.min.js","path":"lib/Han/dist/han.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/fancybox_loading@2x.gif","path":"lib/fancybox/source/fancybox_loading@2x.gif","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/fancybox_loading.gif","path":"lib/fancybox/source/fancybox_loading.gif","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/fancybox_overlay.png","path":"lib/fancybox/source/fancybox_overlay.png","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/fancybox_sprite.png","path":"lib/fancybox/source/fancybox_sprite.png","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/fancybox_sprite@2x.png","path":"lib/fancybox/source/fancybox_sprite@2x.png","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/blank.gif","path":"lib/fancybox/source/blank.gif","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.css","path":"lib/fancybox/source/jquery.fancybox.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.js","path":"lib/fancybox/source/jquery.fancybox.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.pack.js","path":"lib/fancybox/source/jquery.fancybox.pack.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fastclick/lib/fastclick.js","path":"lib/fastclick/lib/fastclick.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fastclick/lib/fastclick.min.js","path":"lib/fastclick/lib/fastclick.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.css","path":"lib/font-awesome/css/font-awesome.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.css.map","path":"lib/font-awesome/css/font-awesome.css.map","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.min.css","path":"lib/font-awesome/css/font-awesome.min.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/ua-parser-js/dist/ua-parser.pack.js","path":"lib/ua-parser-js/dist/ua-parser.pack.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/ua-parser-js/dist/ua-parser.min.js","path":"lib/ua-parser-js/dist/ua-parser.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/han.js","path":"lib/Han/dist/han.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff","path":"lib/font-awesome/fonts/fontawesome-webfont.woff","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff2","path":"lib/font-awesome/fonts/fontawesome-webfont.woff2","modified":0,"renderable":1},{"_id":"themes/next/source/lib/velocity/velocity.js","path":"lib/velocity/velocity.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/font/han-space.otf","path":"lib/Han/dist/font/han-space.otf","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/font/han.otf","path":"lib/Han/dist/font/han.otf","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/font/han.woff","path":"lib/Han/dist/font/han.woff","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/font/han.woff2","path":"lib/Han/dist/font/han.woff2","modified":0,"renderable":1},{"_id":"themes/next/source/lib/Han/dist/font/han-space.woff","path":"lib/Han/dist/font/han-space.woff","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/fancybox_buttons.png","path":"lib/fancybox/source/helpers/fancybox_buttons.png","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-buttons.css","path":"lib/fancybox/source/helpers/jquery.fancybox-buttons.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-media.js","path":"lib/fancybox/source/helpers/jquery.fancybox-media.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css","path":"lib/fancybox/source/helpers/jquery.fancybox-thumbs.css","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-thumbs.js","path":"lib/fancybox/source/helpers/jquery.fancybox-thumbs.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-buttons.js","path":"lib/fancybox/source/helpers/jquery.fancybox-buttons.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/FontAwesome.otf","path":"lib/font-awesome/fonts/FontAwesome.otf","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.eot","path":"lib/font-awesome/fonts/fontawesome-webfont.eot","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.ttf","path":"lib/font-awesome/fonts/fontawesome-webfont.ttf","modified":0,"renderable":1},{"_id":"themes/next/source/lib/algolia-instant-search/instantsearch.min.js","path":"lib/algolia-instant-search/instantsearch.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/three/three.min.js","path":"lib/three/three.min.js","modified":0,"renderable":1},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.svg","path":"lib/font-awesome/fonts/fontawesome-webfont.svg","modified":0,"renderable":1}],"Cache":[{"_id":"source/404.ejs","hash":"460a170c376ec8cebe098c3851c2a6fac0ac5155","modified":1535164163006},{"_id":"source/CNAME","hash":"259a31d10f096cb6cb30c48a9e4676b86aae0439","modified":1535165478672},{"_id":"source/favicon.ico","hash":"cd13f6a34732038e34e8af16eb9c7495b22fd395","modified":1535164163089},{"_id":"source/index.ejs","hash":"15068061dc4da27f1545d43567d84c9337a3d5ad","modified":1535164163092},{"_id":"themes/next/.bowerrc","hash":"334da94ca6f024d60d012cc26ea655681e724ad8","modified":1535164165188},{"_id":"themes/next/.javascript_ignore","hash":"cd250ad74ca22bd2c054476456a73d9687f05f87","modified":1535164165200},{"_id":"themes/next/.gitattributes","hash":"8454b9313cb1a97b63fb87e2d29daee497ce6249","modified":1535164165195},{"_id":"themes/next/.hound.yml","hash":"289dcf5bfe92dbd680d54d6e0668f41c9c9c0c78","modified":1535164165198},{"_id":"themes/next/.editorconfig","hash":"211d2c92bfdddb3e81ea946f4ca7a539f150f4da","modified":1535164165192},{"_id":"themes/next/.jshintrc","hash":"b7d23f2ce8d99fa073f22f9960605f318acd7710","modified":1535164165202},{"_id":"themes/next/LICENSE","hash":"ec44503d7e617144909e54533754f0147845f0c5","modified":1535164165211},{"_id":"themes/next/.stylintrc","hash":"3b7f9785e9ad0dab764e1c535b40df02f4ff5fd6","modified":1535164165204},{"_id":"themes/next/.travis.yml","hash":"6674fbdfe0d0c03b8a04527ffb8ab66a94253acd","modified":1535164165207},{"_id":"themes/next/README.md","hash":"19d57d39580c798dfdd119024d8c3342431b4ab4","modified":1535164165217},{"_id":"themes/next/bower.json","hash":"47471a8f13528dc4052b746db5b4be2375682173","modified":1535164165231},{"_id":"themes/next/gulpfile.coffee","hash":"412defab3d93d404b7c26aaa0279e2e586e97454","modified":1535164165234},{"_id":"themes/next/_config.yml","hash":"2a277aa371d1baa8528f24ec9853b41fa79315a7","modified":1535164165229},{"_id":"themes/next/README.cn.md","hash":"b764aae78ffa561a9a68fdee4c6f21c3ce260fbb","modified":1535164165213},{"_id":"themes/next/package.json","hash":"39370e2aadf1f9a7c105edff064c6e47682b3932","modified":1535164165523},{"_id":"source/_posts/2014-02-23-hello-world.md","hash":"254a9d5c891f78b6e072e3caf09f114190e44bbc","modified":1535164163019},{"_id":"source/_posts/2016-01-02-Notes-On-Creating-A-Hexo-Theme.md","hash":"fbba7d7d8663372cb032ab91be8bbd586c8a9fa3","modified":1535164163023},{"_id":"source/_posts/Centos7-Deploy-Git-Server.md","hash":"1945be892bb0d8bb5e50c3296046a2b15a8a4859","modified":1535164163030},{"_id":"source/_posts/Generate-Unique-Invitation-Code-Based-On-User-ID.md","hash":"4009af524368e91a2f1ad0126578adc7315e1070","modified":1561627314411},{"_id":"source/_posts/Git-FAQ.md","hash":"ff880b2dd298060ed75139f4ee0865a16556cb78","modified":1535337683743},{"_id":"source/_posts/Git-Push-Local-File-To-Git-Server.md","hash":"5f61467f7e31cfc9650a131b43160fa4ee77c920","modified":1535164163033},{"_id":"source/_posts/Github-Delete-Folder-and-Files-But-not-Delete-Local-Files.md","hash":"15950327f80152e035b3534df7400ce2e0a69c37","modified":1535164163037},{"_id":"source/_posts/Mobile-Page-Force-to-Landscape.md","hash":"1736dbc8bb350292e341010155d15f94f9b3ac7c","modified":1551930053589},{"_id":"source/_posts/Laravel-Model-Dynamic-Attribute.md","hash":"c61049fbc6a575e61b81aebf42533212c10b60e7","modified":1535613793588},{"_id":"source/_posts/Linux-VMWare-Device-eth0-does-not-seem-to-be-present-delaying-initialization.md","hash":"aaca2afd5c46eab4fe9a15949b8ca65ecad355e8","modified":1535164163055},{"_id":"source/_posts/PHP-Diffences-Between-flush-and-ob-flush.md","hash":"776cef832e8702b5ccde50780d9bb3afadc31852","modified":1547259691799},{"_id":"source/_posts/PHP-Prevent-Cross-Domain-Submit-Form.md","hash":"172058c47236b2bbb8b29da7d1d74892f29cde13","modified":1535164163065},{"_id":"source/_posts/Php-Nuonuo-Elec-Invoice.md","hash":"064fac9ee495953082fe8d84a48b845101c2ac7d","modified":1615873969003},{"_id":"source/_posts/The-connection-was-reset-on-wamp.md","hash":"6106d72c04471eda338598b25d0156f9a421a472","modified":1542080758528},{"_id":"source/_posts/Travis-CI-Build-Hexo-Faqs.md","hash":"0e276cd850b4d5bd3f65f64990ecd59ad7f469e8","modified":1535164163069},{"_id":"source/_posts/Windows-Cmd-Set-Proxy.md","hash":"2c66b8c1452db4da3ecf0bbf9c16f3604ccb6762","modified":1535336606363},{"_id":"source/about/index.ejs","hash":"38c17bc73cbe91ee29ae32dd607a709cb89aef53","modified":1535164163074},{"_id":"source/categories/index.md","hash":"abeff4325077bd28014de1a73fd2ae9cc077f132","modified":1535164163080},{"_id":"source/contact/index.ejs","hash":"a2b7a1c2c25b4d662a47fd897d33527b7a7ed716","modified":1535164163085},{"_id":"source/_data/next2.yml","hash":"0ae49d202bd089fde2a74a40cbfbbbb97d4053b0","modified":1535164163015},{"_id":"source/projects/index.ejs","hash":"6d20255e7be996661eda057c56bbd3766965584f","modified":1535164163102},{"_id":"source/tags/index.md","hash":"f36f0a62cdce7b62d0bc2fbc564aea7f995f2fa8","modified":1535164163107},{"_id":"source/login/index.ejs","hash":"711871113ae044dd22679f55ab99d384f5f47264","modified":1535164163096},{"_id":"themes/next/layout/_layout.swig","hash":"2164570bb05db11ee4bcfbbb5d183a759afe9d07","modified":1535164165292},{"_id":"source/_posts/CentOS7-Nginx-PHP-Laravel-500-error.md","hash":"2d8a36d0f7e8840f349fab890dad091273f2fc54","modified":1535164163026},{"_id":"themes/next/layout/archive.swig","hash":"9a2c14874a75c7085d2bada5e39201d3fc4fd2b4","modified":1535164165503},{"_id":"themes/next/layout/category.swig","hash":"3cbb3f72429647411f9e85f2544bdf0e3ad2e6b2","modified":1535164165506},{"_id":"themes/next/layout/index.swig","hash":"555a357ecf17128db4e29346c92bb6298e66547a","modified":1535164165508},{"_id":"themes/next/layout/post.swig","hash":"7a6ce102ca82c3a80f776e555dddae1a9981e1ed","modified":1535164165514},{"_id":"themes/next/layout/schedule.swig","hash":"87ad6055df01fa2e63e51887d34a2d8f0fbd2f5a","modified":1535164165517},{"_id":"themes/next/layout/tag.swig","hash":"34e1c016cbdf94a31f9c5d494854ff46b2a182e9","modified":1535164165520},{"_id":"themes/next/languages/de.yml","hash":"fd02d9c2035798d5dc7c1a96b4c3e24b05b31a47","modified":1535164165239},{"_id":"themes/next/languages/default.yml","hash":"b3bcd8934327448a43d9bfada5dd11b1b8c1402e","modified":1535164165245},{"_id":"themes/next/languages/id.yml","hash":"dccae33e2a5b3c9f11c0e05ec4a7201af1b25745","modified":1535164165252},{"_id":"themes/next/languages/en.yml","hash":"2f4b4776ca1a08cc266a19afb0d1350a3926f42c","modified":1535164165248},{"_id":"themes/next/languages/it.yml","hash":"a215d016146b1bd92cef046042081cbe0c7f976f","modified":1535164165255},{"_id":"themes/next/languages/ja.yml","hash":"37f954e47a3bc669620ca559e3edb3b0072a4be5","modified":1535164165258},{"_id":"themes/next/languages/ko.yml","hash":"dc8f3e8c64eb7c4bb2385025b3006b8efec8b31d","modified":1535164165260},{"_id":"themes/next/languages/pt.yml","hash":"2efcd240c66ab1a122f061505ca0fb1e8819877b","modified":1535164165268},{"_id":"themes/next/layout/page.swig","hash":"e8fcaa641d46930237675d2ad4b56964d9e262e9","modified":1535164165511},{"_id":"themes/next/languages/nl-NL.yml","hash":"213e7a002b82fb265f69dabafbbc382cfd460030","modified":1535164165262},{"_id":"themes/next/languages/ru.yml","hash":"e33ee44e80f82e329900fc41eb0bb6823397a4d6","modified":1535164165270},{"_id":"themes/next/languages/pt-BR.yml","hash":"568d494a1f37726a5375b11452a45c71c3e2852d","modified":1535164165265},{"_id":"themes/next/languages/zh-Hans.yml","hash":"66b9b42f143c3cb2f782a94abd4c4cbd5fd7f55f","modified":1535164165276},{"_id":"themes/next/languages/vi.yml","hash":"a9b89ebd3e5933033d1386c7c56b66c44aca299a","modified":1535164165273},{"_id":"themes/next/languages/zh-tw.yml","hash":"432463b481e105073accda16c3e590e54c8e7b74","modified":1535164165281},{"_id":"themes/next/languages/zh-hk.yml","hash":"fe0d45807d015082049f05b54714988c244888da","modified":1535164165278},{"_id":"themes/next/scripts/merge.js","hash":"39b84b937b2a9608b94e5872349a47200e1800ff","modified":1535164165531},{"_id":"themes/next/languages/fr-FR.yml","hash":"efeeb55d5c4add54ad59a612fc0630ee1300388c","modified":1535164165250},{"_id":"themes/next/test/.jshintrc","hash":"c9fca43ae0d99718e45a6f5ce736a18ba5fc8fb6","modified":1535164166453},{"_id":"themes/next/test/helpers.js","hash":"f25e7f3265eb5a6e1ccbb5e5012fa9bebf134105","modified":1535164166457},{"_id":"themes/next/scripts/merge-configs.js","hash":"5758f8f3f12d17bc80da65bb808a20b3a8aae186","modified":1535164165527},{"_id":"themes/next/test/intern.js","hash":"db90b1063356727d72be0d77054fdc32fa882a66","modified":1535164166459},{"_id":"themes/next/source/404.html","hash":"9eb955271b03c72a4bb23a06b60e4ecb4070a880","modified":1535164165561},{"_id":"themes/next/source/fonts/.gitkeep","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164166005},{"_id":"themes/next/layout/_custom/sidebar.swig","hash":"ba8ab5a0280b953aa97435ff8946cbcbb2755a27","modified":1535164165289},{"_id":"themes/next/layout/_macro/post-collapse.swig","hash":"8c56dd26157cbc580ae41d97ac34b90ab48ced3f","modified":1535164165296},{"_id":"themes/next/layout/_macro/post-copyright.swig","hash":"f83befdc740beb8dc88805efd7fbb0fef9ed19be","modified":1535164165299},{"_id":"themes/next/layout/_custom/header.swig","hash":"ba8ab5a0280b953aa97435ff8946cbcbb2755a27","modified":1535164165287},{"_id":"themes/next/layout/_macro/post.swig","hash":"4ba938822d56c597490f0731893eaa2443942e0f","modified":1535164165302},{"_id":"themes/next/layout/_macro/sidebar.swig","hash":"b9f9959225876fb56fb3fba96306d19396e704d4","modified":1535164165308},{"_id":"themes/next/layout/_macro/wechat-subscriber.swig","hash":"e2e4eae391476da994045ed4c7faf5e05aca2cd7","modified":1535164165311},{"_id":"themes/next/layout/_macro/reward.swig","hash":"357d86ec9586705bfbb2c40a8c7d247a407db21a","modified":1535164165305},{"_id":"themes/next/layout/_third-party/duoshuo-hot-articles.swig","hash":"ba75672183d94f1de7c8bd0eeee497a58c70e889","modified":1535164165462},{"_id":"themes/next/layout/_third-party/exturl.swig","hash":"8301c9600bb3e47f7fb98b0e0332ef3c51bb1688","modified":1535164165464},{"_id":"themes/next/layout/_third-party/mathjax.swig","hash":"a0bd3388587fd943baae0d84ca779a707fbcad89","modified":1535164165466},{"_id":"themes/next/layout/_third-party/needsharebutton.swig","hash":"fa882641da3bd83d9a58a8a97f9d4c62a9ee7b5c","modified":1535164165469},{"_id":"themes/next/layout/_third-party/schedule.swig","hash":"db15d7e1552aa2d2386a6b8a33b3b3a40bf9e43d","modified":1535164165475},{"_id":"themes/next/layout/_third-party/scroll-cookie.swig","hash":"9a188938d46931d5f3882a140aa1c48b3a893f0c","modified":1535164165478},{"_id":"themes/next/layout/_partials/comments.swig","hash":"4adc65a602d1276615da3b887dcbf2ac68e7382b","modified":1535164165315},{"_id":"themes/next/layout/_partials/footer.swig","hash":"26e93336dc57a39590ba8dc80564a1d2ad5ff93b","modified":1535164165318},{"_id":"themes/next/layout/_partials/head.swig","hash":"f14a39dad1ddd98e6d3ceb25dda092ba80d391b5","modified":1535164165321},{"_id":"themes/next/layout/_partials/header.swig","hash":"c54b32263bc8d75918688fb21f795103b3f57f03","modified":1535164165332},{"_id":"themes/next/layout/_partials/page-header.swig","hash":"77c61e0baea3544df361b7338c3cd13dc84dde22","modified":1535164165335},{"_id":"themes/next/layout/_partials/pagination.swig","hash":"1634fb887842698e01ff6e632597fe03c75d2d01","modified":1535164165338},{"_id":"themes/next/layout/_partials/search.swig","hash":"b4ebe4a52a3b51efe549dd1cdee846103664f5eb","modified":1535164165340},{"_id":"themes/next/layout/_third-party/rating.swig","hash":"554ec568e9d2c71e4a624a8de3cb5929050811d6","modified":1535164165472},{"_id":"themes/next/layout/_scripts/commons.swig","hash":"931808ad9b8d8390c0dcf9bdeb0954eeb9185d68","modified":1535164165370},{"_id":"themes/next/layout/_scripts/vendors.swig","hash":"9be624634703be496a5d2535228bc568a8373af9","modified":1535164165388},{"_id":"themes/next/layout/_scripts/boostrap.swig","hash":"c0f5a0955f69ca4ed9ee64a2d5f8aa75064935ad","modified":1535164165367},{"_id":"themes/next/scripts/tags/button.js","hash":"eddbb612c15ac27faf11c59c019ce188f33dec2c","modified":1535164165534},{"_id":"themes/next/scripts/tags/center-quote.js","hash":"99b66949f18398689b904907af23c013be1b978f","modified":1535164165537},{"_id":"themes/next/scripts/tags/exturl.js","hash":"5022c0ba9f1d13192677cf1fd66005c57c3d0f53","modified":1535164165541},{"_id":"themes/next/scripts/tags/group-pictures.js","hash":"ac681b0d0d8d39ba3817336c0270c6787c2b6b70","modified":1535164165546},{"_id":"themes/next/scripts/tags/lazy-image.js","hash":"bcba2ff25cd7850ce6da322d8bd85a8dd00b5ceb","modified":1535164165552},{"_id":"themes/next/scripts/tags/label.js","hash":"6f00952d70aadece844ce7fd27adc52816cc7374","modified":1535164165549},{"_id":"themes/next/scripts/tags/note.js","hash":"f7eae135f35cdab23728e9d0d88b76e00715faa0","modified":1535164165555},{"_id":"themes/next/scripts/tags/full-image.js","hash":"c9f833158c66bd72f627a0559cf96550e867aa72","modified":1535164165543},{"_id":"themes/next/scripts/tags/tabs.js","hash":"aa7fc94a5ec27737458d9fe1a75c0db7593352fd","modified":1535164165557},{"_id":"themes/next/source/css/main.styl","hash":"a91dbb7ef799f0a171b5e726c801139efe545176","modified":1535164166002},{"_id":"themes/next/source/images/algolia_logo.svg","hash":"45eeea0b5fba833e21e38ea10ed5ab385ceb4f01","modified":1535164166011},{"_id":"themes/next/source/images/apple-touch-icon-next.png","hash":"2959dbc97f31c80283e67104fe0854e2369e40aa","modified":1535164166018},{"_id":"themes/next/source/images/alipay.jpg","hash":"8179c5b1109ed9c837735e4fe1cca014468677e1","modified":1535164166016},{"_id":"themes/next/source/images/avatar.gif","hash":"264082bb3a1af70d5499c7d22b0902cb454b6d12","modified":1535164166021},{"_id":"themes/next/source/images/avatar.jpg","hash":"bdc313847fb8ba0ea2941d445a862b731c778523","modified":1535164166025},{"_id":"themes/next/source/images/cc-by-nc-nd.svg","hash":"bc3588c9b2d7c68830524783120ff6cf957cf668","modified":1535164166027},{"_id":"themes/next/source/images/cc-by-nc-sa.svg","hash":"6f55543d1fb9cbc436c101d24f802dec7b41efc3","modified":1535164166030},{"_id":"themes/next/source/images/cc-by-nc.svg","hash":"6f076713fb9bf934aa2c1046bdf2cf2e37bc1eab","modified":1535164166033},{"_id":"themes/next/source/images/cc-by-sa.svg","hash":"70c1535f43e54e5ff35ca81419e77e4c0c301398","modified":1535164166039},{"_id":"themes/next/source/images/cc-by-nd.svg","hash":"42cd73da328077ccc92f859bb8f3cf621b3484f8","modified":1535164166036},{"_id":"themes/next/source/images/cc-by.svg","hash":"e92a33c32d1dac8ed94849b2b4e6456e887efe70","modified":1535164166042},{"_id":"themes/next/source/images/cc-zero.svg","hash":"9bfb52b2f63527a7049247bf00d44e6dc1170e7d","modified":1535164166044},{"_id":"themes/next/source/images/favicon-16x16-next.png","hash":"943a0d67a9cdf8c198109b28f9dbd42f761d11c3","modified":1535164166046},{"_id":"themes/next/source/images/loading.gif","hash":"5fbd472222feb8a22cf5b8aa5dc5b8e13af88e2b","modified":1535164166053},{"_id":"themes/next/source/images/favicon-32x32-next.png","hash":"0749d7b24b0d2fae1c8eb7f671ad4646ee1894b1","modified":1535164166049},{"_id":"themes/next/source/images/logo.svg","hash":"169f56fd82941591dad3abd734a50ec7259be950","modified":1535164166055},{"_id":"themes/next/source/images/placeholder.gif","hash":"5fbd472222feb8a22cf5b8aa5dc5b8e13af88e2b","modified":1535164166057},{"_id":"themes/next/source/images/quote-r.svg","hash":"2a2a250b32a87c69dcc1b1976c74b747bedbfb41","modified":1535164166062},{"_id":"themes/next/source/images/searchicon.png","hash":"67727a6a969be0b2659b908518fa6706eed307b8","modified":1535164166064},{"_id":"themes/next/source/images/quote-l.svg","hash":"cd108d6f44351cadf8e6742565217f88818a0458","modified":1535164166060},{"_id":"themes/next/source/images/wechatpay.jpg","hash":"b2644e96b3a3522d5c75044d225f5f96f4427358","modified":1535164166068},{"_id":"themes/next/layout/_scripts/schemes/mist.swig","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165380},{"_id":"themes/next/layout/_scripts/schemes/muse.swig","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165382},{"_id":"themes/next/source/css/_variables/custom.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165999},{"_id":"themes/next/source/css/_mixins/Mist.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165898},{"_id":"themes/next/source/css/_mixins/Muse.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165900},{"_id":"themes/next/source/css/_variables/Muse.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165991},{"_id":"themes/next/source/css/_mixins/custom.styl","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1535164165908},{"_id":"themes/next/layout/_third-party/analytics/analytics-with-widget.swig","hash":"ff947f3561b229bc528cb1837d4ca19612219411","modified":1535164165395},{"_id":"themes/next/layout/_third-party/analytics/application-insights.swig","hash":"71397a5823e8ec8aad3b68aace13150623b3e19d","modified":1535164165398},{"_id":"themes/next/layout/_third-party/analytics/baidu-analytics.swig","hash":"753d262911c27baf663fcaf199267133528656af","modified":1535164165402},{"_id":"themes/next/layout/_third-party/analytics/busuanzi-counter.swig","hash":"7b11eac3a0685fa1ab2ab6ecff60afc4f15f0d16","modified":1535164165404},{"_id":"themes/next/layout/_third-party/analytics/cnzz-analytics.swig","hash":"a10b7f19d7b5725527514622899df413a34a89db","modified":1535164165407},{"_id":"themes/next/layout/_third-party/analytics/facebook-sdk.swig","hash":"7d94845f96197d9d84a405fa5d4ede75fb81b225","modified":1535164165410},{"_id":"themes/next/layout/_third-party/analytics/lean-analytics.swig","hash":"e6d10ee4fb70b3ae1cd37e9e36e000306734aa2e","modified":1535164165420},{"_id":"themes/next/layout/_third-party/analytics/google-analytics.swig","hash":"b1e13df83fb2b1d5d513b30b7aa6158b0837daab","modified":1535164165416},{"_id":"themes/next/layout/_third-party/analytics/tencent-analytics.swig","hash":"8a399df90dadba5ad4e781445b58f4765aeb701e","modified":1535164165423},{"_id":"themes/next/layout/_third-party/analytics/index.swig","hash":"45f3f629c2aacc381095750e1c8649041a71a84b","modified":1535164165418},{"_id":"themes/next/layout/_third-party/analytics/tencent-mta.swig","hash":"5a8027328f060f965b3014060bebec1d7cf149c1","modified":1535164165426},{"_id":"themes/next/layout/_third-party/analytics/vkontakte-api.swig","hash":"f9a1647a8f1866deeb94052d1f87a5df99cb1e70","modified":1535164165429},{"_id":"themes/next/layout/_third-party/comments/changyan.swig","hash":"4c501ea0b9c494181eb3c607c5526a5754e7fbd8","modified":1535164165433},{"_id":"themes/next/layout/_third-party/analytics/firestore.swig","hash":"ccc443b22bd4f8c7ac4145664686c756395b90e0","modified":1535164165413},{"_id":"themes/next/layout/_third-party/comments/disqus.swig","hash":"b83a51bbe0f1e2ded9819070840b0ea145f003a6","modified":1535164165437},{"_id":"themes/next/layout/_third-party/comments/duoshuo.swig","hash":"1600f340e0225361580c44890568dc07dbcf2c89","modified":1535164165440},{"_id":"themes/next/layout/_third-party/comments/gitment.swig","hash":"4dcc3213c033994d342d02b800b6229295433d30","modified":1535164165443},{"_id":"themes/next/layout/_third-party/comments/hypercomments.swig","hash":"af7f3e43cbdc4f88c13f101f0f341af96ace3383","modified":1535164165446},{"_id":"themes/next/layout/_third-party/comments/index.swig","hash":"493bd5999a1061b981922be92d8277a0f9152447","modified":1535164165449},{"_id":"themes/next/layout/_third-party/comments/livere.swig","hash":"9246162d4bc7e949ce1d12d135cbbaf5dc3024ec","modified":1535164165452},{"_id":"themes/next/layout/_third-party/comments/valine.swig","hash":"4050553d44ba1396174161c9a6bb0f89fa779eca","modified":1535164165455},{"_id":"themes/next/layout/_third-party/comments/youyan.swig","hash":"7e65ff8fe586cd655b0e9d1ad2912663ff9bd36c","modified":1535164165458},{"_id":"themes/next/layout/_third-party/search/index.swig","hash":"34599633658f3b0ffb487728b7766e1c7b551f5a","modified":1535164165492},{"_id":"themes/next/layout/_third-party/search/localsearch.swig","hash":"93479642fd076a1257fecc25fcf5d20ccdefe509","modified":1535164165494},{"_id":"themes/next/layout/_third-party/search/tinysou.swig","hash":"fe95dd3d166634c466e19aa756e65ad6e8254d3e","modified":1535164165497},{"_id":"themes/next/layout/_third-party/seo/baidu-push.swig","hash":"d8c98938719284fa06492c114d99a1904652a555","modified":1535164165500},{"_id":"themes/next/layout/_partials/head/custom-head.swig","hash":"a223919d2e1bf17ca4d6abb2c86f2efca9883dc1","modified":1535164165325},{"_id":"themes/next/layout/_partials/head/external-fonts.swig","hash":"f5e487b0d213ca0bd94aa30bc23b240d65081627","modified":1535164165329},{"_id":"themes/next/layout/_partials/search/localsearch.swig","hash":"b2f0d247b213e4cf8de47af6a304d98070cc7256","modified":1535164165344},{"_id":"themes/next/layout/_partials/search/swiftype.swig","hash":"a8c7f9ca7c605d039a1f3bf4e4d3183700a3dd62","modified":1535164165348},{"_id":"themes/next/layout/_partials/search/tinysou.swig","hash":"b25002a83cbd2ca0c4a5df87ad5bff26477c0457","modified":1535164165350},{"_id":"themes/next/layout/_partials/share/add-this.swig","hash":"9e3d133ac5bcc6cb51702c83b2611a49811abad1","modified":1535164165354},{"_id":"themes/next/layout/_partials/share/duoshuo_share.swig","hash":"d4fbffd7fa8f2090eb32a871872665d90a885fac","modified":1535164165360},{"_id":"themes/next/layout/_partials/share/jiathis.swig","hash":"0a9cdd6958395fcdffc80ab60f0c6301b63664a5","modified":1535164165363},{"_id":"themes/next/layout/_partials/share/baidushare.swig","hash":"d9e2d9282f9be6e04eae105964abb81e512bffed","modified":1535164165357},{"_id":"themes/next/layout/_scripts/pages/post-details.swig","hash":"9b84ab576982b2c3bb0291da49143bc77fba3cc6","modified":1535164165374},{"_id":"themes/next/layout/_scripts/schemes/gemini.swig","hash":"a9a3995b9615adfb8d6b127c78c6771627bee19a","modified":1535164165378},{"_id":"themes/next/layout/_scripts/schemes/pisces.swig","hash":"a9a3995b9615adfb8d6b127c78c6771627bee19a","modified":1535164165386},{"_id":"themes/next/source/css/_custom/custom.styl","hash":"3403fdd8efde1a0afd11ae8a5a97673f5903087f","modified":1535164165892},{"_id":"themes/next/source/css/_variables/Gemini.styl","hash":"58e7dd5947817d9fc30770712fc39b2f52230d1e","modified":1535164165986},{"_id":"themes/next/source/css/_variables/Pisces.styl","hash":"4069f918ccc312da86db6c51205fc6c6eaabb116","modified":1535164165994},{"_id":"themes/next/source/css/_variables/base.styl","hash":"b1f6ea881a4938a54603d68282b0f8efb4d7915d","modified":1535164165997},{"_id":"themes/next/source/css/_variables/Mist.styl","hash":"a25408534f8fe6e321db4bbf9dd03335d648fe17","modified":1535164165989},{"_id":"themes/next/source/css/_mixins/Gemini.styl","hash":"07f7da320689f828f6e36a6123807964a45157a0","modified":1535164165896},{"_id":"themes/next/source/css/_mixins/Pisces.styl","hash":"7896c3ee107e1a8b9108b6019f1c070600a1e8cc","modified":1535164165904},{"_id":"themes/next/source/css/_mixins/base.styl","hash":"0e55cbd93852dc3f8ccb44df74d35d9918f847e0","modified":1535164165906},{"_id":"themes/next/source/js/src/bootstrap.js","hash":"0289031200c3d4c2bdd801ee10fff13bb2c353e4","modified":1535164166081},{"_id":"themes/next/source/js/src/algolia-search.js","hash":"cb431b54ba9c692165a1f5a12e4c564a560f8058","modified":1535164166078},{"_id":"themes/next/source/js/src/affix.js","hash":"1b509c3b5b290a6f4607f0f06461a0c33acb69b1","modified":1535164166076},{"_id":"themes/next/source/js/src/js.cookie.js","hash":"1512c751d219577d338ac0780fb2bbd9075d5298","modified":1535164166089},{"_id":"themes/next/source/js/src/motion.js","hash":"885176ed51d468f662fbf0fc09611f45c7e5a3b1","modified":1535164166093},{"_id":"themes/next/source/js/src/hook-duoshuo.js","hash":"b35a7dc47b634197b93487cea8671a40a9fdffce","modified":1535164166086},{"_id":"themes/next/source/js/src/post-details.js","hash":"93a18271b4123dd8f94f09d1439b47c3c19a8712","modified":1535164166095},{"_id":"themes/next/source/js/src/scroll-cookie.js","hash":"02cf91514e41200bc9df5d8bdbeb58575ec06074","modified":1535164166103},{"_id":"themes/next/source/js/src/scrollspy.js","hash":"b7657be25fc52ec67c75ab5481bdcb483573338b","modified":1535164166106},{"_id":"themes/next/source/js/src/utils.js","hash":"b7ddc240208d57596a67c78a04a11b0f0bdecc97","modified":1535164166109},{"_id":"themes/next/source/lib/algolia-instant-search/instantsearch.min.css","hash":"90ef19edc982645b118b095615838d9c5eaba0de","modified":1535164166173},{"_id":"themes/next/source/lib/canvas-ribbon/canvas-ribbon.js","hash":"b02737510e9b89aeed6b54f89f602a9c24b06ff2","modified":1535164166207},{"_id":"themes/next/source/lib/fancybox/.bower.json","hash":"9be892a4e14e0da18ff9cb962c9ef71f163b1b22","modified":1535164166214},{"_id":"themes/next/source/lib/fancybox/.gitattributes","hash":"672d3b5767e0eacd83bb41b188c913f2cf754793","modified":1535164166219},{"_id":"themes/next/source/lib/fastclick/.bower.json","hash":"bf3eef9d647cd7c9b62feda3bc708c6cdd7c0877","modified":1535164166281},{"_id":"themes/next/source/lib/fastclick/LICENSE","hash":"6f474ea75c42442da7bbcf2e9143ce98258efd8d","modified":1535164166286},{"_id":"themes/next/source/lib/fastclick/README.md","hash":"68a9b9d53126405b0fa5f3324f1fb96dbcc547aa","modified":1535164166288},{"_id":"themes/next/source/lib/fastclick/bower.json","hash":"a9b3ee1e4db71a0e4ea6d5bed292d176dd68b261","modified":1535164166291},{"_id":"themes/next/source/lib/canvas-nest/canvas-nest.min.js","hash":"0387e75e23b1db108a755073fe52a0d03eb391a7","modified":1535164166198},{"_id":"themes/next/source/lib/jquery/.bower.json","hash":"865d6c1328ab209a4376b9d2b7a7824369565f28","modified":1535164166330},{"_id":"themes/next/source/lib/jquery_lazyload/.bower.json","hash":"90fa628f156d8045357ff11eaf32e61abacf10e8","modified":1535164166335},{"_id":"themes/next/source/lib/jquery_lazyload/CONTRIBUTING.md","hash":"4ded6fee668544778e97e38c2b211fc56c848e77","modified":1535164166339},{"_id":"themes/next/source/lib/jquery_lazyload/README.md","hash":"b930297cb98b8e1dbd5abe9bc1ed9d5935d18ce8","modified":1535164166342},{"_id":"themes/next/source/lib/jquery_lazyload/bower.json","hash":"e0acf1db27b0cc16128a59c46db1db406b5c4c58","modified":1535164166344},{"_id":"themes/next/source/lib/jquery_lazyload/jquery.lazyload.js","hash":"f4a570908f6c89c6edfb1c74959e733eaadea4f2","modified":1535164166347},{"_id":"themes/next/source/lib/jquery_lazyload/jquery.scrollstop.js","hash":"bf773ad48a0b9aa77681a89d7569eefc0f7b7b18","modified":1535164166349},{"_id":"themes/next/source/lib/font-awesome/.bower.json","hash":"b4aefc910578d76b267e86dfffdd5121c8db9aec","modified":1535164166302},{"_id":"themes/next/source/lib/font-awesome/.gitignore","hash":"03ddbf76c1dd1afb93eed0b670d2eee747472ef1","modified":1535164166303},{"_id":"themes/next/source/lib/font-awesome/.npmignore","hash":"c31ff06a740955e44edd4403902e653ccabfd4db","modified":1535164166305},{"_id":"themes/next/source/lib/font-awesome/HELP-US-OUT.txt","hash":"ee33b2798b1e714b904d663436c6b3521011d1fa","modified":1535164166306},{"_id":"themes/next/source/lib/font-awesome/bower.json","hash":"71e7183634dc1b9449f590f15ebd7201add22ca7","modified":1535164166307},{"_id":"themes/next/source/lib/needsharebutton/font-embedded.css","hash":"14264a210bf94232d58d7599ea2ba93bfa4fb458","modified":1535164166353},{"_id":"themes/next/source/lib/needsharebutton/needsharebutton.css","hash":"e33aa8fa48b6639d8d8b937d13261597dd473b3a","modified":1535164166357},{"_id":"themes/next/source/lib/needsharebutton/needsharebutton.js","hash":"2ce5f3bf15c523b9bfc97720d8884bb22602a454","modified":1535164166360},{"_id":"themes/next/source/lib/three/canvas_lines.min.js","hash":"2d9a9f38c493fdf7c0b833bb9184b6a1645c11b2","modified":1535164166403},{"_id":"themes/next/source/lib/three/three-waves.min.js","hash":"8148492dd49aa876d32bb7d5b728d3f5bf6f5074","modified":1535164166410},{"_id":"themes/next/source/lib/three/canvas_sphere.min.js","hash":"46a50b91c98b639c9a2b9265c5a1e66a5c656881","modified":1535164166407},{"_id":"themes/next/source/lib/velocity/.bower.json","hash":"63da5e80ebb61bb66a2794d5936315ca44231f0c","modified":1535164166431},{"_id":"themes/next/source/lib/velocity/bower.json","hash":"92d92860418c4216aa59eb4cb4a556290a7ad9c3","modified":1535164166435},{"_id":"themes/next/source/lib/velocity/velocity.min.js","hash":"bf172816a9c57f9040e3d19c24e181a142daf92b","modified":1535164166442},{"_id":"themes/next/source/lib/velocity/velocity.ui.js","hash":"dbbfb50f6502f6b81dcc9fee7b31f1e812da3464","modified":1535164166446},{"_id":"themes/next/source/lib/velocity/velocity.ui.min.js","hash":"dde584994ac13dc601836e86f4cf490e418d9723","modified":1535164166449},{"_id":"themes/next/source/js/src/exturl.js","hash":"a2a0f0de07e46211f74942a468f42ee270aa555c","modified":1535164166083},{"_id":"themes/next/source/lib/pace/pace-theme-bounce.min.css","hash":"f6bdb9a785b7979dd8ec5c60e278af955ef1e585","modified":1535164166372},{"_id":"themes/next/source/lib/pace/pace-theme-barber-shop.min.css","hash":"ee0d51446cb4ffe1bb96bd7bc8c8e046dddfcf46","modified":1535164166364},{"_id":"themes/next/source/lib/pace/pace-theme-center-atom.min.css","hash":"dcf79c24fe5350fb73d8038573a104e73639e9d3","modified":1535164166375},{"_id":"themes/next/source/lib/pace/pace-theme-center-radar.min.css","hash":"ab7cba998bf4c03b13df342bf43647fa4f419783","modified":1535164166380},{"_id":"themes/next/source/lib/pace/pace-theme-center-simple.min.css","hash":"67f44c947548bd4d77e7590d3f59e236cbf9e98a","modified":1535164166383},{"_id":"themes/next/source/lib/pace/pace-theme-center-circle.min.css","hash":"a4066769c78affbfbc5e30a600e2c7862cd532e0","modified":1535164166378},{"_id":"themes/next/source/lib/pace/pace-theme-corner-indicator.min.css","hash":"b3c64c973f31884e3d8145989476707333406b9a","modified":1535164166385},{"_id":"themes/next/source/lib/pace/pace-theme-big-counter.min.css","hash":"5b561dc328af4c4d512e20a76fe964d113a32ba8","modified":1535164166368},{"_id":"themes/next/source/lib/pace/pace-theme-loading-bar.min.css","hash":"7ee28875dfc1230d76c537f6605766e8d4011e9f","modified":1535164166392},{"_id":"themes/next/source/lib/pace/pace-theme-flash.min.css","hash":"13ace22c40312d7bbd8d9c1e50eff897a7a497d8","modified":1535164166390},{"_id":"themes/next/source/lib/pace/pace-theme-mac-osx.min.css","hash":"9f2e7b51b084da407863826b25265b31150b3821","modified":1535164166395},{"_id":"themes/next/source/lib/pace/pace-theme-minimal.min.css","hash":"9cd783cceb8a191f3c8b5d81f7a430ecc3e489d3","modified":1535164166398},{"_id":"themes/next/source/lib/pace/pace.min.js","hash":"8aaa675f577d5501f5f22d5ccb07c2b76310b690","modified":1535164166398},{"_id":"themes/next/source/lib/pace/pace-theme-fill-left.min.css","hash":"0bec1e235a4a2cccda3f993b205424e1441a44ae","modified":1535164166387},{"_id":"themes/next/source/lib/jquery/index.js","hash":"17a740d68a1c330876c198b6a4d9319f379f3af2","modified":1535164166333},{"_id":"themes/next/layout/_third-party/search/algolia-search/dom.swig","hash":"2530de0f3125a912756f6c0e9090cd012134a4c5","modified":1535164165489},{"_id":"themes/next/layout/_third-party/search/algolia-search/assets.swig","hash":"218cc936ba3518a3591b2c9eda46bc701edf7710","modified":1535164165486},{"_id":"themes/next/source/css/_common/components/back-to-top-sidebar.styl","hash":"8f86f694c0749a18ab3ad6f6df75466ca137a4bc","modified":1535164165570},{"_id":"themes/next/source/css/_common/components/back-to-top.styl","hash":"237d185ac62ec9877e300947fa0109c44fb8db19","modified":1535164165573},{"_id":"themes/next/source/css/_common/components/comments.styl","hash":"ff4489cd582f518bba6909a301ac1292a38b4e96","modified":1535164165578},{"_id":"themes/next/source/css/_common/components/components.styl","hash":"7ad4081466b397e2a6204141bb7768b7c01bd93c","modified":1535164165580},{"_id":"themes/next/source/css/_common/components/buttons.styl","hash":"8b32928686c327151e13d3ab100157f9a03cd59f","modified":1535164165575},{"_id":"themes/next/source/css/_common/components/pagination.styl","hash":"4f2801fc4cf3f31bf2069f41db8c6ce0e3da9e39","modified":1535164165631},{"_id":"themes/next/source/css/_common/components/tag-cloud.styl","hash":"6eb4bcc3056bd279d000607e8b4dad50d368ca69","modified":1535164165784},{"_id":"themes/next/source/css/_common/outline/outline.styl","hash":"12662536c7a07fff548abe94171f34b768dd610f","modified":1535164165845},{"_id":"themes/next/source/css/_common/scaffolding/base.styl","hash":"24ee4b356ff55fc6e58f26a929fa07750002cf29","modified":1535164165849},{"_id":"themes/next/source/css/_common/scaffolding/helpers.styl","hash":"1da5c800d025345f212a3bf1be035060f4e5e6ed","modified":1535164165852},{"_id":"themes/next/source/css/_common/scaffolding/mobile.styl","hash":"91ca75492cd51f2553f4d294ed2f48239fcd55eb","modified":1535164165855},{"_id":"themes/next/source/css/_common/scaffolding/normalize.styl","hash":"3f40e8a9fe8e7bd5cfc4cf4cbbbcb9539462e973","modified":1535164165882},{"_id":"themes/next/source/css/_common/scaffolding/scaffolding.styl","hash":"a17e2b871a335f290afb392a08f94fd35f59c715","modified":1535164165885},{"_id":"themes/next/source/css/_common/scaffolding/tables.styl","hash":"ea9069645696f86c5df64208490876fe150c8cae","modified":1535164165888},{"_id":"themes/next/source/css/_schemes/Gemini/index.styl","hash":"60fa84aa7731760f05f52dd7d8f79b5f74ac478d","modified":1535164165914},{"_id":"themes/next/source/css/_schemes/Mist/_base.styl","hash":"25d5e45a355ee2093f3b8b8eeac125ebf3905026","modified":1535164165917},{"_id":"themes/next/source/css/_schemes/Mist/_header.styl","hash":"d0bfd1bef988c76f7d7dd72d88af6f0908a8b0db","modified":1535164165921},{"_id":"themes/next/source/css/_schemes/Mist/_logo.styl","hash":"b1025c421406d2c24cc92a02ae28c1915b01e240","modified":1535164165923},{"_id":"themes/next/source/css/_schemes/Mist/_posts-expanded.styl","hash":"9c99034f8e00d47e978b3959f51eb4a9ded0fcc8","modified":1535164165929},{"_id":"themes/next/source/css/_schemes/Mist/_menu.styl","hash":"26666c1f472bf5f3fb9bc62081cca22b4de15ccb","modified":1535164165926},{"_id":"themes/next/source/css/_schemes/Mist/index.styl","hash":"9b913b73d31d21f057f97115ffab93cfa578b884","modified":1535164165934},{"_id":"themes/next/source/css/_schemes/Pisces/_brand.styl","hash":"bce344d3a665b4c55230d2a91eac2ad16d6f32fd","modified":1535164165965},{"_id":"themes/next/source/css/_schemes/Pisces/_layout.styl","hash":"416988dca389e6e2fdfa51fa7f4ee07eb53f82fb","modified":1535164165969},{"_id":"themes/next/source/css/_schemes/Pisces/_posts.styl","hash":"1f6e2ce674735269599acc6d77b3ea18d31967fc","modified":1535164165977},{"_id":"themes/next/source/css/_schemes/Pisces/_menu.styl","hash":"4642e30010af8b2b037f5b43146b10a934941958","modified":1535164165972},{"_id":"themes/next/source/css/_schemes/Pisces/_sidebar.styl","hash":"30561ed60fc64f3e4ce85143bdb55faa814743a6","modified":1535164165979},{"_id":"themes/next/source/css/_schemes/Pisces/index.styl","hash":"86197902dfd3bededba10ba62b8f9f22e0420bde","modified":1535164165982},{"_id":"themes/next/source/css/_schemes/Mist/_search.styl","hash":"09c965022c13b84ed8a661fee8ac2a6d550495ae","modified":1535164165932},{"_id":"themes/next/source/css/_schemes/Muse/_menu.styl","hash":"a98ad885ee4f48d85b2578a0b9c2bbf166e96733","modified":1535164165952},{"_id":"themes/next/source/css/_schemes/Muse/_logo.styl","hash":"748dbfbf9c08e719ddc775958003c64b00d39dab","modified":1535164165949},{"_id":"themes/next/source/css/_schemes/Muse/_search.styl","hash":"09c965022c13b84ed8a661fee8ac2a6d550495ae","modified":1535164165956},{"_id":"themes/next/source/css/_schemes/Muse/index.styl","hash":"5dbc0d0c897e46760e5dbee416530d485c747bba","modified":1535164165958},{"_id":"themes/next/source/js/src/schemes/pisces.js","hash":"f1d0b5d7af32c423eaa8bb93ab6a0b45655645dc","modified":1535164166100},{"_id":"themes/next/source/lib/Han/dist/han.css","hash":"6c26cdb36687d4f0a11dabf5290a909c3506be5c","modified":1535164166135},{"_id":"themes/next/source/lib/Han/dist/han.min.css","hash":"6d586bfcfb7ae48f1b12f76eec82d3ad31947501","modified":1535164166141},{"_id":"themes/next/source/lib/Han/dist/han.min.js","hash":"16b03db23a52623348f37c04544f2792032c1fb6","modified":1535164166169},{"_id":"themes/next/source/css/_schemes/Muse/_layout.styl","hash":"31127dcbf4c7b4ada53ffbf1638b5fe325b7cbc0","modified":1535164165946},{"_id":"themes/next/source/lib/fancybox/source/fancybox_loading@2x.gif","hash":"273b123496a42ba45c3416adb027cd99745058b0","modified":1535164166232},{"_id":"themes/next/source/lib/fancybox/source/fancybox_loading.gif","hash":"1a755fb2599f3a313cc6cfdb14df043f8c14a99c","modified":1535164166228},{"_id":"themes/next/source/lib/fancybox/source/fancybox_overlay.png","hash":"b3a4ee645ba494f52840ef8412015ba0f465dbe0","modified":1535164166236},{"_id":"themes/next/source/lib/fancybox/source/fancybox_sprite.png","hash":"17df19f97628e77be09c352bf27425faea248251","modified":1535164166240},{"_id":"themes/next/source/lib/fancybox/source/fancybox_sprite@2x.png","hash":"30c58913f327e28f466a00f4c1ac8001b560aed8","modified":1535164166243},{"_id":"themes/next/source/lib/fancybox/source/blank.gif","hash":"2daeaa8b5f19f0bc209d976c02bd6acb51b00b0a","modified":1535164166224},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.css","hash":"82f33ad0842aa9c154d029e0dada2497d4eb1d57","modified":1535164166271},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.js","hash":"d71602cbca33b9ecdb7ab291b7f86a49530f3601","modified":1535164166274},{"_id":"themes/next/source/lib/fancybox/source/jquery.fancybox.pack.js","hash":"ae6318aeb62ad4ce7a7e9a4cdacd93ffb004f0fb","modified":1535164166278},{"_id":"themes/next/source/lib/fastclick/lib/fastclick.js","hash":"1d6aeda0480d0e4cb6198edf7719d601d4ae2ccc","modified":1535164166295},{"_id":"themes/next/source/lib/fastclick/lib/fastclick.min.js","hash":"2cae0f5a6c5d6f3cb993015e6863f9483fc4de18","modified":1535164166299},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.css","hash":"3655f1fdf1e584c4d8e8d39026093ca306a5a341","modified":1535164166309},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.css.map","hash":"1573904b82807abbb32c97a3632c6c6808eaac50","modified":1535164166311},{"_id":"themes/next/source/lib/font-awesome/css/font-awesome.min.css","hash":"88af80502c44cd52ca81ffe7dc7276b7eccb06cf","modified":1535164166313},{"_id":"themes/next/source/lib/ua-parser-js/dist/ua-parser.pack.js","hash":"a817b6c158cbc5bab3582713de9fe18a18a80552","modified":1535164166428},{"_id":"themes/next/source/lib/ua-parser-js/dist/ua-parser.min.js","hash":"41ea797c68dbcff2f6fb3aba1d1043a22e7cc0f6","modified":1535164166424},{"_id":"themes/next/source/lib/Han/dist/han.js","hash":"4ac683b2bc8531c84d98f51b86957be0e6f830f3","modified":1535164166138},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff","hash":"28b782240b3e76db824e12c02754a9731a167527","modified":1535164166327},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.woff2","hash":"d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c","modified":1535164166329},{"_id":"themes/next/source/lib/velocity/velocity.js","hash":"4237c6e9d59da349639de20e559e87c2c0218cfd","modified":1535164166440},{"_id":"themes/next/source/css/_common/components/footer/footer.styl","hash":"9f73c4696f0907aa451a855444f88fc0698fa472","modified":1535164165584},{"_id":"themes/next/source/css/_common/components/header/header.styl","hash":"53cde051e0337f4bf42fb8d6d7a79fa3fa6d4ef2","modified":1535164165588},{"_id":"themes/next/source/css/_common/components/header/headerband.styl","hash":"d63e0cacc53dd375fcc113465a4328c59ff5f2c1","modified":1535164165591},{"_id":"themes/next/source/css/_common/components/header/menu.styl","hash":"1a0d059799a298fe17c49a44298d32cebde93785","modified":1535164165594},{"_id":"themes/next/source/css/_common/components/header/site-meta.styl","hash":"0656e753f182c9f47fef7304c847b7587a85ef0d","modified":1535164165598},{"_id":"themes/next/source/css/_common/components/header/site-nav.styl","hash":"1727702eac5d326b5c81a667944a245016668231","modified":1535164165601},{"_id":"themes/next/source/css/_common/components/highlight/diff.styl","hash":"167986d0f649516671ddf7193eebba7b421cd115","modified":1535164165605},{"_id":"themes/next/source/css/_common/components/highlight/highlight.styl","hash":"50450d9fdc8a2b2be8cfca51e3e1a01ffd636c0b","modified":1535164165609},{"_id":"themes/next/source/css/_common/components/highlight/theme.styl","hash":"7fe4d4d656e86276c17cb4e48a560cb6a4def703","modified":1535164165612},{"_id":"themes/next/source/css/_common/components/post/post-collapse.styl","hash":"875cbe88d5c7f6248990e2beb97c9828920e7e24","modified":1535164165638},{"_id":"themes/next/source/css/_common/components/post/post-button.styl","hash":"62fbbd32cf5a99ae550c45c763a2c4813a138d01","modified":1535164165635},{"_id":"themes/next/source/css/_common/components/post/post-copyright.styl","hash":"caf263d1928496688c0e1419801eafd7e6919ce5","modified":1535164165641},{"_id":"themes/next/source/css/_common/components/post/post-eof.styl","hash":"a200c0a1c5a895ac9dc41e0641a5dfcd766be99b","modified":1535164165644},{"_id":"themes/next/source/css/_common/components/post/post-gallery.styl","hash":"cd9e214e502697f2f2db84eb721bac57a49b0fce","modified":1535164165649},{"_id":"themes/next/source/css/_common/components/post/post-meta.styl","hash":"d0d7a5c90d62b685520d2b47fea8ba6019ff5402","modified":1535164165652},{"_id":"themes/next/source/css/_common/components/post/post-nav.styl","hash":"27deb3d3a243d30022055dac7dad851024099a8b","modified":1535164165655},{"_id":"themes/next/source/css/_common/components/post/post-reward.styl","hash":"ca88ea6999a61fb905eb6e72eba5f92d4ee31e6e","modified":1535164165658},{"_id":"themes/next/source/css/_common/components/post/post-rtl.styl","hash":"b2495ae5e04dcca610aacadc47881d9e716cd440","modified":1535164165661},{"_id":"themes/next/source/css/_common/components/post/post-tags.styl","hash":"5a982d8ef3b3623ea5f59e63728990f5623c1b57","modified":1535164165664},{"_id":"themes/next/source/css/_common/components/post/post-title.styl","hash":"ccb34c52be8adba5996c6b94f9e723bd07d34c16","modified":1535164165667},{"_id":"themes/next/source/css/_common/components/post/post-type.styl","hash":"01567edaea6978628aa5521a122a85434c418bfd","modified":1535164165670},{"_id":"themes/next/source/css/_common/components/post/post.styl","hash":"89d6c3b697efc63de42afd2e89194b1be14152af","modified":1535164165676},{"_id":"themes/next/source/css/_common/components/post/post-widgets.styl","hash":"7968343e41f8b94b318c36289dff1196c3eb1791","modified":1535164165673},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-author-links.styl","hash":"39f04c4c7237a4e10acd3002331992b79945d241","modified":1535164165680},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-author.styl","hash":"761eba9811b050b25d548cc0854de4824b41eb08","modified":1535164165684},{"_id":"themes/next/source/css/_common/components/post/post-expand.styl","hash":"a6c6eb8adba0a090ad1f4b9124e866887f20d10d","modified":1535164165647},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-blogroll.styl","hash":"8dd9a1c6f4f6baa00c2cf01837e7617120cf9660","modified":1535164165690},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-dimmer.styl","hash":"11c22f0fb3f6beb13e5a425ec064a4ff974c13b7","modified":1535164165693},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-nav.styl","hash":"1153bb71edf253765145559674390e16dd67c633","modified":1535164165751},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-feed-link.styl","hash":"61f8cea3c01acd600e90e1bc2a07def405503748","modified":1535164165740},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-toc.styl","hash":"28a8737c090fbffd188d73a00b42e90b9ee57df2","modified":1535164165765},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar.styl","hash":"5ef6343835f484a2c0770bd1eb9cc443609e4c39","modified":1535164165775},{"_id":"themes/next/source/css/_common/components/sidebar/site-state.styl","hash":"e71652d3216e289c8548b1ea2357822c1476a425","modified":1535164165781},{"_id":"themes/next/source/css/_common/components/tags/blockquote-center.styl","hash":"2fe76476432b31993338cb45cdb3b29a518b6379","modified":1535164165788},{"_id":"themes/next/source/css/_common/components/tags/exturl.styl","hash":"a3bdd71237afc112b2aa255f278cab6baeb25351","modified":1535164165792},{"_id":"themes/next/source/css/_common/components/tags/full-image.styl","hash":"3159b55f35c40bd08e55b00148c523760a708c51","modified":1535164165795},{"_id":"themes/next/source/css/_common/components/tags/label.styl","hash":"2ab1322fe52ab5aafd49e68f5bd890e8380ee927","modified":1535164165801},{"_id":"themes/next/source/css/_common/components/tags/group-pictures.styl","hash":"2ad1a2a9bbf6742d1b0762c4c623b68113d1e0fe","modified":1535164165797},{"_id":"themes/next/source/css/_common/components/tags/note-modern.styl","hash":"b7076e58d647265ee0ad2b461fe8ce72c9373bc5","modified":1535164165804},{"_id":"themes/next/source/css/_common/components/tags/note.styl","hash":"9a409b798decdefdaf7a23f0b11004a8c27e82f3","modified":1535164165806},{"_id":"themes/next/source/css/_common/components/tags/tabs.styl","hash":"154a87a32d2fead480d5e909c37f6c476671c5e6","modified":1535164165809},{"_id":"themes/next/source/css/_common/components/tags/tags.styl","hash":"b80604868e4f5cf20fccafd7ee415c20c804f700","modified":1535164165812},{"_id":"themes/next/source/css/_common/components/third-party/algolia-search.styl","hash":"bba4f3bdb7517cd85376df3e1209b570c0548c69","modified":1535164165815},{"_id":"themes/next/source/css/_common/components/third-party/baidushare.styl","hash":"5dbeed535d63a50265d96b396a5440f9bb31e4ba","modified":1535164165819},{"_id":"themes/next/source/css/_common/components/third-party/busuanzi-counter.styl","hash":"a6e7d698702c2e383dde3fde2abde27951679084","modified":1535164165822},{"_id":"themes/next/source/css/_common/components/third-party/duoshuo.styl","hash":"717cc7f82be9cc151e23a7678601ff2fd3a7fa1d","modified":1535164165824},{"_id":"themes/next/source/css/_common/components/sidebar/sidebar-toggle.styl","hash":"a1521d48bb06d8d703753f52a198baa197af7da2","modified":1535164165770},{"_id":"themes/next/source/css/_common/components/third-party/han.styl","hash":"10599e16414a8b7a76c4e79e6617b5fe3d4d1adf","modified":1535164165829},{"_id":"themes/next/source/css/_common/components/third-party/jiathis.styl","hash":"15975ba7456b96916b1dbac448a1a0d2c38b8f3d","modified":1535164165832},{"_id":"themes/next/source/css/_common/components/third-party/localsearch.styl","hash":"16087276945fa038f199692e3eabb1c52b8ea633","modified":1535164165835},{"_id":"themes/next/source/css/_common/components/third-party/needsharebutton.styl","hash":"28825ae15fa20ae3942cdaa7bcc1f3523ce59acc","modified":1535164165838},{"_id":"themes/next/source/css/_common/components/third-party/third-party.styl","hash":"9c8196394a89dfa40b87bf0019e80144365a9c93","modified":1535164165840},{"_id":"themes/next/source/css/_common/components/third-party/gitment.styl","hash":"874278147115601d2abf15987f5f7a84ada1ac6b","modified":1535164165827},{"_id":"themes/next/source/css/_common/components/pages/categories.styl","hash":"7fb593f90d74a99c21840679933b9ef6fdc16a61","modified":1535164165620},{"_id":"themes/next/source/css/_common/components/pages/pages.styl","hash":"f9760ecf186954cee3ba4a149be334e9ba296b89","modified":1535164165623},{"_id":"themes/next/source/css/_common/components/pages/archive.styl","hash":"b6f3a06a94a6ee5470c956663164d58eda818a64","modified":1535164165616},{"_id":"themes/next/source/css/_common/components/pages/schedule.styl","hash":"8cf318644acc8b4978537c263290363e21c7f5af","modified":1535164165628},{"_id":"themes/next/source/css/_common/components/pages/post-detail.styl","hash":"4e3838d7ac81d9ad133960f0f7ed58a44a015285","modified":1535164165625},{"_id":"themes/next/source/css/_schemes/Mist/outline/outline.styl","hash":"a07aa12cc36ac5c819670c2a3c17d07ed7a08986","modified":1535164165937},{"_id":"themes/next/source/css/_schemes/Mist/sidebar/sidebar-blogroll.styl","hash":"1f09be9bb38411f0629b58c3b23873589a6dbcaa","modified":1535164165942},{"_id":"themes/next/source/css/_schemes/Muse/sidebar/sidebar-blogroll.styl","hash":"1f09be9bb38411f0629b58c3b23873589a6dbcaa","modified":1535164165962},{"_id":"themes/next/source/lib/Han/dist/font/han-space.otf","hash":"07436f011b44051f61b8329c99de4bec64e86f4b","modified":1535164166120},{"_id":"themes/next/source/lib/Han/dist/font/han.otf","hash":"f1f6bb8f461f5672e000380195d3d2358a28494c","modified":1535164166126},{"_id":"themes/next/source/lib/Han/dist/font/han.woff","hash":"f38ff9b2eecaa17b50b66aa2dae87e9e7436d195","modified":1535164166128},{"_id":"themes/next/source/lib/Han/dist/font/han.woff2","hash":"623af3ed5423371ac136a4fe0e8cc7bb7396037a","modified":1535164166130},{"_id":"themes/next/source/lib/Han/dist/font/han-space.woff","hash":"7a635062b10bf5662ae1d218ba0980171005d060","modified":1535164166122},{"_id":"themes/next/source/lib/fancybox/source/helpers/fancybox_buttons.png","hash":"e385b139516c6813dcd64b8fc431c364ceafe5f3","modified":1535164166248},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-buttons.css","hash":"6394c48092085788a8c0ef72670b0652006231a1","modified":1535164166253},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-media.js","hash":"51139a4c79573d372a347ef01a493222a1eaf10a","modified":1535164166262},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css","hash":"b88b589f5f1aa1b3d87cc7eef34c281ff749b1ae","modified":1535164166266},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-thumbs.js","hash":"d22b1629cb23a6181bebb70d0cf653ffe4b835c8","modified":1535164166268},{"_id":"themes/next/source/lib/fancybox/source/helpers/jquery.fancybox-buttons.js","hash":"ee948b4489aedeb548a77c9e45d8c7c5732fd62d","modified":1535164166258},{"_id":"themes/next/source/lib/font-awesome/fonts/FontAwesome.otf","hash":"048707bc52ac4b6563aaa383bfe8660a0ddc908c","modified":1535164166315},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.eot","hash":"d980c2ce873dc43af460d4d572d441304499f400","modified":1535164166318},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.ttf","hash":"13b1eab65a983c7a73bc7997c479d66943f7c6cb","modified":1535164166325},{"_id":"themes/next/source/lib/algolia-instant-search/instantsearch.min.js","hash":"90a1b22129efc172e2dfcceeeb76bff58bc3192f","modified":1535164166188},{"_id":"themes/next/source/lib/three/three.min.js","hash":"26273b1cb4914850a89529b48091dc584f2c57b8","modified":1535164166417},{"_id":"themes/next/source/lib/font-awesome/fonts/fontawesome-webfont.svg","hash":"b5483b11f8ba213e733b5b8af9927a04fec996f6","modified":1535164166323},{"_id":"public/search.xml","hash":"db8564cae14045ab5e3351564aa0a8f2a89ef7dd","modified":1615869054413},{"_id":"public/404.html","hash":"d93571402d3e4798bfd408202e8b01ab49af1782","modified":1615869055004},{"_id":"public/index.html","hash":"79055cca457b44aec76ceee11b496f4e658ba18c","modified":1615869055007},{"_id":"public/about/index.html","hash":"f6ede473346b4cfc900ef745f0a06c0cfc901d44","modified":1615869055007},{"_id":"public/categories/index.html","hash":"45c62967a5ecfda30c3d038dea5882f1625f91e2","modified":1615869055007},{"_id":"public/tags/index.html","hash":"c9959173b6dd8c4a47c0d9607162de0297ae93e8","modified":1615869055008},{"_id":"public/projects/index.html","hash":"55cab37ca18da21e7fdf515203f307e084ce303d","modified":1615869055008},{"_id":"public/2021/03/16/Php-Nuonuo-Elec-Invoice/index.html","hash":"9175b2bef48f62dc2c0ccc8e5ae6ce61aa474538","modified":1615869055008},{"_id":"public/login/index.html","hash":"b1428663c91daf8939ea9055fdf6b77c373c0f49","modified":1615869055008},{"_id":"public/2019/06/27/Generate-Unique-Invitation-Code-Based-On-User-ID/index.html","hash":"437e085d7299eb49f3546c278d1c1acd7694be00","modified":1615869055008},{"_id":"public/contact/index.html","hash":"d28107f07379611dfae16ef21ad0b919ded211ed","modified":1615869055008},{"_id":"public/2019/01/12/PHP-Diffences-Between-flush-and-ob-flush/index.html","hash":"4aa47c42cd2253e2094e4f250e76f7d613940d49","modified":1615869055008},{"_id":"public/2018/11/13/The-connection-was-reset-on-wamp/index.html","hash":"f1bd36cf75f754739ac4f2394959a9ca361c1b5c","modified":1615869055008},{"_id":"public/2018/08/30/Laravel-Model-Dynamic-Attribute/index.html","hash":"f475ed3a1f9dbaf3b81736e999ca9772ad43bc39","modified":1615869055008},{"_id":"public/2019/03/07/Mobile-Page-Force-to-Landscape/index.html","hash":"7b7e8a0ef73750a9519f19061fcb10f3d2453a04","modified":1615869055008},{"_id":"public/2018/08/27/Git-FAQ/index.html","hash":"7c7e12f6c6db57d3a6bcad18ba8baeeaa7bba9fe","modified":1615869055008},{"_id":"public/2018/08/25/Centos7-Deploy-Git-Server/index.html","hash":"7f4b6fba99590771f72c14da6f0322ca787e4086","modified":1615869055009},{"_id":"public/2018/08/27/Windows-Cmd-Set-Proxy/index.html","hash":"44c56c302797947f8f50cbcb8c46ac5b38fd0e65","modified":1615869055009},{"_id":"public/2018/08/25/CentOS7-Nginx-PHP-Laravel-500-error/index.html","hash":"ac5cfd4299ef90f34f817840f1b31f02be312fcf","modified":1615869055009},{"_id":"public/2018/08/25/Git-Push-Local-File-To-Git-Server/index.html","hash":"a783510b1cbb85050bdc910b1fe0a57528fb4c64","modified":1615869055009},{"_id":"public/2018/01/31/PHP-Prevent-Cross-Domain-Submit-Form/index.html","hash":"991551249aa1a58c1adb4f4c60fa830b4d3552c1","modified":1615869055009},{"_id":"public/2018/01/11/Linux-VMWare-Device-eth0-does-not-seem-to-be-present-delaying-initialization/index.html","hash":"dcf2dc1c46685a014ac93cae103b5934a48929b3","modified":1615869055009},{"_id":"public/2017/12/25/Travis-CI-Build-Hexo-Faqs/index.html","hash":"9e659d845f5aa31d08f36be0c6f058fecd7b3d4e","modified":1615869055009},{"_id":"public/2017/12/23/Github-Delete-Folder-and-Files-But-not-Delete-Local-Files/index.html","hash":"43457c84f9093cf1951242d4bac213006dbc2848","modified":1615869055009},{"_id":"public/2016/01/02/2016-01-02-Notes-On-Creating-A-Hexo-Theme/index.html","hash":"72c91cdab5eeb4ae9168883e59e23e6ca59ab935","modified":1615869055009},{"_id":"public/categories/Hexo/index.html","hash":"bca0f0513344b9cbf7a216be935306886167fb10","modified":1615869055009},{"_id":"public/2014/02/23/2014-02-23-hello-world/index.html","hash":"3a2a9e4e960164c4e9aaffec36eb617e7242e14c","modified":1615869055009},{"_id":"public/categories/Github/index.html","hash":"3650d32bbdd393486e9715e1b0ab339ff62c5aed","modified":1615869055010},{"_id":"public/categories/PHP/index.html","hash":"93caf566e34b023356ae8bcc1e54140ecbb647ee","modified":1615869055010},{"_id":"public/categories/CSS3-Javascript/index.html","hash":"2a9fe78b72ec18ca28cb949a0a477e6e76f8aef7","modified":1615869055010},{"_id":"public/categories/Laravel/index.html","hash":"a8524c66efa29dd01bb5305ed777e2935e9cecd9","modified":1615869055010},{"_id":"public/categories/Linux/index.html","hash":"b69bd652391e10da4817d41b9bc5fd8187a9520d","modified":1615869055010},{"_id":"public/categories/PHP/Wamp/index.html","hash":"1a3c52837c5a0e43ce4307b4c63031ef66ab32f7","modified":1615869055010},{"_id":"public/categories/Travis/index.html","hash":"ce9b1cff2f1d316e6a0b9cff9a2ce3c78daeaa0c","modified":1615869055010},{"_id":"public/archives/index.html","hash":"3299c99dffc7b88bfd7fc12b5a95c0a7ad0eeacf","modified":1615869055010},{"_id":"public/categories/PHP/Laravel/index.html","hash":"1853a005ededff815254c1bd96aca6ce6e2fc3ea","modified":1615869055010},{"_id":"public/archives/2014/index.html","hash":"94291828b441edcdddcb0d48fe904e3e7c7cd573","modified":1615869055010},{"_id":"public/archives/2016/index.html","hash":"383c821c27f469fbf3c967d8cb1bdbce8cb55b0a","modified":1615869055010},{"_id":"public/archives/page/2/index.html","hash":"4ed820a679fcb9f476d6b34a9d6be88e084e2838","modified":1615869055010},{"_id":"public/archives/2014/02/index.html","hash":"055838386742467762221376d9a7947b68cb38e8","modified":1615869055011},{"_id":"public/archives/2016/01/index.html","hash":"54d52073779bc1cb62652d489b3141ba18d721d4","modified":1615869055011},{"_id":"public/archives/2017/index.html","hash":"93a72809ea1246d8c68827db576fb392a6e20758","modified":1615869055011},{"_id":"public/archives/2017/12/index.html","hash":"004f5ea2c03f1ecef7e1b80508abee11bb28a178","modified":1615869055011},{"_id":"public/archives/2018/index.html","hash":"cf608c82b0226be9d6d5acb55966b5941874b49a","modified":1615869055011},{"_id":"public/archives/2018/01/index.html","hash":"63c0188b50ea70420a73954b58318f1730c13fb3","modified":1615869055011},{"_id":"public/archives/2018/08/index.html","hash":"c97b2a7e302e81df9db512a151595488e6d5cadc","modified":1615869055011},{"_id":"public/archives/2018/11/index.html","hash":"14018096550fa04b9b199ae8ebc6b797f8fce432","modified":1615869055011},{"_id":"public/archives/2019/index.html","hash":"dacdb178c7936c9a47015fb97295a1df9baf9da6","modified":1615869055011},{"_id":"public/archives/2019/01/index.html","hash":"fde154ed9c0e1bf681210121422e573b7246a9e8","modified":1615869055011},{"_id":"public/archives/2021/index.html","hash":"815c05df53cfaffcb1174790ec2a22f2e238125a","modified":1615869055011},{"_id":"public/archives/2021/03/index.html","hash":"0821530600e572293173ae807db66f5075184265","modified":1615869055011},{"_id":"public/archives/2019/03/index.html","hash":"2f2473a51700d039b4ea7fa3c63ccaf4cf39a060","modified":1615869055012},{"_id":"public/archives/2019/06/index.html","hash":"869c13fa1dd7894869ef470b1b198cb4aae759f7","modified":1615869055012},{"_id":"public/page/2/index.html","hash":"303aee33fbd84ff73223607359061f97f4b857aa","modified":1615869055012},{"_id":"public/tags/Welcome/index.html","hash":"4795dad2eb0fcbdf31ceba198a1b2e667bffa7f8","modified":1615869055012},{"_id":"public/tags/Programming/index.html","hash":"773a290a4f48ec7e59c6c85e69bf6d7461e066db","modified":1615869055012},{"_id":"public/tags/Design/index.html","hash":"670986bc76e506ae0ce4bc8d36d80ec4e5d82b21","modified":1615869055012},{"_id":"public/tags/Github/index.html","hash":"7485cef35b6165f54c7b7cc3ca59929722c3a290","modified":1615869055012},{"_id":"public/tags/PHP/index.html","hash":"81743406aa300b5de240558d09ac0c1acc97a7b1","modified":1615869055012},{"_id":"public/tags/CSS3/index.html","hash":"55a55899284694de1ab83593506c65bb95dcad32","modified":1615869055012},{"_id":"public/tags/Javascript/index.html","hash":"9544d340117456760bfefa7037efe792b82547fa","modified":1615869055020},{"_id":"public/tags/Laravel/index.html","hash":"832d807da4159f2d5e377843e8e2e64f96ad20b7","modified":1615869055020},{"_id":"public/tags/Linux/index.html","hash":"3587b182124360ebf9ad285c9c0aa5dd5280a317","modified":1615869055020},{"_id":"public/tags/VMWare/index.html","hash":"db40ff825aa200e4f630d1599f5a8cfca6ce40fe","modified":1615869055020},{"_id":"public/tags/网络配置/index.html","hash":"9d111899c81398762fb0a895a7539100078b12d0","modified":1615869055020},{"_id":"public/tags/Cross-Domain/index.html","hash":"d5c990fef9407e70ff179eeb9c32a28d33dbe430","modified":1615869055020},{"_id":"public/tags/API/index.html","hash":"c3724b67ef5ee5cf252b69f0c478b838954a2b36","modified":1615869055020},{"_id":"public/tags/Wamp/index.html","hash":"803bf6bc5d7ad162a0f25aa5a685cbd9da23e7f9","modified":1615869055020},{"_id":"public/tags/flush/index.html","hash":"4026cfd6f0501d6f5153da42f6ed1bed808ba44a","modified":1615869055020},{"_id":"public/tags/Travis/index.html","hash":"c6f5c13ff9781538e78cdc15c1f1d747848b2bff","modified":1615869055020},{"_id":"public/tags/How-To/index.html","hash":"803da3c1fa83be1d7441c7040d04bee6cdb133e0","modified":1615869055021},{"_id":"public/CNAME","hash":"259a31d10f096cb6cb30c48a9e4676b86aae0439","modified":1615869055024},{"_id":"public/favicon.ico","hash":"cd13f6a34732038e34e8af16eb9c7495b22fd395","modified":1615869055024},{"_id":"public/images/apple-touch-icon-next.png","hash":"2959dbc97f31c80283e67104fe0854e2369e40aa","modified":1615869055025},{"_id":"public/images/alipay.jpg","hash":"8179c5b1109ed9c837735e4fe1cca014468677e1","modified":1615869055025},{"_id":"public/images/avatar.gif","hash":"264082bb3a1af70d5499c7d22b0902cb454b6d12","modified":1615869055025},{"_id":"public/images/avatar.jpg","hash":"bdc313847fb8ba0ea2941d445a862b731c778523","modified":1615869055025},{"_id":"public/images/cc-by-nc-nd.svg","hash":"bc3588c9b2d7c68830524783120ff6cf957cf668","modified":1615869055025},{"_id":"public/images/cc-by-nc-sa.svg","hash":"6f55543d1fb9cbc436c101d24f802dec7b41efc3","modified":1615869055025},{"_id":"public/images/cc-by-nc.svg","hash":"6f076713fb9bf934aa2c1046bdf2cf2e37bc1eab","modified":1615869055025},{"_id":"public/images/cc-by-sa.svg","hash":"70c1535f43e54e5ff35ca81419e77e4c0c301398","modified":1615869055025},{"_id":"public/images/cc-by-nd.svg","hash":"42cd73da328077ccc92f859bb8f3cf621b3484f8","modified":1615869055025},{"_id":"public/images/cc-by.svg","hash":"e92a33c32d1dac8ed94849b2b4e6456e887efe70","modified":1615869055025},{"_id":"public/images/cc-zero.svg","hash":"9bfb52b2f63527a7049247bf00d44e6dc1170e7d","modified":1615869055025},{"_id":"public/images/loading.gif","hash":"5fbd472222feb8a22cf5b8aa5dc5b8e13af88e2b","modified":1615869055025},{"_id":"public/images/algolia_logo.svg","hash":"45eeea0b5fba833e21e38ea10ed5ab385ceb4f01","modified":1615869055025},{"_id":"public/images/logo.svg","hash":"169f56fd82941591dad3abd734a50ec7259be950","modified":1615869055025},{"_id":"public/images/quote-r.svg","hash":"2a2a250b32a87c69dcc1b1976c74b747bedbfb41","modified":1615869055025},{"_id":"public/images/placeholder.gif","hash":"5fbd472222feb8a22cf5b8aa5dc5b8e13af88e2b","modified":1615869055026},{"_id":"public/images/favicon-32x32-next.png","hash":"0749d7b24b0d2fae1c8eb7f671ad4646ee1894b1","modified":1615869055026},{"_id":"public/images/favicon-16x16-next.png","hash":"943a0d67a9cdf8c198109b28f9dbd42f761d11c3","modified":1615869055026},{"_id":"public/images/searchicon.png","hash":"67727a6a969be0b2659b908518fa6706eed307b8","modified":1615869055026},{"_id":"public/images/wechatpay.jpg","hash":"b2644e96b3a3522d5c75044d225f5f96f4427358","modified":1615869055026},{"_id":"public/images/quote-l.svg","hash":"cd108d6f44351cadf8e6742565217f88818a0458","modified":1615869055026},{"_id":"public/lib/fastclick/LICENSE","hash":"6f474ea75c42442da7bbcf2e9143ce98258efd8d","modified":1615869055026},{"_id":"public/lib/font-awesome/HELP-US-OUT.txt","hash":"ee33b2798b1e714b904d663436c6b3521011d1fa","modified":1615869055026},{"_id":"public/lib/fancybox/source/fancybox_loading@2x.gif","hash":"273b123496a42ba45c3416adb027cd99745058b0","modified":1615869055026},{"_id":"public/lib/fancybox/source/fancybox_loading.gif","hash":"1a755fb2599f3a313cc6cfdb14df043f8c14a99c","modified":1615869055026},{"_id":"public/lib/fancybox/source/fancybox_overlay.png","hash":"b3a4ee645ba494f52840ef8412015ba0f465dbe0","modified":1615869055026},{"_id":"public/lib/fancybox/source/fancybox_sprite@2x.png","hash":"30c58913f327e28f466a00f4c1ac8001b560aed8","modified":1615869055026},{"_id":"public/lib/fancybox/source/fancybox_sprite.png","hash":"17df19f97628e77be09c352bf27425faea248251","modified":1615869055026},{"_id":"public/lib/fancybox/source/blank.gif","hash":"2daeaa8b5f19f0bc209d976c02bd6acb51b00b0a","modified":1615869055026},{"_id":"public/lib/font-awesome/css/font-awesome.css.map","hash":"1573904b82807abbb32c97a3632c6c6808eaac50","modified":1615869055026},{"_id":"public/lib/Han/dist/font/han-space.otf","hash":"07436f011b44051f61b8329c99de4bec64e86f4b","modified":1615869055026},{"_id":"public/lib/Han/dist/font/han-space.woff","hash":"7a635062b10bf5662ae1d218ba0980171005d060","modified":1615869055026},{"_id":"public/lib/fancybox/source/helpers/fancybox_buttons.png","hash":"e385b139516c6813dcd64b8fc431c364ceafe5f3","modified":1615869055027},{"_id":"public/lib/Han/dist/font/han.woff2","hash":"623af3ed5423371ac136a4fe0e8cc7bb7396037a","modified":1615869055027},{"_id":"public/lib/Han/dist/font/han.otf","hash":"f1f6bb8f461f5672e000380195d3d2358a28494c","modified":1615869055027},{"_id":"public/lib/Han/dist/font/han.woff","hash":"f38ff9b2eecaa17b50b66aa2dae87e9e7436d195","modified":1615869055027},{"_id":"public/lib/font-awesome/fonts/fontawesome-webfont.woff2","hash":"d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c","modified":1615869055749},{"_id":"public/lib/font-awesome/fonts/fontawesome-webfont.woff","hash":"28b782240b3e76db824e12c02754a9731a167527","modified":1615869055756},{"_id":"public/js/src/bootstrap.js","hash":"034bc8113e0966fe2096ba5b56061bbf10ef0512","modified":1615869055817},{"_id":"public/js/src/algolia-search.js","hash":"b172f697ed339a24b1e80261075232978d164c35","modified":1615869055817},{"_id":"public/js/src/affix.js","hash":"978e0422b5bf1b560236d8d10ebc1adcf66392e3","modified":1615869055817},{"_id":"public/js/src/js.cookie.js","hash":"9b37973a90fd50e71ea91682265715e45ae82c75","modified":1615869055818},{"_id":"public/js/src/motion.js","hash":"754b294394f102c8fd9423a1789ddb1201677898","modified":1615869055818},{"_id":"public/js/src/scroll-cookie.js","hash":"09dc828cbf5f31158ff6250d2bf7c3cde6365c67","modified":1615869055818},{"_id":"public/js/src/hook-duoshuo.js","hash":"a6119070c0119f33e08b29da7d2cce2635eb40a0","modified":1615869055819},{"_id":"public/js/src/post-details.js","hash":"a13f45f7aa8291cf7244ec5ba93907d119c5dbdd","modified":1615869055819},{"_id":"public/js/src/scrollspy.js","hash":"fe4da1b9fe73518226446f5f27d2831e4426fc35","modified":1615869055819},{"_id":"public/lib/algolia-instant-search/instantsearch.min.css","hash":"90ef19edc982645b118b095615838d9c5eaba0de","modified":1615869055819},{"_id":"public/js/src/utils.js","hash":"dbdc3d1300eec7da9632608ebc0e5b697779dad7","modified":1615869055819},{"_id":"public/lib/canvas-ribbon/canvas-ribbon.js","hash":"ff5915eb2596e890a2fc6697c864f861a1995ec0","modified":1615869055819},{"_id":"public/lib/fastclick/bower.json","hash":"4dcecf83afddba148464d5339c93f6d0aa9f42e9","modified":1615869055819},{"_id":"public/lib/jquery_lazyload/README.html","hash":"bde24335f6bc09d8801c0dcd7274f71b466552bd","modified":1615869055819},{"_id":"public/lib/jquery_lazyload/CONTRIBUTING.html","hash":"a6358170d346af13b1452ac157b60505bec7015c","modified":1615869055819},{"_id":"public/lib/canvas-nest/canvas-nest.min.js","hash":"0387e75e23b1db108a755073fe52a0d03eb391a7","modified":1615869055819},{"_id":"public/lib/jquery_lazyload/bower.json","hash":"ae3c3b61e6e7f9e1d7e3585ad854380ecc04cf53","modified":1615869055819},{"_id":"public/lib/fastclick/README.html","hash":"da3c74d484c73cc7df565e8abbfa4d6a5a18d4da","modified":1615869055819},{"_id":"public/lib/jquery_lazyload/jquery.scrollstop.js","hash":"0e9a81785a011c98be5ea821a8ed7d411818cfd1","modified":1615869055819},{"_id":"public/lib/jquery_lazyload/jquery.lazyload.js","hash":"481fd478650e12b67c201a0ea41e92743f8b45a3","modified":1615869055819},{"_id":"public/lib/font-awesome/bower.json","hash":"64394a2a9aa00f8e321d8daa5e51a420f0e96dad","modified":1615869055819},{"_id":"public/lib/needsharebutton/needsharebutton.css","hash":"3ef0020a1815ca6151ea4886cd0d37421ae3695c","modified":1615869055819},{"_id":"public/lib/velocity/bower.json","hash":"0ef14e7ccdfba5db6eb3f8fc6aa3b47282c36409","modified":1615869055819},{"_id":"public/lib/velocity/velocity.ui.min.js","hash":"ed5e534cd680a25d8d14429af824f38a2c7d9908","modified":1615869055820},{"_id":"public/js/src/exturl.js","hash":"e42e2aaab7bf4c19a0c8e779140e079c6aa5c0b1","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-bounce.min.css","hash":"f6bdb9a785b7979dd8ec5c60e278af955ef1e585","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-center-atom.min.css","hash":"dcf79c24fe5350fb73d8038573a104e73639e9d3","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-center-radar.min.css","hash":"ab7cba998bf4c03b13df342bf43647fa4f419783","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-barber-shop.min.css","hash":"ee0d51446cb4ffe1bb96bd7bc8c8e046dddfcf46","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-center-simple.min.css","hash":"67f44c947548bd4d77e7590d3f59e236cbf9e98a","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-center-circle.min.css","hash":"a4066769c78affbfbc5e30a600e2c7862cd532e0","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-big-counter.min.css","hash":"5b561dc328af4c4d512e20a76fe964d113a32ba8","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-corner-indicator.min.css","hash":"b3c64c973f31884e3d8145989476707333406b9a","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-loading-bar.min.css","hash":"7ee28875dfc1230d76c537f6605766e8d4011e9f","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-flash.min.css","hash":"13ace22c40312d7bbd8d9c1e50eff897a7a497d8","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-mac-osx.min.css","hash":"9f2e7b51b084da407863826b25265b31150b3821","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-fill-left.min.css","hash":"0bec1e235a4a2cccda3f993b205424e1441a44ae","modified":1615869055820},{"_id":"public/js/src/schemes/pisces.js","hash":"8050a5b2683d1d77238c5762b6bd89c543daed6e","modified":1615869055820},{"_id":"public/lib/pace/pace.min.js","hash":"9944dfb7814b911090e96446cea4d36e2b487234","modified":1615869055820},{"_id":"public/lib/pace/pace-theme-minimal.min.css","hash":"9cd783cceb8a191f3c8b5d81f7a430ecc3e489d3","modified":1615869055820},{"_id":"public/lib/fancybox/source/jquery.fancybox.css","hash":"5f163444617b6cf267342f06ac166a237bb62df9","modified":1615869055821},{"_id":"public/lib/fastclick/lib/fastclick.min.js","hash":"2cae0f5a6c5d6f3cb993015e6863f9483fc4de18","modified":1615869055821},{"_id":"public/lib/ua-parser-js/dist/ua-parser.min.js","hash":"38628e75e4412cc6f11074e03e1c6d257aae495b","modified":1615869055821},{"_id":"public/lib/ua-parser-js/dist/ua-parser.pack.js","hash":"214dad442a92d36af77ed0ca1d9092b16687f02f","modified":1615869055821},{"_id":"public/lib/fancybox/source/helpers/jquery.fancybox-buttons.css","hash":"1a9d8e5c22b371fcc69d4dbbb823d9c39f04c0c8","modified":1615869055821},{"_id":"public/lib/fancybox/source/helpers/jquery.fancybox-media.js","hash":"3bdf69ed2469e4fb57f5a95f17300eef891ff90d","modified":1615869055821},{"_id":"public/lib/fancybox/source/helpers/jquery.fancybox-thumbs.js","hash":"53e194f4a72e649c04fb586dd57762b8c022800b","modified":1615869055821},{"_id":"public/lib/fancybox/source/helpers/jquery.fancybox-buttons.js","hash":"91e41741c2e93f732c82aaacec4cfc6e3f3ec876","modified":1615869055821},{"_id":"public/lib/fancybox/source/helpers/jquery.fancybox-thumbs.css","hash":"4ac329c16a5277592fc12a37cca3d72ca4ec292f","modified":1615869055821},{"_id":"public/css/main.css","hash":"fcd09d76283dcfa6cbc1151cd625861eda73d593","modified":1615869055821},{"_id":"public/lib/needsharebutton/font-embedded.css","hash":"c39d37278c1e178838732af21bd26cd0baeddfe0","modified":1615869055821},{"_id":"public/lib/needsharebutton/needsharebutton.js","hash":"9885fd9bea5e7ebafc5b1de9d17be5e106248d96","modified":1615869055821},{"_id":"public/lib/three/canvas_lines.min.js","hash":"dce4a3b65f8bf958f973690caa7ec4952f353b0c","modified":1615869055821},{"_id":"public/lib/three/three-waves.min.js","hash":"d968cba6b3a50b3626a02d67b544f349d83b147c","modified":1615869055821},{"_id":"public/lib/three/canvas_sphere.min.js","hash":"d8ea241a53c135a650f7335d2b6982b899fd58a9","modified":1615869055821},{"_id":"public/lib/velocity/velocity.ui.js","hash":"6a1d101eab3de87527bb54fcc8c7b36b79d8f0df","modified":1615869055822},{"_id":"public/lib/velocity/velocity.min.js","hash":"2f1afadc12e4cf59ef3b405308d21baa97e739c6","modified":1615869055822},{"_id":"public/lib/jquery/index.js","hash":"41b4bfbaa96be6d1440db6e78004ade1c134e276","modified":1615869055822},{"_id":"public/lib/Han/dist/han.css","hash":"bd40da3fba8735df5850956814e312bd7b3193d7","modified":1615869055822},{"_id":"public/lib/Han/dist/han.min.css","hash":"a0c9e32549a8b8cf327ab9227b037f323cdb60ee","modified":1615869055822},{"_id":"public/lib/Han/dist/han.min.js","hash":"f559c68a25065a14f47da954a7617d87263e409d","modified":1615869055822},{"_id":"public/lib/fancybox/source/jquery.fancybox.js","hash":"1cf3d47b5ccb7cb6e9019c64f2a88d03a64853e4","modified":1615869055822},{"_id":"public/lib/fancybox/source/jquery.fancybox.pack.js","hash":"53360764b429c212f424399384417ccc233bb3be","modified":1615869055823},{"_id":"public/lib/fastclick/lib/fastclick.js","hash":"06cef196733a710e77ad7e386ced6963f092dc55","modified":1615869055823},{"_id":"public/lib/font-awesome/css/font-awesome.css","hash":"0140952c64e3f2b74ef64e050f2fe86eab6624c8","modified":1615869055823},{"_id":"public/lib/font-awesome/css/font-awesome.min.css","hash":"512c7d79033e3028a9be61b540cf1a6870c896f8","modified":1615869055823},{"_id":"public/lib/Han/dist/han.js","hash":"e345397e0585c9fed1449e614ec13e0224acf2ab","modified":1615869055823},{"_id":"public/lib/velocity/velocity.js","hash":"9f08181baea0cc0e906703b7e5df9111b9ef3373","modified":1615869055823},{"_id":"public/lib/algolia-instant-search/instantsearch.min.js","hash":"9ccc6f8144f54e86df9a3fd33a18368d81cf3a4f","modified":1615869055823},{"_id":"public/lib/three/three.min.js","hash":"73f4cdc17e51a72b9bf5b9291f65386d615c483b","modified":1615869055823},{"_id":"public/lib/font-awesome/fonts/fontawesome-webfont.eot","hash":"d980c2ce873dc43af460d4d572d441304499f400","modified":1615869055824},{"_id":"public/lib/font-awesome/fonts/fontawesome-webfont.ttf","hash":"13b1eab65a983c7a73bc7997c479d66943f7c6cb","modified":1615869055824},{"_id":"public/lib/font-awesome/fonts/FontAwesome.otf","hash":"048707bc52ac4b6563aaa383bfe8660a0ddc908c","modified":1615869055824},{"_id":"public/lib/font-awesome/fonts/fontawesome-webfont.svg","hash":"b5483b11f8ba213e733b5b8af9927a04fec996f6","modified":1615869055858}],"Category":[{"name":"Hexo","_id":"ckmbipmbo0004kgvp89lqeeuw"},{"name":"Github","_id":"ckmbipmbu0009kgvpkfkk881q"},{"name":"PHP","_id":"ckmbipmc7000lkgvphoii1v4v"},{"name":"CSS3 $ Javascript","_id":"ckmbipmcb000tkgvpmf8hq3iy"},{"name":"Laravel","_id":"ckmbipmcd000ykgvp426da9hw"},{"name":"Linux","_id":"ckmbipmhw001jkgvp12f12b6a"},{"name":"Wamp","parent":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmia0021kgvpzzzb77wx"},{"name":"Travis","_id":"ckmbipmic0026kgvpkyuh60hb"},{"name":"Laravel","parent":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmie002bkgvppgymw88j"}],"Data":[{"_id":"next2","data":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}],"Page":[{"title":"","layout":"page","_content":"<div class=\"row margin-bottom-40\">\n<!-- BEGIN CONTENT -->\n<div class=\"col-md-12 col-sm-12\">\n <br><br><br><br>\n <div class=\"content-page page-404\">\n <div class=\"number\">\n 404\n </div>\n <div class=\"details\">\n <h3>Oops! You're lost.</h3>\n <p>\n We can not find the page you're looking for.<br>\n <a href=\"/index.html\" class=\"link\">Return home</a> or try the search bar below.\n </p>\n </div>\n </div>\n <br><br><br><br>\n</div>\n<!-- END CONTENT -->\n</div>\n","source":"404.ejs","raw":"---\ntitle: \nlayout: page\n---\n<div class=\"row margin-bottom-40\">\n<!-- BEGIN CONTENT -->\n<div class=\"col-md-12 col-sm-12\">\n <br><br><br><br>\n <div class=\"content-page page-404\">\n <div class=\"number\">\n 404\n </div>\n <div class=\"details\">\n <h3>Oops! You're lost.</h3>\n <p>\n We can not find the page you're looking for.<br>\n <a href=\"/index.html\" class=\"link\">Return home</a> or try the search bar below.\n </p>\n </div>\n </div>\n <br><br><br><br>\n</div>\n<!-- END CONTENT -->\n</div>\n","date":"2018-08-25T02:29:23.006Z","updated":"2018-08-25T02:29:23.006Z","path":"404.html","comments":1,"_id":"ckmbipma40000kgvpvpobzex5","content":"<div class=\"row margin-bottom-40\">\n<!-- BEGIN CONTENT -->\n<div class=\"col-md-12 col-sm-12\">\n <br><br><br><br>\n <div class=\"content-page page-404\">\n <div class=\"number\">\n 404\n </div>\n <div class=\"details\">\n <h3>Oops! You're lost.</h3>\n <p>\n We can not find the page you're looking for.<br>\n <a href=\"/index.html\" class=\"link\">Return home</a> or try the search bar below.\n </p>\n </div>\n </div>\n <br><br><br><br>\n</div>\n<!-- END CONTENT -->\n</div>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<div class=\"row margin-bottom-40\">\n<!-- BEGIN CONTENT -->\n<div class=\"col-md-12 col-sm-12\">\n <br><br><br><br>\n <div class=\"content-page page-404\">\n <div class=\"number\">\n 404\n </div>\n <div class=\"details\">\n <h3>Oops! You're lost.</h3>\n <p>\n We can not find the page you're looking for.<br>\n <a href=\"/index.html\" class=\"link\">Return home</a> or try the search bar below.\n </p>\n </div>\n </div>\n <br><br><br><br>\n</div>\n<!-- END CONTENT -->\n</div>\n"},{"layout":"index","_content":"<div class=\"container-fluid flush-with-header\">\n <div class=\"row margin-bottom-40 row-corporate bg-light-1\">\n <div class=\"container\">\n <div class=\"col-xs-8 col-sm-6 row-corporate-text-container\">\n\t<div class=\"row-corporate-text\">\n\t <h1>We are here to <b class=\"require\">help you</b>.</h1>\n\t <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n\t tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis\n\t iste natus error sit voluptatem.</h4>\n\t</div>\n </div>\n <div class=\"col-xs-4 col-sm-6\">\n\t<img src=\"/metronic/assets/pages/img/frontend-slider/ipadmini.png\">\n </div>\n </div>\n </div>\n</div>\n<div class=\"container\">\n <div class=\"row service-box margin-bottom-40\">\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-location-arrow blue wow rollIn\"></i></em>\n\t <span>Multipurpose Template</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset1.png\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-check red wow rollIn\"></i></em>\n\t <span>Well Documented</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset3.jpg\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-compress green wow rollIn\"></i></em>\n\t <span>Responsive Design</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset1.jpg\">\n </div>\n </div>\n </div>\n<div class=\"container-fluid\">\n<div class=\"row margin-bottom-40 row-corporate bg-light-2\">\n <div class=\"container\">\n <div class=\"col-xs-4 col-xs-pull-4 col-sm-pull-0 col-sm-6 wow fadeIn\">\n <img src=\"/metronic/assets/pages/img/frontend-slider/iphone_right.png\">\n </div>\n <div class=\"col-xs-6 row-corporate-text-container\">\n <div class=\"row-corporate-text\">\n <h1>We're committed to our <b class=\"wow fadeIn require\">process</b>.</h1>\n <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n omnis iste.</h4>\n </div>\n </div>\n </div>\n</div>\n</div>\n\n<div class=\"main\">\n <div class=\"container\">\n <!-- BEGIN STEPS -->\n <div class=\"row margin-bottom-40 front-steps-wrapper front-steps-count-3 wow\n fadeIn\">\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step1\">\n\t <h2>Goal definition</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step2\">\n\t <h2>Analyse</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step3\">\n\t <h2>Implementation</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n </div>\n <!-- END STEPS -->\n\n <!-- BEGIN RECENT WORKS -->\n <div class=\"row recent-work margin-bottom-40\">\n <div class=\"col-md-3\">\n\t<h2 class=\"wow fadeIn\"><a href=\"/projects/\">Recent Work</a></h2>\n\t<p class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde voluptatem. Sed unde omnis iste natus error sit voluptatem.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel3\">\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img1.jpg\" class=\"fancybox-button\" title=\"Project Name #1\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img2.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img2.jpg\" class=\"fancybox-button\" title=\"Project Name #2\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img5.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img5.jpg\" class=\"fancybox-button\" title=\"Project Name #5\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Project Name #6\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t</div> \n </div>\n </div> \n <!-- END RECENT WORKS -->\n\n <!-- BEGIN TABS AND TESTIMONIALS -->\n <div class=\"row mix-block margin-bottom-40\">\n <!-- TABS -->\n <div class=\"col-md-7 tab-style-1\">\n\t<ul class=\"nav nav-tabs\">\n\t <li class=\"active\"><a href=\"#tab-1\" data-toggle=\"tab\">Multipurpose</a></li>\n\t <li><a href=\"#tab-2\" data-toggle=\"tab\">Documented</a></li>\n\t <li><a href=\"#tab-3\" data-toggle=\"tab\">Responsive</a></li>\n\t <li><a href=\"#tab-4\" data-toggle=\"tab\">Clean & Fresh</a></li>\n\t</ul>\n\t<div class=\"tab-content\">\n\t <div class=\"tab-pane row fade in active\" id=\"tab-1\">\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p class=\"margin-bottom-10\">Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p>\n\t <p><a class=\"more\" href=\"javascript:;\">Read more <i class=\"icon-angle-right\"></i></a></p>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane row fade\" id=\"tab-2\">\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia..</p>\n\t </div>\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/temp/works/img10.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-3\">\n\t <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-4\">\n\t <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t </div>\n\t</div>\n </div>\n <!-- END TABS -->\n\n <!-- TESTIMONIALS -->\n <div class=\"col-md-5 testimonials-v1\">\n\t<div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t <blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img1-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img5-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img2-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t </div>\n\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel\" data-slide=\"next\"></a>\n\t</div>\n </div>\n <!-- END TESTIMONIALS -->\n </div> \n <!-- END TABS AND TESTIMONIALS -->\n <!-- BEGIN BLOCKQUOTE BLOCK --> \n <div class=\"row quote-v1 margin-bottom-40 \">\n <div class=\"col-md-9\">\n\t<span>Metronic - The Most Complete & Popular Admin & Frontend Theme</span>\n </div>\n <div class=\"col-md-3 text-right\">\n\t<a class=\"btn-transparent\" href=\"http://www.keenthemes.com/preview/index.php?theme=metronic_admin\" target=\"_blank\"><i class=\"fa fa-rocket margin-right-10\"></i>Preview Admin</a>\n </div>\n </div>\n <!-- END BLOCKQUOTE BLOCK -->\n\n\n <!-- BEGIN CLIENTS -->\n <div class=\"row margin-bottom-40 our-clients\">\n <div class=\"col-md-3\">\n\t<h2><a href=\"javascript:;\">Our Clients</a></h2>\n\t<p>Lorem dipsum folor margade sitede lametep eiusmod psumquis dolore.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel6-brands\">\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div> \n\t</div>\n </div> \n </div>\n <!-- END CLIENTS -->\n </div>\n</div>\n\n","source":"index.ejs","raw":"---\nlayout: index\n---\n<div class=\"container-fluid flush-with-header\">\n <div class=\"row margin-bottom-40 row-corporate bg-light-1\">\n <div class=\"container\">\n <div class=\"col-xs-8 col-sm-6 row-corporate-text-container\">\n\t<div class=\"row-corporate-text\">\n\t <h1>We are here to <b class=\"require\">help you</b>.</h1>\n\t <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n\t tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis\n\t iste natus error sit voluptatem.</h4>\n\t</div>\n </div>\n <div class=\"col-xs-4 col-sm-6\">\n\t<img src=\"/metronic/assets/pages/img/frontend-slider/ipadmini.png\">\n </div>\n </div>\n </div>\n</div>\n<div class=\"container\">\n <div class=\"row service-box margin-bottom-40\">\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-location-arrow blue wow rollIn\"></i></em>\n\t <span>Multipurpose Template</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset1.png\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-check red wow rollIn\"></i></em>\n\t <span>Well Documented</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset3.jpg\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-compress green wow rollIn\"></i></em>\n\t <span>Responsive Design</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\"\n\t src=\"/asset1.jpg\">\n </div>\n </div>\n </div>\n<div class=\"container-fluid\">\n<div class=\"row margin-bottom-40 row-corporate bg-light-2\">\n <div class=\"container\">\n <div class=\"col-xs-4 col-xs-pull-4 col-sm-pull-0 col-sm-6 wow fadeIn\">\n <img src=\"/metronic/assets/pages/img/frontend-slider/iphone_right.png\">\n </div>\n <div class=\"col-xs-6 row-corporate-text-container\">\n <div class=\"row-corporate-text\">\n <h1>We're committed to our <b class=\"wow fadeIn require\">process</b>.</h1>\n <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n omnis iste.</h4>\n </div>\n </div>\n </div>\n</div>\n</div>\n\n<div class=\"main\">\n <div class=\"container\">\n <!-- BEGIN STEPS -->\n <div class=\"row margin-bottom-40 front-steps-wrapper front-steps-count-3 wow\n fadeIn\">\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step1\">\n\t <h2>Goal definition</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step2\">\n\t <h2>Analyse</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step3\">\n\t <h2>Implementation</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n </div>\n <!-- END STEPS -->\n\n <!-- BEGIN RECENT WORKS -->\n <div class=\"row recent-work margin-bottom-40\">\n <div class=\"col-md-3\">\n\t<h2 class=\"wow fadeIn\"><a href=\"/projects/\">Recent Work</a></h2>\n\t<p class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde voluptatem. Sed unde omnis iste natus error sit voluptatem.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel3\">\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img1.jpg\" class=\"fancybox-button\" title=\"Project Name #1\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img2.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img2.jpg\" class=\"fancybox-button\" title=\"Project Name #2\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img5.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img5.jpg\" class=\"fancybox-button\" title=\"Project Name #5\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Project Name #6\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t</div> \n </div>\n </div> \n <!-- END RECENT WORKS -->\n\n <!-- BEGIN TABS AND TESTIMONIALS -->\n <div class=\"row mix-block margin-bottom-40\">\n <!-- TABS -->\n <div class=\"col-md-7 tab-style-1\">\n\t<ul class=\"nav nav-tabs\">\n\t <li class=\"active\"><a href=\"#tab-1\" data-toggle=\"tab\">Multipurpose</a></li>\n\t <li><a href=\"#tab-2\" data-toggle=\"tab\">Documented</a></li>\n\t <li><a href=\"#tab-3\" data-toggle=\"tab\">Responsive</a></li>\n\t <li><a href=\"#tab-4\" data-toggle=\"tab\">Clean & Fresh</a></li>\n\t</ul>\n\t<div class=\"tab-content\">\n\t <div class=\"tab-pane row fade in active\" id=\"tab-1\">\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p class=\"margin-bottom-10\">Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p>\n\t <p><a class=\"more\" href=\"javascript:;\">Read more <i class=\"icon-angle-right\"></i></a></p>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane row fade\" id=\"tab-2\">\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia..</p>\n\t </div>\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/temp/works/img10.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-3\">\n\t <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-4\">\n\t <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t </div>\n\t</div>\n </div>\n <!-- END TABS -->\n\n <!-- TESTIMONIALS -->\n <div class=\"col-md-5 testimonials-v1\">\n\t<div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t <blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img1-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img5-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img2-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t </div>\n\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel\" data-slide=\"next\"></a>\n\t</div>\n </div>\n <!-- END TESTIMONIALS -->\n </div> \n <!-- END TABS AND TESTIMONIALS -->\n <!-- BEGIN BLOCKQUOTE BLOCK --> \n <div class=\"row quote-v1 margin-bottom-40 \">\n <div class=\"col-md-9\">\n\t<span>Metronic - The Most Complete & Popular Admin & Frontend Theme</span>\n </div>\n <div class=\"col-md-3 text-right\">\n\t<a class=\"btn-transparent\" href=\"http://www.keenthemes.com/preview/index.php?theme=metronic_admin\" target=\"_blank\"><i class=\"fa fa-rocket margin-right-10\"></i>Preview Admin</a>\n </div>\n </div>\n <!-- END BLOCKQUOTE BLOCK -->\n\n\n <!-- BEGIN CLIENTS -->\n <div class=\"row margin-bottom-40 our-clients\">\n <div class=\"col-md-3\">\n\t<h2><a href=\"javascript:;\">Our Clients</a></h2>\n\t<p>Lorem dipsum folor margade sitede lametep eiusmod psumquis dolore.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel6-brands\">\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div> \n\t</div>\n </div> \n </div>\n <!-- END CLIENTS -->\n </div>\n</div>\n\n","date":"2018-08-25T02:29:23.092Z","updated":"2018-08-25T02:29:23.092Z","path":"index.html","title":"","comments":1,"_id":"ckmbipman0001kgvpaloxxgjd","content":"<div class=\"container-fluid flush-with-header\">\n <div class=\"row margin-bottom-40 row-corporate bg-light-1\">\n <div class=\"container\">\n <div class=\"col-xs-8 col-sm-6 row-corporate-text-container\">\n\t<div class=\"row-corporate-text\">\n\t <h1>We are here to <b class=\"require\">help you</b>.</h1>\n\t <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n\t tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis\n\t iste natus error sit voluptatem.</h4>\n\t</div>\n </div>\n <div class=\"col-xs-4 col-sm-6\">\n\t<img src=\"/metronic/assets/pages/img/frontend-slider/ipadmini.png\">\n </div>\n </div>\n </div>\n</div>\n<div class=\"container\">\n <div class=\"row service-box margin-bottom-40\">\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-location-arrow blue wow rollIn\"></i></em>\n\t <span>Multipurpose Template</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset1.png\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-check red wow rollIn\"></i></em>\n\t <span>Well Documented</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset3.jpg\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-compress green wow rollIn\"></i></em>\n\t <span>Responsive Design</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset1.jpg\">\n </div>\n </div>\n </div>\n<div class=\"container-fluid\">\n<div class=\"row margin-bottom-40 row-corporate bg-light-2\">\n <div class=\"container\">\n <div class=\"col-xs-4 col-xs-pull-4 col-sm-pull-0 col-sm-6 wow fadeIn\">\n <img src=\"/metronic/assets/pages/img/frontend-slider/iphone_right.png\">\n </div>\n <div class=\"col-xs-6 row-corporate-text-container\">\n <div class=\"row-corporate-text\">\n <h1>We're committed to our <b class=\"wow fadeIn require\">process</b>.</h1>\n <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n omnis iste.</h4>\n </div>\n </div>\n </div>\n</div>\n</div>\n\n<div class=\"main\">\n <div class=\"container\">\n <!-- BEGIN STEPS -->\n <div class=\"row margin-bottom-40 front-steps-wrapper front-steps-count-3 wow\n fadeIn\">\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step1\">\n\t <h2>Goal definition</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step2\">\n\t <h2>Analyse</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step3\">\n\t <h2>Implementation</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n </div>\n <!-- END STEPS -->\n\n <!-- BEGIN RECENT WORKS -->\n <div class=\"row recent-work margin-bottom-40\">\n <div class=\"col-md-3\">\n\t<h2 class=\"wow fadeIn\"><a href=\"/projects/\">Recent Work</a></h2>\n\t<p class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde voluptatem. Sed unde omnis iste natus error sit voluptatem.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel3\">\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img1.jpg\" class=\"fancybox-button\" title=\"Project Name #1\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img2.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img2.jpg\" class=\"fancybox-button\" title=\"Project Name #2\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img5.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img5.jpg\" class=\"fancybox-button\" title=\"Project Name #5\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Project Name #6\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t</div> \n </div>\n </div> \n <!-- END RECENT WORKS -->\n\n <!-- BEGIN TABS AND TESTIMONIALS -->\n <div class=\"row mix-block margin-bottom-40\">\n <!-- TABS -->\n <div class=\"col-md-7 tab-style-1\">\n\t<ul class=\"nav nav-tabs\">\n\t <li class=\"active\"><a href=\"#tab-1\" data-toggle=\"tab\">Multipurpose</a></li>\n\t <li><a href=\"#tab-2\" data-toggle=\"tab\">Documented</a></li>\n\t <li><a href=\"#tab-3\" data-toggle=\"tab\">Responsive</a></li>\n\t <li><a href=\"#tab-4\" data-toggle=\"tab\">Clean & Fresh</a></li>\n\t</ul>\n\t<div class=\"tab-content\">\n\t <div class=\"tab-pane row fade in active\" id=\"tab-1\">\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p class=\"margin-bottom-10\">Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p>\n\t <p><a class=\"more\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">Read more <i class=\"icon-angle-right\"></i></a></p>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane row fade\" id=\"tab-2\">\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia..</p>\n\t </div>\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/temp/works/img10.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-3\">\n\t <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-4\">\n\t <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t </div>\n\t</div>\n </div>\n <!-- END TABS -->\n\n <!-- TESTIMONIALS -->\n <div class=\"col-md-5 testimonials-v1\">\n\t<div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t <blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img1-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img5-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img2-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t </div>\n\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel\" data-slide=\"next\"></a>\n\t</div>\n </div>\n <!-- END TESTIMONIALS -->\n </div> \n <!-- END TABS AND TESTIMONIALS -->\n <!-- BEGIN BLOCKQUOTE BLOCK --> \n <div class=\"row quote-v1 margin-bottom-40 \">\n <div class=\"col-md-9\">\n\t<span>Metronic - The Most Complete & Popular Admin & Frontend Theme</span>\n </div>\n <div class=\"col-md-3 text-right\">\n\t<a class=\"btn-transparent\" href=\"http://www.keenthemes.com/preview/index.php?theme=metronic_admin\" target=\"_blank\"><i class=\"fa fa-rocket margin-right-10\"></i>Preview Admin</a>\n </div>\n </div>\n <!-- END BLOCKQUOTE BLOCK -->\n\n\n <!-- BEGIN CLIENTS -->\n <div class=\"row margin-bottom-40 our-clients\">\n <div class=\"col-md-3\">\n\t<h2><a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">Our Clients</a></h2>\n\t<p>Lorem dipsum folor margade sitede lametep eiusmod psumquis dolore.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel6-brands\">\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div> \n\t</div>\n </div> \n </div>\n <!-- END CLIENTS -->\n </div>\n</div>\n\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<div class=\"container-fluid flush-with-header\">\n <div class=\"row margin-bottom-40 row-corporate bg-light-1\">\n <div class=\"container\">\n <div class=\"col-xs-8 col-sm-6 row-corporate-text-container\">\n\t<div class=\"row-corporate-text\">\n\t <h1>We are here to <b class=\"require\">help you</b>.</h1>\n\t <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n\t tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis\n\t iste natus error sit voluptatem.</h4>\n\t</div>\n </div>\n <div class=\"col-xs-4 col-sm-6\">\n\t<img src=\"/metronic/assets/pages/img/frontend-slider/ipadmini.png\">\n </div>\n </div>\n </div>\n</div>\n<div class=\"container\">\n <div class=\"row service-box margin-bottom-40\">\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-location-arrow blue wow rollIn\"></i></em>\n\t <span>Multipurpose Template</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset1.png\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-check red wow rollIn\"></i></em>\n\t <span>Well Documented</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset3.jpg\">\n </div>\n <div class=\"col-md-4 col-sm-4\">\n\t<div class=\"service-box-heading\">\n\t <em><i class=\"fa fa-compress green wow rollIn\"></i></em>\n\t <span>Responsive Design</span>\n\t</div>\n\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde omnis iste natus error sit voluptatem.</p>\n\t <img class=\"img-responsive\" src=\"/asset1.jpg\">\n </div>\n </div>\n </div>\n<div class=\"container-fluid\">\n<div class=\"row margin-bottom-40 row-corporate bg-light-2\">\n <div class=\"container\">\n <div class=\"col-xs-4 col-xs-pull-4 col-sm-pull-0 col-sm-6 wow fadeIn\">\n <img src=\"/metronic/assets/pages/img/frontend-slider/iphone_right.png\">\n </div>\n <div class=\"col-xs-6 row-corporate-text-container\">\n <div class=\"row-corporate-text\">\n <h1>We're committed to our <b class=\"wow fadeIn require\">process</b>.</h1>\n <h4 class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis\n tempor incididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n omnis iste.</h4>\n </div>\n </div>\n </div>\n</div>\n</div>\n\n<div class=\"main\">\n <div class=\"container\">\n <!-- BEGIN STEPS -->\n <div class=\"row margin-bottom-40 front-steps-wrapper front-steps-count-3 wow\n fadeIn\">\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step1\">\n\t <h2>Goal definition</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step2\">\n\t <h2>Analyse</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n <div class=\"col-md-4 col-sm-4 front-step-col\">\n\t<div class=\"front-step front-step3\">\n\t <h2>Implementation</h2>\n\t <p>Lorem ipsum dolor sit amet sit consectetur adipisicing eiusmod tempor.</p>\n\t</div>\n </div>\n </div>\n <!-- END STEPS -->\n\n <!-- BEGIN RECENT WORKS -->\n <div class=\"row recent-work margin-bottom-40\">\n <div class=\"col-md-3\">\n\t<h2 class=\"wow fadeIn\"><a href=\"/projects/\">Recent Work</a></h2>\n\t<p class=\"wow fadeIn\">Lorem ipsum dolor sit amet, dolore eiusmod quis tempor incididunt ut et dolore Ut veniam unde voluptatem. Sed unde omnis iste natus error sit voluptatem.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel3\">\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img1.jpg\" class=\"fancybox-button\" title=\"Project Name #1\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img2.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img2.jpg\" class=\"fancybox-button\" title=\"Project Name #2\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img5.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img5.jpg\" class=\"fancybox-button\" title=\"Project Name #5\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Project Name #6\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img3.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img3.jpg\" class=\"fancybox-button\" title=\"Project Name #3\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t <div class=\"recent-work-item\">\n\t <em>\n\t <img src=\"metronic/assets/pages/img/works/img4.jpg\" alt=\"Amazing Project\" class=\"img-responsive\">\n\t <a href=\"portfolio-item.html\"><i class=\"fa fa-link\"></i></a>\n\t <a href=\"metronic/assets/pages/img/works/img4.jpg\" class=\"fancybox-button\" title=\"Project Name #4\" data-rel=\"fancybox-button\"><i class=\"fa fa-search\"></i></a>\n\t </em>\n\t <a class=\"recent-work-description\" href=\"/projects/#project1\">\n\t <strong>Amazing Project</strong>\n\t <b>Agenda corp.</b>\n\t </a>\n\t </div>\n\t</div> \n </div>\n </div> \n <!-- END RECENT WORKS -->\n\n <!-- BEGIN TABS AND TESTIMONIALS -->\n <div class=\"row mix-block margin-bottom-40\">\n <!-- TABS -->\n <div class=\"col-md-7 tab-style-1\">\n\t<ul class=\"nav nav-tabs\">\n\t <li class=\"active\"><a href=\"#tab-1\" data-toggle=\"tab\">Multipurpose</a></li>\n\t <li><a href=\"#tab-2\" data-toggle=\"tab\">Documented</a></li>\n\t <li><a href=\"#tab-3\" data-toggle=\"tab\">Responsive</a></li>\n\t <li><a href=\"#tab-4\" data-toggle=\"tab\">Clean & Fresh</a></li>\n\t</ul>\n\t<div class=\"tab-content\">\n\t <div class=\"tab-pane row fade in active\" id=\"tab-1\">\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/pages/img/works/img6.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img6.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p class=\"margin-bottom-10\">Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p>\n\t <p><a class=\"more\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">Read more <i class=\"icon-angle-right\"></i></a></p>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane row fade\" id=\"tab-2\">\n\t <div class=\"col-md-9 col-sm-9\">\n\t <p>Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia..</p>\n\t </div>\n\t <div class=\"col-md-3 col-sm-3\">\n\t <a href=\"metronic/assets/temp/works/img10.jpg\" class=\"fancybox-button\" title=\"Image Title\" data-rel=\"fancybox-button\">\n\t\t<img class=\"img-responsive\" src=\"metronic/assets/pages/img/works/img1.jpg\" alt=\"\">\n\t </a>\n\t </div>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-3\">\n\t <p>Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.</p>\n\t </div>\n\t <div class=\"tab-pane fade\" id=\"tab-4\">\n\t <p>Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.</p>\n\t </div>\n\t</div>\n </div>\n <!-- END TABS -->\n\n <!-- TESTIMONIALS -->\n <div class=\"col-md-5 testimonials-v1\">\n\t<div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t <blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img1-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img5-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t <div class=\"item\">\n\t <blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t <div class=\"carousel-info\">\n\t\t<img class=\"pull-left\" src=\"metronic/assets/pages/img/people/img2-small.jpg\" alt=\"\">\n\t\t<div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t</div>\n\t </div>\n\t </div>\n\t </div>\n\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel\" data-slide=\"next\"></a>\n\t</div>\n </div>\n <!-- END TESTIMONIALS -->\n </div> \n <!-- END TABS AND TESTIMONIALS -->\n <!-- BEGIN BLOCKQUOTE BLOCK --> \n <div class=\"row quote-v1 margin-bottom-40 \">\n <div class=\"col-md-9\">\n\t<span>Metronic - The Most Complete & Popular Admin & Frontend Theme</span>\n </div>\n <div class=\"col-md-3 text-right\">\n\t<a class=\"btn-transparent\" href=\"http://www.keenthemes.com/preview/index.php?theme=metronic_admin\" target=\"_blank\"><i class=\"fa fa-rocket margin-right-10\"></i>Preview Admin</a>\n </div>\n </div>\n <!-- END BLOCKQUOTE BLOCK -->\n\n\n <!-- BEGIN CLIENTS -->\n <div class=\"row margin-bottom-40 our-clients\">\n <div class=\"col-md-3\">\n\t<h2><a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">Our Clients</a></h2>\n\t<p>Lorem dipsum folor margade sitede lametep eiusmod psumquis dolore.</p>\n </div>\n <div class=\"col-md-9\">\n\t<div class=\"owl-carousel owl-carousel6-brands\">\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_1.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_2.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_3.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_4.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_5.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_6.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_7.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div>\n\t <div class=\"client-item\">\n\t <a href=\"javascript:;\" target=\"_blank\" rel=\"noopener\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8_gray.png\" class=\"img-responsive\" alt=\"\">\n\t <img src=\"metronic/assets/pages/img/clients/client_8.png\" class=\"color-img img-responsive\" alt=\"\">\n\t </a>\n\t </div> \n\t</div>\n </div> \n </div>\n <!-- END CLIENTS -->\n </div>\n</div>\n\n"},{"title":"About Us","date":"2015-11-16T17:00:51.000Z","layout":"page","_content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"row margin-bottom-30\">\n\t<!-- BEGIN INFO BLOCK --> \n\t<div class=\"col-md-7\">\n\t <h2 class=\"no-top-space\">Vero eos et accusamus</h2>\n\t <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi.</p> \n\t <p>Idest laborum et dolorum fuga. Et harum quidem rerum et quas molestias excepturi sint occaecati facilis est et expedita distinctio lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non libero consectetur adipiscing elit magna. Sed et quam lacus.</p>\n\t <!-- BEGIN LISTS -->\n\t <div class=\"row front-lists-v1\">\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled margin-bottom-20\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t </div>\n\t <!-- END LISTS -->\n\t</div>\n\t<!-- END INFO BLOCK --> \n\n\t<!-- BEGIN CAROUSEL --> \n\t<div class=\"col-md-5 front-carousel\">\n\t <div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"item active\">\n <img src='../metronic/assets/pages/img/index-sliders/slide1.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Excepturi sint occaecati cupiditate non provident</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src='../metronic/assets/pages/img/index-sliders/slide2.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ducimus qui blanditiis praesentium voluptatum</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src='../metronic/assets/pages/img/index-sliders/slide3.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ut non libero consectetur adipiscing elit magna</p>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"carousel-control left\" href=\"#myCarousel\" data-slide=\"prev\">\n\t <i class=\"fa fa-angle-left\"></i>\n\t </a>\n\t <a class=\"carousel-control right\" href=\"#myCarousel\" data-slide=\"next\">\n\t <i class=\"fa fa-angle-right\"></i>\n\t </a>\n\t </div> \n\t</div>\n\t<!-- END CAROUSEL -->\n </div>\n\n <div class=\"row margin-bottom-40\">\n\t<!-- BEGIN TESTIMONIALS -->\n\t<div class=\"col-md-7 testimonials-v1\">\n\t <h2>Client Testimonials</h2> \n\t <div id=\"myCarousel1\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t\t<blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met consectetur adipisicing sit amet do eiusmod dolore.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img1-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img5-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img2-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel1\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel1\" data-slide=\"next\"></a>\n\t </div>\n\t</div>\n\t<!-- END TESTIMONIALS --> \n\n\t<!-- BEGIN PROGRESS BAR -->\n\t<div class=\"col-md-5 front-skills\">\n\t <h2 class=\"block\">Our Skills</h2>\n\t <span>UI Design 90%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 90%;\"></div>\n\t </div>\n\t <span>Wordpress CMS 60%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 60%;\"></div>\n\t </div>\n\t <span>HTML/CSS & JavaScript 75%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 75%;\"></div>\n\t </div>\n\t</div> \n\t<!-- END PROGRESS BAR -->\n </div>\n\n <div class=\"row front-team\">\n\t<ul class=\"list-unstyled\">\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img2-large.jpg'>\n\t <h3>\n\t\t<strong>Lina Doe</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img1-large.jpg'>\n\t <h3>\n\t\t<strong>Carles Puyol</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img3-large.jpg'>\n\t <h3>\n\t\t<strong>Andres Iniesta</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img5-large.jpg'>\n\t <h3>\n\t\t<strong>Jessica Alba</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t</ul> \n </div>\n\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","source":"about/index.ejs","raw":"---\ntitle: About Us\ndate: 2015-11-17 01:00:51\nlayout: page\n---\n<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"row margin-bottom-30\">\n\t<!-- BEGIN INFO BLOCK --> \n\t<div class=\"col-md-7\">\n\t <h2 class=\"no-top-space\">Vero eos et accusamus</h2>\n\t <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi.</p> \n\t <p>Idest laborum et dolorum fuga. Et harum quidem rerum et quas molestias excepturi sint occaecati facilis est et expedita distinctio lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non libero consectetur adipiscing elit magna. Sed et quam lacus.</p>\n\t <!-- BEGIN LISTS -->\n\t <div class=\"row front-lists-v1\">\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled margin-bottom-20\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t </div>\n\t <!-- END LISTS -->\n\t</div>\n\t<!-- END INFO BLOCK --> \n\n\t<!-- BEGIN CAROUSEL --> \n\t<div class=\"col-md-5 front-carousel\">\n\t <div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"item active\">\n <img src='../metronic/assets/pages/img/index-sliders/slide1.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Excepturi sint occaecati cupiditate non provident</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src='../metronic/assets/pages/img/index-sliders/slide2.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ducimus qui blanditiis praesentium voluptatum</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src='../metronic/assets/pages/img/index-sliders/slide3.jpg'>\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ut non libero consectetur adipiscing elit magna</p>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"carousel-control left\" href=\"#myCarousel\" data-slide=\"prev\">\n\t <i class=\"fa fa-angle-left\"></i>\n\t </a>\n\t <a class=\"carousel-control right\" href=\"#myCarousel\" data-slide=\"next\">\n\t <i class=\"fa fa-angle-right\"></i>\n\t </a>\n\t </div> \n\t</div>\n\t<!-- END CAROUSEL -->\n </div>\n\n <div class=\"row margin-bottom-40\">\n\t<!-- BEGIN TESTIMONIALS -->\n\t<div class=\"col-md-7 testimonials-v1\">\n\t <h2>Client Testimonials</h2> \n\t <div id=\"myCarousel1\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t\t<blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met consectetur adipisicing sit amet do eiusmod dolore.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img1-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img5-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src='../metronic/assets/pages/img/people/img2-small.jpg'>\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel1\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel1\" data-slide=\"next\"></a>\n\t </div>\n\t</div>\n\t<!-- END TESTIMONIALS --> \n\n\t<!-- BEGIN PROGRESS BAR -->\n\t<div class=\"col-md-5 front-skills\">\n\t <h2 class=\"block\">Our Skills</h2>\n\t <span>UI Design 90%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 90%;\"></div>\n\t </div>\n\t <span>Wordpress CMS 60%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 60%;\"></div>\n\t </div>\n\t <span>HTML/CSS & JavaScript 75%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 75%;\"></div>\n\t </div>\n\t</div> \n\t<!-- END PROGRESS BAR -->\n </div>\n\n <div class=\"row front-team\">\n\t<ul class=\"list-unstyled\">\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img2-large.jpg'>\n\t <h3>\n\t\t<strong>Lina Doe</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img1-large.jpg'>\n\t <h3>\n\t\t<strong>Carles Puyol</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img3-large.jpg'>\n\t <h3>\n\t\t<strong>Andres Iniesta</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src='../metronic/assets/pages/img/people/img5-large.jpg'>\n\t <h3>\n\t\t<strong>Jessica Alba</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t</ul> \n </div>\n\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","updated":"2018-08-25T02:29:23.074Z","path":"about/index.html","comments":1,"_id":"ckmbipmhs001gkgvp80fm0s6l","content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"row margin-bottom-30\">\n\t<!-- BEGIN INFO BLOCK --> \n\t<div class=\"col-md-7\">\n\t <h2 class=\"no-top-space\">Vero eos et accusamus</h2>\n\t <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi.</p> \n\t <p>Idest laborum et dolorum fuga. Et harum quidem rerum et quas molestias excepturi sint occaecati facilis est et expedita distinctio lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non libero consectetur adipiscing elit magna. Sed et quam lacus.</p>\n\t <!-- BEGIN LISTS -->\n\t <div class=\"row front-lists-v1\">\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled margin-bottom-20\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t </div>\n\t <!-- END LISTS -->\n\t</div>\n\t<!-- END INFO BLOCK --> \n\n\t<!-- BEGIN CAROUSEL --> \n\t<div class=\"col-md-5 front-carousel\">\n\t <div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"item active\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide1.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Excepturi sint occaecati cupiditate non provident</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide2.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ducimus qui blanditiis praesentium voluptatum</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide3.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ut non libero consectetur adipiscing elit magna</p>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"carousel-control left\" href=\"#myCarousel\" data-slide=\"prev\">\n\t <i class=\"fa fa-angle-left\"></i>\n\t </a>\n\t <a class=\"carousel-control right\" href=\"#myCarousel\" data-slide=\"next\">\n\t <i class=\"fa fa-angle-right\"></i>\n\t </a>\n\t </div> \n\t</div>\n\t<!-- END CAROUSEL -->\n </div>\n\n <div class=\"row margin-bottom-40\">\n\t<!-- BEGIN TESTIMONIALS -->\n\t<div class=\"col-md-7 testimonials-v1\">\n\t <h2>Client Testimonials</h2> \n\t <div id=\"myCarousel1\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t\t<blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met consectetur adipisicing sit amet do eiusmod dolore.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img1-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img5-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img2-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel1\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel1\" data-slide=\"next\"></a>\n\t </div>\n\t</div>\n\t<!-- END TESTIMONIALS --> \n\n\t<!-- BEGIN PROGRESS BAR -->\n\t<div class=\"col-md-5 front-skills\">\n\t <h2 class=\"block\">Our Skills</h2>\n\t <span>UI Design 90%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 90%;\"></div>\n\t </div>\n\t <span>Wordpress CMS 60%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 60%;\"></div>\n\t </div>\n\t <span>HTML/CSS & JavaScript 75%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 75%;\"></div>\n\t </div>\n\t</div> \n\t<!-- END PROGRESS BAR -->\n </div>\n\n <div class=\"row front-team\">\n\t<ul class=\"list-unstyled\">\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img2-large.jpg\">\n\t <h3>\n\t\t<strong>Lina Doe</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img1-large.jpg\">\n\t <h3>\n\t\t<strong>Carles Puyol</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img3-large.jpg\">\n\t <h3>\n\t\t<strong>Andres Iniesta</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img5-large.jpg\">\n\t <h3>\n\t\t<strong>Jessica Alba</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t</ul> \n </div>\n\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"row margin-bottom-30\">\n\t<!-- BEGIN INFO BLOCK --> \n\t<div class=\"col-md-7\">\n\t <h2 class=\"no-top-space\">Vero eos et accusamus</h2>\n\t <p>At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi.</p> \n\t <p>Idest laborum et dolorum fuga. Et harum quidem rerum et quas molestias excepturi sint occaecati facilis est et expedita distinctio lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut non libero consectetur adipiscing elit magna. Sed et quam lacus.</p>\n\t <!-- BEGIN LISTS -->\n\t <div class=\"row front-lists-v1\">\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled margin-bottom-20\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t <div class=\"col-md-6\">\n\t <ul class=\"list-unstyled\">\n\t\t<li><i class=\"fa fa-check\"></i> Officia deserunt molliti</li>\n\t\t<li><i class=\"fa fa-check\"></i> Consectetur adipiscing </li>\n\t\t<li><i class=\"fa fa-check\"></i> Deserunt fpicia</li>\n\t </ul>\n\t </div>\n\t </div>\n\t <!-- END LISTS -->\n\t</div>\n\t<!-- END INFO BLOCK --> \n\n\t<!-- BEGIN CAROUSEL --> \n\t<div class=\"col-md-5 front-carousel\">\n\t <div id=\"myCarousel\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"item active\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide1.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Excepturi sint occaecati cupiditate non provident</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide2.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ducimus qui blanditiis praesentium voluptatum</p>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n <img src=\"../metronic/assets/pages/img/index-sliders/slide3.jpg\">\n\t\t<div class=\"carousel-caption\">\n\t\t <p>Ut non libero consectetur adipiscing elit magna</p>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"carousel-control left\" href=\"#myCarousel\" data-slide=\"prev\">\n\t <i class=\"fa fa-angle-left\"></i>\n\t </a>\n\t <a class=\"carousel-control right\" href=\"#myCarousel\" data-slide=\"next\">\n\t <i class=\"fa fa-angle-right\"></i>\n\t </a>\n\t </div> \n\t</div>\n\t<!-- END CAROUSEL -->\n </div>\n\n <div class=\"row margin-bottom-40\">\n\t<!-- BEGIN TESTIMONIALS -->\n\t<div class=\"col-md-7 testimonials-v1\">\n\t <h2>Client Testimonials</h2> \n\t <div id=\"myCarousel1\" class=\"carousel slide\">\n\t <!-- Carousel items -->\n\t <div class=\"carousel-inner\">\n\t <div class=\"active item\">\n\t\t<blockquote><p>Denim you probably haven't heard of. Lorem ipsum dolor met consectetur adipisicing sit amet, consectetur adipisicing elit, of them jean shorts sed magna aliqua. Lorem ipsum dolor met consectetur adipisicing sit amet do eiusmod dolore.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img1-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Lina Mars</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Raw denim you Mustache cliche tempor, williamsburg carles vegan helvetica probably haven't heard of them jean shorts austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img5-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Kate Ford</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t <div class=\"item\">\n\t\t<blockquote><p>Reprehenderit butcher stache cliche tempor, williamsburg carles vegan helvetica.retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid Aliquip placeat salvia cillum iphone.</p></blockquote>\n\t\t<div class=\"carousel-info\">\n\t\t <img src=\"../metronic/assets/pages/img/people/img2-small.jpg\">\n\t\t <div class=\"pull-left\">\n\t\t <span class=\"testimonials-name\">Jake Witson</span>\n\t\t <span class=\"testimonials-post\">Commercial Director</span>\n\t\t </div>\n\t\t</div>\n\t </div>\n\t </div>\n\t <!-- Carousel nav -->\n\t <a class=\"left-btn\" href=\"#myCarousel1\" data-slide=\"prev\"></a>\n\t <a class=\"right-btn\" href=\"#myCarousel1\" data-slide=\"next\"></a>\n\t </div>\n\t</div>\n\t<!-- END TESTIMONIALS --> \n\n\t<!-- BEGIN PROGRESS BAR -->\n\t<div class=\"col-md-5 front-skills\">\n\t <h2 class=\"block\">Our Skills</h2>\n\t <span>UI Design 90%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 90%;\"></div>\n\t </div>\n\t <span>Wordpress CMS 60%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 60%;\"></div>\n\t </div>\n\t <span>HTML/CSS & JavaScript 75%</span>\n\t <div class=\"progress\">\n\t <div role=\"progressbar\" class=\"progress-bar\" style=\"width: 75%;\"></div>\n\t </div>\n\t</div> \n\t<!-- END PROGRESS BAR -->\n </div>\n\n <div class=\"row front-team\">\n\t<ul class=\"list-unstyled\">\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img2-large.jpg\">\n\t <h3>\n\t\t<strong>Lina Doe</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img1-large.jpg\">\n\t <h3>\n\t\t<strong>Carles Puyol</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img3-large.jpg\">\n\t <h3>\n\t\t<strong>Andres Iniesta</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t <li class=\"col-md-3\">\n\t <div class=\"thumbnail\">\n <img src=\"../metronic/assets/pages/img/people/img5-large.jpg\">\n\t <h3>\n\t\t<strong>Jessica Alba</strong> \n\t\t<small>Chief Executive Officer / CEO</small>\n\t </h3>\n\t <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, justo sit amet risus etiam porta sem...</p>\n\t <ul class=\"social-icons social-icons-color\">\n\t\t<li><a class=\"facebook\" data-original-title=\"Facebook\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"twitter\" data-original-title=\"Twitter\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"googleplus\" data-original-title=\"Goole Plus\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t<li><a class=\"linkedin\" data-original-title=\"Linkedin\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t </ul>\n\t </div>\n\t </li>\n\t</ul> \n </div>\n\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n"},{"title":"All categories","date":"2017-12-19T07:26:21.000Z","type":"categories","_content":"","source":"categories/index.md","raw":"---\ntitle: All categories\ndate: 2017-12-19 15:26:21\ntype: \"categories\"\n---\n","updated":"2018-08-25T02:29:23.080Z","path":"categories/index.html","comments":1,"layout":"page","_id":"ckmbipmhu001ikgvpw5zcde2h","content":"","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":""},{"title":"Contact","date":"2015-11-29T13:00:03.000Z","layout":"contact","_content":"<h2>Let us help</h2>\n<p>Lorem ipsum sdolor sic amit, bolero carles.</p>\n<!-- BEGIN FORM-->\n<form action=\"#\" role=\"form\">\n <div class=\"form-group\">\n <label for=\"contacts-name\">Name</label>\n <input type=\"text\" class=\"form-control\" id=\"contacts-name\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-email\">Email</label>\n <input type=\"email\" class=\"form-control\" id=\"contacts-email\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-message\">Message</label>\n <textarea class=\"form-control\" rows=\"5\" id=\"contacts-message\"></textarea>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\"><i class=\"icon-ok\"></i> Send</button>\n <button type=\"button\" class=\"btn btn-default\">Cancel</button>\n</form>\n<!-- END FORM-->\n","source":"contact/index.ejs","raw":"---\ntitle: Contact\ndate: 2015-11-29 21:00:03\nlayout: contact\n---\n<h2>Let us help</h2>\n<p>Lorem ipsum sdolor sic amit, bolero carles.</p>\n<!-- BEGIN FORM-->\n<form action=\"#\" role=\"form\">\n <div class=\"form-group\">\n <label for=\"contacts-name\">Name</label>\n <input type=\"text\" class=\"form-control\" id=\"contacts-name\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-email\">Email</label>\n <input type=\"email\" class=\"form-control\" id=\"contacts-email\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-message\">Message</label>\n <textarea class=\"form-control\" rows=\"5\" id=\"contacts-message\"></textarea>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\"><i class=\"icon-ok\"></i> Send</button>\n <button type=\"button\" class=\"btn btn-default\">Cancel</button>\n</form>\n<!-- END FORM-->\n","updated":"2018-08-25T02:29:23.085Z","path":"contact/index.html","comments":1,"_id":"ckmbipmhy001mkgvpkpvmspm0","content":"<h2>Let us help</h2>\n<p>Lorem ipsum sdolor sic amit, bolero carles.</p>\n<!-- BEGIN FORM-->\n<form action=\"#\" role=\"form\">\n <div class=\"form-group\">\n <label for=\"contacts-name\">Name</label>\n <input type=\"text\" class=\"form-control\" id=\"contacts-name\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-email\">Email</label>\n <input type=\"email\" class=\"form-control\" id=\"contacts-email\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-message\">Message</label>\n <textarea class=\"form-control\" rows=\"5\" id=\"contacts-message\"></textarea>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\"><i class=\"icon-ok\"></i> Send</button>\n <button type=\"button\" class=\"btn btn-default\">Cancel</button>\n</form>\n<!-- END FORM-->\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<h2>Let us help</h2>\n<p>Lorem ipsum sdolor sic amit, bolero carles.</p>\n<!-- BEGIN FORM-->\n<form action=\"#\" role=\"form\">\n <div class=\"form-group\">\n <label for=\"contacts-name\">Name</label>\n <input type=\"text\" class=\"form-control\" id=\"contacts-name\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-email\">Email</label>\n <input type=\"email\" class=\"form-control\" id=\"contacts-email\">\n </div>\n <div class=\"form-group\">\n <label for=\"contacts-message\">Message</label>\n <textarea class=\"form-control\" rows=\"5\" id=\"contacts-message\"></textarea>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\"><i class=\"icon-ok\"></i> Send</button>\n <button type=\"button\" class=\"btn btn-default\">Cancel</button>\n</form>\n<!-- END FORM-->\n"},{"title":"Projects","date":"2015-11-29T13:00:03.000Z","layout":"page","_content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"filter-v1\">\n\t<ul class=\"mix-filter\">\n\t <li data-filter=\"all\" class=\"filter active\">All</li>\n\t <li data-filter=\"category_1\" class=\"filter\">UI Design</li>\n\t <li data-filter=\"category_2\" class=\"filter\">Web Development</li>\n\t <li data-filter=\"category_3\" class=\"filter\">Photography</li>\n\t <li data-filter=\"category_3 category_1\" class=\"filter\">Wordpress and Logo</li>\n\t</ul>\n\t<div class=\"row mix-grid thumbnails\">\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project1\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project2\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#projectz\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img5.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img6.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project4\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project5\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project6\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project7\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project8\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n</div>\n","source":"projects/index.ejs","raw":"---\ntitle: Projects\ndate: 2015-11-29 21:00:03\nlayout: page\n---\n<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"filter-v1\">\n\t<ul class=\"mix-filter\">\n\t <li data-filter=\"all\" class=\"filter active\">All</li>\n\t <li data-filter=\"category_1\" class=\"filter\">UI Design</li>\n\t <li data-filter=\"category_2\" class=\"filter\">Web Development</li>\n\t <li data-filter=\"category_3\" class=\"filter\">Photography</li>\n\t <li data-filter=\"category_3 category_1\" class=\"filter\">Wordpress and Logo</li>\n\t</ul>\n\t<div class=\"row mix-grid thumbnails\">\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project1\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project2\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#projectz\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img5.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img6.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project4\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project5\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project6\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project7\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project8\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n</div>\n","updated":"2018-08-25T02:29:23.102Z","path":"projects/index.html","comments":1,"_id":"ckmbipmi0001okgvps55it9uy","content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"filter-v1\">\n\t<ul class=\"mix-filter\">\n\t <li data-filter=\"all\" class=\"filter active\">All</li>\n\t <li data-filter=\"category_1\" class=\"filter\">UI Design</li>\n\t <li data-filter=\"category_2\" class=\"filter\">Web Development</li>\n\t <li data-filter=\"category_3\" class=\"filter\">Photography</li>\n\t <li data-filter=\"category_3 category_1\" class=\"filter\">Wordpress and Logo</li>\n\t</ul>\n\t<div class=\"row mix-grid thumbnails\">\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project1\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project2\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#projectz\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img5.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img6.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project4\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project5\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project6\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project7\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project8\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n</div>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-page\">\n <div class=\"filter-v1\">\n\t<ul class=\"mix-filter\">\n\t <li data-filter=\"all\" class=\"filter active\">All</li>\n\t <li data-filter=\"category_1\" class=\"filter\">UI Design</li>\n\t <li data-filter=\"category_2\" class=\"filter\">Web Development</li>\n\t <li data-filter=\"category_3\" class=\"filter\">Photography</li>\n\t <li data-filter=\"category_3 category_1\" class=\"filter\">Wordpress and Logo</li>\n\t</ul>\n\t<div class=\"row mix-grid thumbnails\">\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project1\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project2\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#projectz\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img5.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project3\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img6.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project4\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_2 category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img1.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project5\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 category_2 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img2.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project6\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_3 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img4.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project7\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t <div class=\"col-md-4 col-sm-6 mix category_1 mix_all\" style=\"display: block; opacity: 1;\">\n\t <div class=\"mix-inner\">\n\t <img alt=\"\" src=\"/metronic/assets/pages/img/works/img3.jpg\" class=\"img-responsive\">\n\t <div class=\"mix-details\">\n\t\t<h4>Cascusamus et iusto odio</h4>\n\t\t<p>At vero eos et accusamus et iusto odio digniss imos duc sasdimus qui sint blanditiis prae sentium voluptatum deleniti atque corrupti quos dolores.</p>\n\t\t<a class=\"mix-link\"><i class=\"fa fa-link\"></i></a>\n\t\t<a title=\"Project Name\" href=\"#project8\" class=\"mix-preview\"><i class=\"fa fa-search\"></i></a>\n\t </div> \n\t <div class=\"mix-info container\">\n\t\t<h2>Project Name</h2>\n\t\t<p>Lorem ipsum dolor sit amet, dolore eiusmod quis tempor\n\t\tincididunt ut et dolore Ut veniam unde nostrudlaboris. Sed unde\n\t\tomnis iste natus error sit voluptatem.</p>\n\t\t<div class=\"row quote-v1 margin-bottom-30\">\n\t\t <div class=\"col-md-7 quote-v1-inner\">\n\t\t <span>Lorem ipsum dolor sit amet, consectetuer adipiscing tempor</span>\n\t\t </div>\n\t\t <div class=\"col-md-5 quote-v1-inner text-right\">\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-rocket margin-right-10\"></i>Adipiscing</a>\n\t\t <a href=\"javascript:;\" class=\"btn-transparent\" target=\"_blank\" rel=\"noopener\"><i class=\"fa fa-gift margin-right-10\"></i>Get it FREE</a>\n\t\t </div>\n\t\t</div>\n\t\t<div class=\"row front-lists-v2 margin-bottom-15\">\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-html5\"></i> HTML5/CSS3</li>\n\t\t <li><i class=\"fa fa-bell\"></i> Web Deisgn</li>\n\t\t <li><i class=\"fa fa-globe\"></i> Web Development</li>\n\t\t <li><i class=\"fa fa-shopping-cart\"></i> Shoping Cart</li>\n\t\t </ul>\n\t\t </div>\n\t\t <div class=\"col-md-6\">\n\t\t <ul class=\"list-unstyled\">\n\t\t <li><i class=\"fa fa-dropbox\"></i> Free Storage</li>\n\t\t <li><i class=\"fa fa-cloud\"></i> Cloud Hosting</li>\n\t\t <li><i class=\"fa fa-comments\"></i> Free Support</li>\n\t\t <li><i class=\"fa fa-star\"></i> Awesome UI</li>\n\t\t </ul>\n\t\t </div>\n\t\t</div>\n\t\t<a class=\"btn btn-lg btn-primary\" style=\"color: white;\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Visit Project</a>\n\t\t<a class=\"btn btn-lg btn-default back\" href=\"javascript:;\" target=\"_blank\" rel=\"noopener\"> Back</a>\n\t </div> \n\t </div> \n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n</div>\n"},{"title":"All tags","date":"2017-12-19T07:22:42.000Z","type":"tags","_content":"","source":"tags/index.md","raw":"---\ntitle: All tags\ndate: 2017-12-19 15:22:42\ntype: \"tags\"\n---\n","updated":"2018-08-25T02:29:23.107Z","path":"tags/index.html","comments":1,"layout":"page","_id":"ckmbipmi3001skgvpkgmm0l2k","content":"","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":""},{"layout":"page","title":"Login","_content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <br><br>\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-form-page\">\n <div class=\"row\">\n\t<div class=\"col-md-7 col-sm-7\">\n\t <form class=\"form-horizontal form-without-legend\" role=\"form\">\n\t <div class=\"form-group\">\n\t <label for=\"email\" class=\"col-lg-4 control-label\">Email <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"email\">\n\t </div>\n\t </div>\n\t <div class=\"form-group\">\n\t <label for=\"password\" class=\"col-lg-4 control-label\">Password <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"password\">\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0\">\n\t\t<a href=\"page-forgotton-password.html\">Forget Password?</a>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-20\">\n\t\t<button type=\"submit\" class=\"btn btn-primary\">Login</button>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-10 padding-right-30\">\n\t\t<hr>\n\t\t<div class=\"login-socio\">\n\t\t <p class=\"text-muted\">or login using:</p>\n\t\t <ul class=\"social-icons\">\n\t\t <li><a href=\"javascript:;\" data-original-title=\"facebook\" class=\"facebook\" title=\"facebook\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Twitter\" class=\"twitter\" title=\"Twitter\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Google Plus\" class=\"googleplus\" title=\"Google Plus\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Linkedin\" class=\"linkedin\" title=\"LinkedIn\"></a></li>\n\t\t </ul>\n\t\t</div>\n\t </div>\n\t </div>\n\t </form>\n\t</div>\n\t<div class=\"col-md-4 col-sm-4 pull-right\">\n\t <div class=\"form-info\">\n\t <h2><em>Important</em> Information</h2>\n\t <p>Duis autem vel eum iriure at dolor vulputate velit esse vel molestie at dolore.</p>\n\n\t <button type=\"button\" class=\"btn btn-default\">More details</button>\n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","source":"login/index.ejs","raw":"---\nlayout: page\ntitle: Login\n---\n<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <br><br>\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-form-page\">\n <div class=\"row\">\n\t<div class=\"col-md-7 col-sm-7\">\n\t <form class=\"form-horizontal form-without-legend\" role=\"form\">\n\t <div class=\"form-group\">\n\t <label for=\"email\" class=\"col-lg-4 control-label\">Email <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"email\">\n\t </div>\n\t </div>\n\t <div class=\"form-group\">\n\t <label for=\"password\" class=\"col-lg-4 control-label\">Password <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"password\">\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0\">\n\t\t<a href=\"page-forgotton-password.html\">Forget Password?</a>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-20\">\n\t\t<button type=\"submit\" class=\"btn btn-primary\">Login</button>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-10 padding-right-30\">\n\t\t<hr>\n\t\t<div class=\"login-socio\">\n\t\t <p class=\"text-muted\">or login using:</p>\n\t\t <ul class=\"social-icons\">\n\t\t <li><a href=\"javascript:;\" data-original-title=\"facebook\" class=\"facebook\" title=\"facebook\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Twitter\" class=\"twitter\" title=\"Twitter\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Google Plus\" class=\"googleplus\" title=\"Google Plus\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Linkedin\" class=\"linkedin\" title=\"LinkedIn\"></a></li>\n\t\t </ul>\n\t\t</div>\n\t </div>\n\t </div>\n\t </form>\n\t</div>\n\t<div class=\"col-md-4 col-sm-4 pull-right\">\n\t <div class=\"form-info\">\n\t <h2><em>Important</em> Information</h2>\n\t <p>Duis autem vel eum iriure at dolor vulputate velit esse vel molestie at dolore.</p>\n\n\t <button type=\"button\" class=\"btn btn-default\">More details</button>\n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","date":"2018-08-25T02:29:23.096Z","updated":"2018-08-25T02:29:23.096Z","path":"login/index.html","comments":1,"_id":"ckmbipmi5001vkgvpbxirhryu","content":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <br><br>\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-form-page\">\n <div class=\"row\">\n\t<div class=\"col-md-7 col-sm-7\">\n\t <form class=\"form-horizontal form-without-legend\" role=\"form\">\n\t <div class=\"form-group\">\n\t <label for=\"email\" class=\"col-lg-4 control-label\">Email <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"email\">\n\t </div>\n\t </div>\n\t <div class=\"form-group\">\n\t <label for=\"password\" class=\"col-lg-4 control-label\">Password <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"password\">\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0\">\n\t\t<a href=\"page-forgotton-password.html\">Forget Password?</a>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-20\">\n\t\t<button type=\"submit\" class=\"btn btn-primary\">Login</button>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-10 padding-right-30\">\n\t\t<hr>\n\t\t<div class=\"login-socio\">\n\t\t <p class=\"text-muted\">or login using:</p>\n\t\t <ul class=\"social-icons\">\n\t\t <li><a href=\"javascript:;\" data-original-title=\"facebook\" class=\"facebook\" title=\"facebook\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Twitter\" class=\"twitter\" title=\"Twitter\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Google Plus\" class=\"googleplus\" title=\"Google Plus\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Linkedin\" class=\"linkedin\" title=\"LinkedIn\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t </ul>\n\t\t</div>\n\t </div>\n\t </div>\n\t </form>\n\t</div>\n\t<div class=\"col-md-4 col-sm-4 pull-right\">\n\t <div class=\"form-info\">\n\t <h2><em>Important</em> Information</h2>\n\t <p>Duis autem vel eum iriure at dolor vulputate velit esse vel molestie at dolore.</p>\n\n\t <button type=\"button\" class=\"btn btn-default\">More details</button>\n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<!-- BEGIN SIDEBAR & CONTENT -->\n<div class=\"row margin-bottom-40\">\n <br><br>\n <!-- BEGIN CONTENT -->\n <div class=\"col-md-12 col-sm-12\">\n <div class=\"content-form-page\">\n <div class=\"row\">\n\t<div class=\"col-md-7 col-sm-7\">\n\t <form class=\"form-horizontal form-without-legend\" role=\"form\">\n\t <div class=\"form-group\">\n\t <label for=\"email\" class=\"col-lg-4 control-label\">Email <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"email\">\n\t </div>\n\t </div>\n\t <div class=\"form-group\">\n\t <label for=\"password\" class=\"col-lg-4 control-label\">Password <span class=\"require\">*</span></label>\n\t <div class=\"col-lg-8\">\n\t\t<input type=\"text\" class=\"form-control\" id=\"password\">\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0\">\n\t\t<a href=\"page-forgotton-password.html\">Forget Password?</a>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-20\">\n\t\t<button type=\"submit\" class=\"btn btn-primary\">Login</button>\n\t </div>\n\t </div>\n\t <div class=\"row\">\n\t <div class=\"col-lg-8 col-md-offset-4 padding-left-0 padding-top-10 padding-right-30\">\n\t\t<hr>\n\t\t<div class=\"login-socio\">\n\t\t <p class=\"text-muted\">or login using:</p>\n\t\t <ul class=\"social-icons\">\n\t\t <li><a href=\"javascript:;\" data-original-title=\"facebook\" class=\"facebook\" title=\"facebook\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Twitter\" class=\"twitter\" title=\"Twitter\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Google Plus\" class=\"googleplus\" title=\"Google Plus\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t <li><a href=\"javascript:;\" data-original-title=\"Linkedin\" class=\"linkedin\" title=\"LinkedIn\" target=\"_blank\" rel=\"noopener\"></a></li>\n\t\t </ul>\n\t\t</div>\n\t </div>\n\t </div>\n\t </form>\n\t</div>\n\t<div class=\"col-md-4 col-sm-4 pull-right\">\n\t <div class=\"form-info\">\n\t <h2><em>Important</em> Information</h2>\n\t <p>Duis autem vel eum iriure at dolor vulputate velit esse vel molestie at dolore.</p>\n\n\t <button type=\"button\" class=\"btn btn-default\">More details</button>\n\t </div>\n\t</div>\n </div>\n </div>\n </div>\n <!-- END CONTENT -->\n</div>\n<!-- END SIDEBAR & CONTENT -->\n"}],"Post":[{"title":"Welcome To Hexo","date":"2014-02-22T16:00:00.000Z","thumbnail":"https://s3.amazonaws.com/ptsteadman-images/helloworld.jpg","lede":"Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on github.","featured":true,"_content":"\nWelcome to [Hexo](http://hexo.io/)! This is your very first post. Check [documentation](http://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](http://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).\n\n## Quick Start\n\n### Create a new post\n\n``` bash\n$ hexo new \"My New Post\"\n```\n\n<!-- more -->\n\nMore info: [Writing](http://hexo.io/docs/writing.html)\n\n### Run server\n\n``` bash\n$ hexo server\n```\n\nMore info: [Server](http://hexo.io/docs/server.html)\n\n### Generate static files\n\n``` bash\n$ hexo generate\n```\n\nMore info: [Generating](http://hexo.io/docs/generating.html)\n\n### Deploy to remote sites\n\n``` bash\n$ hexo deploy\n```\n\nMore info: [Deployment](http://hexo.io/docs/deployment.html)\n","source":"_posts/2014-02-23-hello-world.md","raw":"title: Welcome To Hexo\ncategory: Hexo\ndate: 2014-02-23\ntags:\n- Welcome\n- How-To\nthumbnail: https://s3.amazonaws.com/ptsteadman-images/helloworld.jpg\nlede: \"Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on github.\"\nfeatured: true\n---\n\nWelcome to [Hexo](http://hexo.io/)! This is your very first post. Check [documentation](http://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](http://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues).\n\n## Quick Start\n\n### Create a new post\n\n``` bash\n$ hexo new \"My New Post\"\n```\n\n<!-- more -->\n\nMore info: [Writing](http://hexo.io/docs/writing.html)\n\n### Run server\n\n``` bash\n$ hexo server\n```\n\nMore info: [Server](http://hexo.io/docs/server.html)\n\n### Generate static files\n\n``` bash\n$ hexo generate\n```\n\nMore info: [Generating](http://hexo.io/docs/generating.html)\n\n### Deploy to remote sites\n\n``` bash\n$ hexo deploy\n```\n\nMore info: [Deployment](http://hexo.io/docs/deployment.html)\n","slug":"2014-02-23-hello-world","published":1,"updated":"2018-08-25T02:29:23.019Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbh0002kgvpodzfnquu","content":"<p>Welcome to <a href=\"http://hexo.io/\" target=\"_blank\" rel=\"noopener\">Hexo</a>! This is your very first post. Check <a href=\"http://hexo.io/docs/\" target=\"_blank\" rel=\"noopener\">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href=\"http://hexo.io/docs/troubleshooting.html\" target=\"_blank\" rel=\"noopener\">troubleshooting</a> or you can ask me on <a href=\"https://github.com/hexojs/hexo/issues\" target=\"_blank\" rel=\"noopener\">GitHub</a>.</p>\n<h2 id=\"Quick-Start\"><a href=\"#Quick-Start\" class=\"headerlink\" title=\"Quick Start\"></a>Quick Start</h2><h3 id=\"Create-a-new-post\"><a href=\"#Create-a-new-post\" class=\"headerlink\" title=\"Create a new post\"></a>Create a new post</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo new <span class=\"string\">\"My New Post\"</span></span><br></pre></td></tr></table></figure>\n<a id=\"more\"></a>\n<p>More info: <a href=\"http://hexo.io/docs/writing.html\" target=\"_blank\" rel=\"noopener\">Writing</a></p>\n<h3 id=\"Run-server\"><a href=\"#Run-server\" class=\"headerlink\" title=\"Run server\"></a>Run server</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo server</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/server.html\" target=\"_blank\" rel=\"noopener\">Server</a></p>\n<h3 id=\"Generate-static-files\"><a href=\"#Generate-static-files\" class=\"headerlink\" title=\"Generate static files\"></a>Generate static files</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo generate</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/generating.html\" target=\"_blank\" rel=\"noopener\">Generating</a></p>\n<h3 id=\"Deploy-to-remote-sites\"><a href=\"#Deploy-to-remote-sites\" class=\"headerlink\" title=\"Deploy to remote sites\"></a>Deploy to remote sites</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo deploy</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/deployment.html\" target=\"_blank\" rel=\"noopener\">Deployment</a></p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>Welcome to <a href=\"http://hexo.io/\" target=\"_blank\" rel=\"noopener\">Hexo</a>! This is your very first post. Check <a href=\"http://hexo.io/docs/\" target=\"_blank\" rel=\"noopener\">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href=\"http://hexo.io/docs/troubleshooting.html\" target=\"_blank\" rel=\"noopener\">troubleshooting</a> or you can ask me on <a href=\"https://github.com/hexojs/hexo/issues\" target=\"_blank\" rel=\"noopener\">GitHub</a>.</p>\n<h2 id=\"Quick-Start\"><a href=\"#Quick-Start\" class=\"headerlink\" title=\"Quick Start\"></a>Quick Start</h2><h3 id=\"Create-a-new-post\"><a href=\"#Create-a-new-post\" class=\"headerlink\" title=\"Create a new post\"></a>Create a new post</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo new <span class=\"string\">\"My New Post\"</span></span><br></pre></td></tr></table></figure>","more":"<p>More info: <a href=\"http://hexo.io/docs/writing.html\" target=\"_blank\" rel=\"noopener\">Writing</a></p>\n<h3 id=\"Run-server\"><a href=\"#Run-server\" class=\"headerlink\" title=\"Run server\"></a>Run server</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo server</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/server.html\" target=\"_blank\" rel=\"noopener\">Server</a></p>\n<h3 id=\"Generate-static-files\"><a href=\"#Generate-static-files\" class=\"headerlink\" title=\"Generate static files\"></a>Generate static files</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo generate</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/generating.html\" target=\"_blank\" rel=\"noopener\">Generating</a></p>\n<h3 id=\"Deploy-to-remote-sites\"><a href=\"#Deploy-to-remote-sites\" class=\"headerlink\" title=\"Deploy to remote sites\"></a>Deploy to remote sites</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ hexo deploy</span><br></pre></td></tr></table></figure>\n<p>More info: <a href=\"http://hexo.io/docs/deployment.html\" target=\"_blank\" rel=\"noopener\">Deployment</a></p>"},{"title":"Centos7搭建Git服务器","date":"2018-08-25T01:23:15.000Z","_content":"\n环境说明\n- CentOS 7.x 最小安装\n- 配置网络连接\n\n# 1. 安装Git及创建用户\n``` bash\n# 安装Git\n$ yum install git\n$ git --version\n\n# 创建一个git用户组和用户,用来运行git服务\n$ groupadd git\n$ adduser git -g git\n```\n<!-- more -->\n禁止git用户登录,修改/etc/passwd文件\n\n``` bash\n# 找到这句:\ngit:x:503:503::/home/git:/bin/bash\n\n# 改为:\ngit:x:503:503::/home/git:/bin/git-shell\n```\n# 2. 创建证书登录\n\n``` bash\n$ mkdir /home/git/.ssh\n$ chmod 700 /home/git/.ssh\n$ touch 700 /home/git/.ssh/authorized_keys\n$ chmod 600 /home/git/.ssh/authorized_keys\n```\n注意,如果是采用的sudo方式来创建git和相应的文件的,需要设置/home/git/.ssh/的owner为git,否则还是每次要输入密码的。\n``` bash\n# owner改为git\n$ sudo chown -R git:git /home/git/.ssh/\n```\n编辑`/home/git/.ssh/authorized_keys`,把客户端的公钥id_rsa.pub放进去,1个公钥1行。\n``` bash\n# 创建私钥,文件位于用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件\n$ ssh-keygen -t rsa -C \"youremail@example.com\"\n```\n在服务器端打开RSA认证,在文件/etc/ssh/sshd_config中添加或者修改下列三行内容:\n``` bash\nRSAAuthentication yes\nPubkeyAuthentication yes\nAuthorizedKeysFile .ssh/authorized_keys\n```\n# 3.初始化Git仓库\n```bash\n$ cd /srv\n$ mkdir gitrepo\n$ chown git:git gitrepo/\n$ cd gitrepo //切换到希望创建工作区的目录\n\n# 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾,会创建一个唯一分支master\n$ git init --bare project.git\n\n# 将仓库所属用户改为git\n$ chown -R git:git project.git\n```\n# 4. 克隆仓库\n在另一台电脑上(下面称为:Client),安装git,并且运行下面的命令:\n```bash\n$ git clone git@10.10.10.10:/srv/gitrepo/project.git\n```\n# 5. 验证安装\n## 5.1. 推送到远程服务器\n在本地Client的project目录下,创建一个文件:text.txt,内容随意,然后上传到远端:\n```bash\ngit push origin master\n```\n## 5.2. 检验\n在本地Client的另外一个目录下,克隆一下:\n`$ git clone git@10.10.10.10:/srv/gitrepo/project.git`\n看看text.txt文件是否存在,内容是否对。\n## 5.3. 常用的Git命令:\n```bash\n$ git add . 添加所有文件 注意有个 .\n$ git commit -m '注释' 提交本地\n$ git push origin master提交给默认分支\n$ git -rm 删除\n$ git pull origin master 从默认分支下载\n$ git branch -v 查看所有分支\n```\n# 6. 设置git钩子\n进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。\n```bash\n$ cd hooks/\n$ vim post-receive\n\n# 在post-receive写入以下内容:\n\n#!/bin/bash\ngit --work-tree=/www/laravel checkout -f\n```\n/www/laravel为实际需要同步的站点目录。\n然后修改post-receive为可执行文件(其实这就是一个脚本文件)\n\n`chmod +x post-receive`\n\npost-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。\n\n注意:同时还需要修改web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(也可以通过添加git用户到相应的用户组来解决问题)\n`chown git:git -R /www # 修改所属用户`\n设置好钩子后,当你本地再次执行push的时候,发现web目录的文件也同步的更新了。","source":"_posts/Centos7-Deploy-Git-Server.md","raw":"---\ntitle: Centos7搭建Git服务器\ndate: 2018-08-25 09:23:15\ntags:\n- Github\ncategory: Github\n---\n\n环境说明\n- CentOS 7.x 最小安装\n- 配置网络连接\n\n# 1. 安装Git及创建用户\n``` bash\n# 安装Git\n$ yum install git\n$ git --version\n\n# 创建一个git用户组和用户,用来运行git服务\n$ groupadd git\n$ adduser git -g git\n```\n<!-- more -->\n禁止git用户登录,修改/etc/passwd文件\n\n``` bash\n# 找到这句:\ngit:x:503:503::/home/git:/bin/bash\n\n# 改为:\ngit:x:503:503::/home/git:/bin/git-shell\n```\n# 2. 创建证书登录\n\n``` bash\n$ mkdir /home/git/.ssh\n$ chmod 700 /home/git/.ssh\n$ touch 700 /home/git/.ssh/authorized_keys\n$ chmod 600 /home/git/.ssh/authorized_keys\n```\n注意,如果是采用的sudo方式来创建git和相应的文件的,需要设置/home/git/.ssh/的owner为git,否则还是每次要输入密码的。\n``` bash\n# owner改为git\n$ sudo chown -R git:git /home/git/.ssh/\n```\n编辑`/home/git/.ssh/authorized_keys`,把客户端的公钥id_rsa.pub放进去,1个公钥1行。\n``` bash\n# 创建私钥,文件位于用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件\n$ ssh-keygen -t rsa -C \"youremail@example.com\"\n```\n在服务器端打开RSA认证,在文件/etc/ssh/sshd_config中添加或者修改下列三行内容:\n``` bash\nRSAAuthentication yes\nPubkeyAuthentication yes\nAuthorizedKeysFile .ssh/authorized_keys\n```\n# 3.初始化Git仓库\n```bash\n$ cd /srv\n$ mkdir gitrepo\n$ chown git:git gitrepo/\n$ cd gitrepo //切换到希望创建工作区的目录\n\n# 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾,会创建一个唯一分支master\n$ git init --bare project.git\n\n# 将仓库所属用户改为git\n$ chown -R git:git project.git\n```\n# 4. 克隆仓库\n在另一台电脑上(下面称为:Client),安装git,并且运行下面的命令:\n```bash\n$ git clone git@10.10.10.10:/srv/gitrepo/project.git\n```\n# 5. 验证安装\n## 5.1. 推送到远程服务器\n在本地Client的project目录下,创建一个文件:text.txt,内容随意,然后上传到远端:\n```bash\ngit push origin master\n```\n## 5.2. 检验\n在本地Client的另外一个目录下,克隆一下:\n`$ git clone git@10.10.10.10:/srv/gitrepo/project.git`\n看看text.txt文件是否存在,内容是否对。\n## 5.3. 常用的Git命令:\n```bash\n$ git add . 添加所有文件 注意有个 .\n$ git commit -m '注释' 提交本地\n$ git push origin master提交给默认分支\n$ git -rm 删除\n$ git pull origin master 从默认分支下载\n$ git branch -v 查看所有分支\n```\n# 6. 设置git钩子\n进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。\n```bash\n$ cd hooks/\n$ vim post-receive\n\n# 在post-receive写入以下内容:\n\n#!/bin/bash\ngit --work-tree=/www/laravel checkout -f\n```\n/www/laravel为实际需要同步的站点目录。\n然后修改post-receive为可执行文件(其实这就是一个脚本文件)\n\n`chmod +x post-receive`\n\npost-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。\n\n注意:同时还需要修改web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(也可以通过添加git用户到相应的用户组来解决问题)\n`chown git:git -R /www # 修改所属用户`\n设置好钩子后,当你本地再次执行push的时候,发现web目录的文件也同步的更新了。","slug":"Centos7-Deploy-Git-Server","published":1,"updated":"2018-08-25T02:29:23.030Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbl0003kgvpqytoq1r4","content":"<p>环境说明</p>\n<ul>\n<li>CentOS 7.x 最小安装</li>\n<li>配置网络连接</li>\n</ul>\n<h1 id=\"1-安装Git及创建用户\"><a href=\"#1-安装Git及创建用户\" class=\"headerlink\" title=\"1. 安装Git及创建用户\"></a>1. 安装Git及创建用户</h1><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 安装Git</span></span><br><span class=\"line\">$ yum install git</span><br><span class=\"line\">$ git --version</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 创建一个git用户组和用户,用来运行git服务</span></span><br><span class=\"line\">$ groupadd git</span><br><span class=\"line\">$ adduser git -g git</span><br></pre></td></tr></table></figure>\n<a id=\"more\"></a>\n<p>禁止git用户登录,修改/etc/passwd文件</p>\n<figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 找到这句:</span></span><br><span class=\"line\">git:x:503:503::/home/git:/bin/bash</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 改为:</span></span><br><span class=\"line\">git:x:503:503::/home/git:/bin/git-shell</span><br></pre></td></tr></table></figure>\n<h1 id=\"2-创建证书登录\"><a href=\"#2-创建证书登录\" class=\"headerlink\" title=\"2. 创建证书登录\"></a>2. 创建证书登录</h1><figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\">$ mkdir /home/git/.ssh</span><br><span class=\"line\">$ chmod 700 /home/git/.ssh</span><br><span class=\"line\">$ touch 700 /home/git/.ssh/authorized_keys</span><br><span class=\"line\">$ chmod 600 /home/git/.ssh/authorized_keys</span><br></pre></td></tr></table></figure>\n<p>注意,如果是采用的sudo方式来创建git和相应的文件的,需要设置/home/git/.ssh/的owner为git,否则还是每次要输入密码的。<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># owner改为git</span></span><br><span class=\"line\">$ sudo chown -R git:git /home/git/.ssh/</span><br></pre></td></tr></table></figure></p>\n<p>编辑<code>/home/git/.ssh/authorized_keys</code>,把客户端的公钥id_rsa.pub放进去,1个公钥1行。<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 创建私钥,文件位于用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件</span></span><br><span class=\"line\">$ ssh-keygen -t rsa -C <span class=\"string\">\"youremail@example.com\"</span></span><br></pre></td></tr></table></figure></p>\n<p>在服务器端打开RSA认证,在文件/etc/ssh/sshd_config中添加或者修改下列三行内容:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">RSAAuthentication yes</span><br><span class=\"line\">PubkeyAuthentication yes</span><br><span class=\"line\">AuthorizedKeysFile .ssh/authorized_keys</span><br></pre></td></tr></table></figure></p>\n<h1 id=\"3-初始化Git仓库\"><a href=\"#3-初始化Git仓库\" class=\"headerlink\" title=\"3.初始化Git仓库\"></a>3.初始化Git仓库</h1><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ <span class=\"built_in\">cd</span> /srv</span><br><span class=\"line\">$ mkdir gitrepo</span><br><span class=\"line\">$ chown git:git gitrepo/</span><br><span class=\"line\">$ <span class=\"built_in\">cd</span> gitrepo //切换到希望创建工作区的目录</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾,会创建一个唯一分支master</span></span><br><span class=\"line\">$ git init --bare project.git</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 将仓库所属用户改为git</span></span><br><span class=\"line\">$ chown -R git:git project.git</span><br></pre></td></tr></table></figure>\n<h1 id=\"4-克隆仓库\"><a href=\"#4-克隆仓库\" class=\"headerlink\" title=\"4. 克隆仓库\"></a>4. 克隆仓库</h1><p>在另一台电脑上(下面称为:Client),安装git,并且运行下面的命令:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ git <span class=\"built_in\">clone</span> git@10.10.10.10:/srv/gitrepo/project.git</span><br></pre></td></tr></table></figure></p>\n<h1 id=\"5-验证安装\"><a href=\"#5-验证安装\" class=\"headerlink\" title=\"5. 验证安装\"></a>5. 验证安装</h1><h2 id=\"5-1-推送到远程服务器\"><a href=\"#5-1-推送到远程服务器\" class=\"headerlink\" title=\"5.1. 推送到远程服务器\"></a>5.1. 推送到远程服务器</h2><p>在本地Client的project目录下,创建一个文件:text.txt,内容随意,然后上传到远端:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">git push origin master</span><br></pre></td></tr></table></figure></p>\n<h2 id=\"5-2-检验\"><a href=\"#5-2-检验\" class=\"headerlink\" title=\"5.2. 检验\"></a>5.2. 检验</h2><p>在本地Client的另外一个目录下,克隆一下:<br><code>$ git clone git@10.10.10.10:/srv/gitrepo/project.git</code><br>看看text.txt文件是否存在,内容是否对。</p>\n<h2 id=\"5-3-常用的Git命令:\"><a href=\"#5-3-常用的Git命令:\" class=\"headerlink\" title=\"5.3. 常用的Git命令:\"></a>5.3. 常用的Git命令:</h2><figure class=\"highlight bash\"><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\">$ git add . 添加所有文件 注意有个 .</span><br><span class=\"line\">$ git commit -m <span class=\"string\">'注释'</span> 提交本地</span><br><span class=\"line\">$ git push origin master提交给默认分支</span><br><span class=\"line\">$ git -rm 删除</span><br><span class=\"line\">$ git pull origin master 从默认分支下载</span><br><span class=\"line\">$ git branch -v 查看所有分支</span><br></pre></td></tr></table></figure>\n<h1 id=\"6-设置git钩子\"><a href=\"#6-设置git钩子\" class=\"headerlink\" title=\"6. 设置git钩子\"></a>6. 设置git钩子</h1><p>进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。<br><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ <span class=\"built_in\">cd</span> hooks/</span><br><span class=\"line\">$ vim post-receive</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 在post-receive写入以下内容:</span></span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"meta\">#!/bin/bash</span></span><br><span class=\"line\">git --work-tree=/www/laravel checkout -f</span><br></pre></td></tr></table></figure></p>\n<p>/www/laravel为实际需要同步的站点目录。<br>然后修改post-receive为可执行文件(其实这就是一个脚本文件)</p>\n<p><code>chmod +x post-receive</code></p>\n<p>post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。</p>\n<p>注意:同时还需要修改web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(也可以通过添加git用户到相应的用户组来解决问题)<br><code>chown git:git -R /www # 修改所属用户</code><br>设置好钩子后,当你本地再次执行push的时候,发现web目录的文件也同步的更新了。</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>环境说明</p>\n<ul>\n<li>CentOS 7.x 最小安装</li>\n<li>配置网络连接</li>\n</ul>\n<h1 id=\"1-安装Git及创建用户\"><a href=\"#1-安装Git及创建用户\" class=\"headerlink\" title=\"1. 安装Git及创建用户\"></a>1. 安装Git及创建用户</h1><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 安装Git</span></span><br><span class=\"line\">$ yum install git</span><br><span class=\"line\">$ git --version</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 创建一个git用户组和用户,用来运行git服务</span></span><br><span class=\"line\">$ groupadd git</span><br><span class=\"line\">$ adduser git -g git</span><br></pre></td></tr></table></figure>","more":"<p>禁止git用户登录,修改/etc/passwd文件</p>\n<figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 找到这句:</span></span><br><span class=\"line\">git:x:503:503::/home/git:/bin/bash</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 改为:</span></span><br><span class=\"line\">git:x:503:503::/home/git:/bin/git-shell</span><br></pre></td></tr></table></figure>\n<h1 id=\"2-创建证书登录\"><a href=\"#2-创建证书登录\" class=\"headerlink\" title=\"2. 创建证书登录\"></a>2. 创建证书登录</h1><figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\">$ mkdir /home/git/.ssh</span><br><span class=\"line\">$ chmod 700 /home/git/.ssh</span><br><span class=\"line\">$ touch 700 /home/git/.ssh/authorized_keys</span><br><span class=\"line\">$ chmod 600 /home/git/.ssh/authorized_keys</span><br></pre></td></tr></table></figure>\n<p>注意,如果是采用的sudo方式来创建git和相应的文件的,需要设置/home/git/.ssh/的owner为git,否则还是每次要输入密码的。<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># owner改为git</span></span><br><span class=\"line\">$ sudo chown -R git:git /home/git/.ssh/</span><br></pre></td></tr></table></figure></p>\n<p>编辑<code>/home/git/.ssh/authorized_keys</code>,把客户端的公钥id_rsa.pub放进去,1个公钥1行。<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\"># 创建私钥,文件位于用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件</span></span><br><span class=\"line\">$ ssh-keygen -t rsa -C <span class=\"string\">\"youremail@example.com\"</span></span><br></pre></td></tr></table></figure></p>\n<p>在服务器端打开RSA认证,在文件/etc/ssh/sshd_config中添加或者修改下列三行内容:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">RSAAuthentication yes</span><br><span class=\"line\">PubkeyAuthentication yes</span><br><span class=\"line\">AuthorizedKeysFile .ssh/authorized_keys</span><br></pre></td></tr></table></figure></p>\n<h1 id=\"3-初始化Git仓库\"><a href=\"#3-初始化Git仓库\" class=\"headerlink\" title=\"3.初始化Git仓库\"></a>3.初始化Git仓库</h1><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ <span class=\"built_in\">cd</span> /srv</span><br><span class=\"line\">$ mkdir gitrepo</span><br><span class=\"line\">$ chown git:git gitrepo/</span><br><span class=\"line\">$ <span class=\"built_in\">cd</span> gitrepo //切换到希望创建工作区的目录</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 创建一个空的Git仓库,服务器上的Git仓库通常都以.git结尾,会创建一个唯一分支master</span></span><br><span class=\"line\">$ git init --bare project.git</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 将仓库所属用户改为git</span></span><br><span class=\"line\">$ chown -R git:git project.git</span><br></pre></td></tr></table></figure>\n<h1 id=\"4-克隆仓库\"><a href=\"#4-克隆仓库\" class=\"headerlink\" title=\"4. 克隆仓库\"></a>4. 克隆仓库</h1><p>在另一台电脑上(下面称为:Client),安装git,并且运行下面的命令:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ git <span class=\"built_in\">clone</span> git@10.10.10.10:/srv/gitrepo/project.git</span><br></pre></td></tr></table></figure></p>\n<h1 id=\"5-验证安装\"><a href=\"#5-验证安装\" class=\"headerlink\" title=\"5. 验证安装\"></a>5. 验证安装</h1><h2 id=\"5-1-推送到远程服务器\"><a href=\"#5-1-推送到远程服务器\" class=\"headerlink\" title=\"5.1. 推送到远程服务器\"></a>5.1. 推送到远程服务器</h2><p>在本地Client的project目录下,创建一个文件:text.txt,内容随意,然后上传到远端:<br><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">git push origin master</span><br></pre></td></tr></table></figure></p>\n<h2 id=\"5-2-检验\"><a href=\"#5-2-检验\" class=\"headerlink\" title=\"5.2. 检验\"></a>5.2. 检验</h2><p>在本地Client的另外一个目录下,克隆一下:<br><code>$ git clone git@10.10.10.10:/srv/gitrepo/project.git</code><br>看看text.txt文件是否存在,内容是否对。</p>\n<h2 id=\"5-3-常用的Git命令:\"><a href=\"#5-3-常用的Git命令:\" class=\"headerlink\" title=\"5.3. 常用的Git命令:\"></a>5.3. 常用的Git命令:</h2><figure class=\"highlight bash\"><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\">$ git add . 添加所有文件 注意有个 .</span><br><span class=\"line\">$ git commit -m <span class=\"string\">'注释'</span> 提交本地</span><br><span class=\"line\">$ git push origin master提交给默认分支</span><br><span class=\"line\">$ git -rm 删除</span><br><span class=\"line\">$ git pull origin master 从默认分支下载</span><br><span class=\"line\">$ git branch -v 查看所有分支</span><br></pre></td></tr></table></figure>\n<h1 id=\"6-设置git钩子\"><a href=\"#6-设置git钩子\" class=\"headerlink\" title=\"6. 设置git钩子\"></a>6. 设置git钩子</h1><p>进入我们的裸仓库的hooks文件夹,然后新建一个post-receive文件。<br><figure class=\"highlight bash\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$ <span class=\"built_in\">cd</span> hooks/</span><br><span class=\"line\">$ vim post-receive</span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"comment\"># 在post-receive写入以下内容:</span></span><br><span class=\"line\"></span><br><span class=\"line\"><span class=\"meta\">#!/bin/bash</span></span><br><span class=\"line\">git --work-tree=/www/laravel checkout -f</span><br></pre></td></tr></table></figure></p>\n<p>/www/laravel为实际需要同步的站点目录。<br>然后修改post-receive为可执行文件(其实这就是一个脚本文件)</p>\n<p><code>chmod +x post-receive</code></p>\n<p>post-receive的原理就是,当远程仓库发现有用户执行了push操作,就会执行一个脚本post-receive(钩子)。</p>\n<p>注意:同时还需要修改web站点目录的权限,修改所属用户与用户组为git,否则钩子的权限可能会不足而导致执行失败。(也可以通过添加git用户到相应的用户组来解决问题)<br><code>chown git:git -R /www # 修改所属用户</code><br>设置好钩子后,当你本地再次执行push的时候,发现web目录的文件也同步的更新了。</p>"},{"title":"Notes On Creating A Hexo Theme","date":"2016-01-01T16:00:00.000Z","lede":"Information about developing a Hexo theme, including common gotchas that we ran into. This posts covers setting up a hexo development environment, and the seperation of theme and content.","thumbnail":"https://s3.amazonaws.com/ptsteadman-images/hexo.png","_content":"\n<div class=\"image-strip\">\n{% img https://s3.amazonaws.com/ptsteadman-images/hexo.png %}\n</div>\n\n## Setup\n\nTo Update NPM: `npm install npm@latest -g`.\n\nIn 2015 it makes sense to use NVM. [NVM Installation\nInstructions](http://linoxide.com/ubuntu-how-to/install-node-js-ubuntu).\n\nUpdate NPM: `npm install npm@latest -g`\n\nHexo: why can't you use helper functions in source code? \nThis should be in docs.\n\n## Creating a Custom Index File in Hexo\n\nTrying to generate a custom index file in source, hexo would ignore\n`source/index.md` no matter what I did. What I had to do was uninstall\n`hexo-generator-index`. [See\nhere](https://github.com/hexojs/hexo/issues/1077). Then it works. So, that\nwill be part of the setup for my theme. But, it's worth it in order to properly\nseperate the theme from the content, I think. Having everyone edit the theme\nindex.ejs template is no good.\n\n## Hexo Rendering Raw EJS File Problem I Encountered\n\nSometimes the server would keep rendering an old version of my code, but as\ntext. So I'd see stuff like\n\n\t<% if (site.tags.length){ %>\n\nThe raw ejs, essentially. Restarting the server or running `hexo clean` didn't\ndo anything.\n\nAfter some time, I realized it was due to the gedit swap files being read by\nhexo as the actual layout files: for example, `tag.ejs~`. My `partial` helpers\nlooked like: `<%- partial('_partials/tag') %>`, and apparently hexo was reading\nin `tag.ejs~` instead of `tag.ejs`. And therefore, the ejs wasn't rendering.\n\nTo fix this, I simply changed my partial helper to `<%-\npartial('_partials/tag.ejs') %>`. Problem solved.\n\n## Hexo Excerpt Variable\n\nI was confused by the behavior of the hexo `excerpt` variable. If you define\n`excerpt: something` in the front matter, hexo ignores that. Instead, to get it\nto work, one needs to add a `<!-- more -->` comment in the source of the post.\nOr, you can install a plugin that allows you to define custom excerpt in the\nfront matter.\n\n## Scripts Directory\n\nOne of the things I really discovered too late is the \"Scripts\" directory in the\ntheme folder. In Hexo, the various plugins drive the structure of the site, as\nopposed to the placement of different files and directories, as in Jekyll. The\nplugins programatically create folder structure, etc, where in Jekyll I mostly\nused the liquid markup to structure the site. \n\nThe problem is, then, that the user wants to extend hexo to do some sort of\ncustom thing. If one had to publish a new plugin, that'd be too much work. But\nthe theme level scripts folder allows one to extend the base hexo functionality\nin 'user space' effectively.\n","source":"_posts/2016-01-02-Notes-On-Creating-A-Hexo-Theme.md","raw":"title: Notes On Creating A Hexo Theme \ndate: 2016-01-02\ntags:\n- Programming\n- Design\ncategory: Hexo\nlede: \"Information about developing a Hexo theme, including common gotchas that we ran into. This posts covers setting up a hexo development environment, and the seperation of theme and content.\"\nthumbnail: https://s3.amazonaws.com/ptsteadman-images/hexo.png\n---\n\n<div class=\"image-strip\">\n{% img https://s3.amazonaws.com/ptsteadman-images/hexo.png %}\n</div>\n\n## Setup\n\nTo Update NPM: `npm install npm@latest -g`.\n\nIn 2015 it makes sense to use NVM. [NVM Installation\nInstructions](http://linoxide.com/ubuntu-how-to/install-node-js-ubuntu).\n\nUpdate NPM: `npm install npm@latest -g`\n\nHexo: why can't you use helper functions in source code? \nThis should be in docs.\n\n## Creating a Custom Index File in Hexo\n\nTrying to generate a custom index file in source, hexo would ignore\n`source/index.md` no matter what I did. What I had to do was uninstall\n`hexo-generator-index`. [See\nhere](https://github.com/hexojs/hexo/issues/1077). Then it works. So, that\nwill be part of the setup for my theme. But, it's worth it in order to properly\nseperate the theme from the content, I think. Having everyone edit the theme\nindex.ejs template is no good.\n\n## Hexo Rendering Raw EJS File Problem I Encountered\n\nSometimes the server would keep rendering an old version of my code, but as\ntext. So I'd see stuff like\n\n\t<% if (site.tags.length){ %>\n\nThe raw ejs, essentially. Restarting the server or running `hexo clean` didn't\ndo anything.\n\nAfter some time, I realized it was due to the gedit swap files being read by\nhexo as the actual layout files: for example, `tag.ejs~`. My `partial` helpers\nlooked like: `<%- partial('_partials/tag') %>`, and apparently hexo was reading\nin `tag.ejs~` instead of `tag.ejs`. And therefore, the ejs wasn't rendering.\n\nTo fix this, I simply changed my partial helper to `<%-\npartial('_partials/tag.ejs') %>`. Problem solved.\n\n## Hexo Excerpt Variable\n\nI was confused by the behavior of the hexo `excerpt` variable. If you define\n`excerpt: something` in the front matter, hexo ignores that. Instead, to get it\nto work, one needs to add a `<!-- more -->` comment in the source of the post.\nOr, you can install a plugin that allows you to define custom excerpt in the\nfront matter.\n\n## Scripts Directory\n\nOne of the things I really discovered too late is the \"Scripts\" directory in the\ntheme folder. In Hexo, the various plugins drive the structure of the site, as\nopposed to the placement of different files and directories, as in Jekyll. The\nplugins programatically create folder structure, etc, where in Jekyll I mostly\nused the liquid markup to structure the site. \n\nThe problem is, then, that the user wants to extend hexo to do some sort of\ncustom thing. If one had to publish a new plugin, that'd be too much work. But\nthe theme level scripts folder allows one to extend the base hexo functionality\nin 'user space' effectively.\n","slug":"2016-01-02-Notes-On-Creating-A-Hexo-Theme","published":1,"updated":"2018-08-25T02:29:23.023Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbq0006kgvpqoma0pjm","content":"<div class=\"image-strip\"><br><img src=\"https://s3.amazonaws.com/ptsteadman-images/hexo.png\"><br></div>\n\n<h2 id=\"Setup\"><a href=\"#Setup\" class=\"headerlink\" title=\"Setup\"></a>Setup</h2><p>To Update NPM: <code>npm install npm@latest -g</code>.</p>\n<p>In 2015 it makes sense to use NVM. <a href=\"http://linoxide.com/ubuntu-how-to/install-node-js-ubuntu\" target=\"_blank\" rel=\"noopener\">NVM Installation<br>Instructions</a>.</p>\n<p>Update NPM: <code>npm install npm@latest -g</code></p>\n<p>Hexo: why can’t you use helper functions in source code?<br>This should be in docs.</p>\n<h2 id=\"Creating-a-Custom-Index-File-in-Hexo\"><a href=\"#Creating-a-Custom-Index-File-in-Hexo\" class=\"headerlink\" title=\"Creating a Custom Index File in Hexo\"></a>Creating a Custom Index File in Hexo</h2><p>Trying to generate a custom index file in source, hexo would ignore<br><code>source/index.md</code> no matter what I did. What I had to do was uninstall<br><code>hexo-generator-index</code>. <a href=\"https://github.com/hexojs/hexo/issues/1077\" target=\"_blank\" rel=\"noopener\">See<br>here</a>. Then it works. So, that<br>will be part of the setup for my theme. But, it’s worth it in order to properly<br>seperate the theme from the content, I think. Having everyone edit the theme<br>index.ejs template is no good.</p>\n<h2 id=\"Hexo-Rendering-Raw-EJS-File-Problem-I-Encountered\"><a href=\"#Hexo-Rendering-Raw-EJS-File-Problem-I-Encountered\" class=\"headerlink\" title=\"Hexo Rendering Raw EJS File Problem I Encountered\"></a>Hexo Rendering Raw EJS File Problem I Encountered</h2><p>Sometimes the server would keep rendering an old version of my code, but as<br>text. So I’d see stuff like</p>\n<pre><code><% if (site.tags.length){ %>\n</code></pre><p>The raw ejs, essentially. Restarting the server or running <code>hexo clean</code> didn’t<br>do anything.</p>\n<p>After some time, I realized it was due to the gedit swap files being read by<br>hexo as the actual layout files: for example, <code>tag.ejs~</code>. My <code>partial</code> helpers<br>looked like: <code><%- partial('_partials/tag') %></code>, and apparently hexo was reading<br>in <code>tag.ejs~</code> instead of <code>tag.ejs</code>. And therefore, the ejs wasn’t rendering.</p>\n<p>To fix this, I simply changed my partial helper to <code><%-\npartial('_partials/tag.ejs') %></code>. Problem solved.</p>\n<h2 id=\"Hexo-Excerpt-Variable\"><a href=\"#Hexo-Excerpt-Variable\" class=\"headerlink\" title=\"Hexo Excerpt Variable\"></a>Hexo Excerpt Variable</h2><p>I was confused by the behavior of the hexo <code>excerpt</code> variable. If you define<br><code>excerpt: something</code> in the front matter, hexo ignores that. Instead, to get it<br>to work, one needs to add a <code><!-- more --></code> comment in the source of the post.<br>Or, you can install a plugin that allows you to define custom excerpt in the<br>front matter.</p>\n<h2 id=\"Scripts-Directory\"><a href=\"#Scripts-Directory\" class=\"headerlink\" title=\"Scripts Directory\"></a>Scripts Directory</h2><p>One of the things I really discovered too late is the “Scripts” directory in the<br>theme folder. In Hexo, the various plugins drive the structure of the site, as<br>opposed to the placement of different files and directories, as in Jekyll. The<br>plugins programatically create folder structure, etc, where in Jekyll I mostly<br>used the liquid markup to structure the site. </p>\n<p>The problem is, then, that the user wants to extend hexo to do some sort of<br>custom thing. If one had to publish a new plugin, that’d be too much work. But<br>the theme level scripts folder allows one to extend the base hexo functionality<br>in ‘user space’ effectively.</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<div class=\"image-strip\"><br><img src=\"https://s3.amazonaws.com/ptsteadman-images/hexo.png\"><br></div>\n\n<h2 id=\"Setup\"><a href=\"#Setup\" class=\"headerlink\" title=\"Setup\"></a>Setup</h2><p>To Update NPM: <code>npm install npm@latest -g</code>.</p>\n<p>In 2015 it makes sense to use NVM. <a href=\"http://linoxide.com/ubuntu-how-to/install-node-js-ubuntu\" target=\"_blank\" rel=\"noopener\">NVM Installation<br>Instructions</a>.</p>\n<p>Update NPM: <code>npm install npm@latest -g</code></p>\n<p>Hexo: why can’t you use helper functions in source code?<br>This should be in docs.</p>\n<h2 id=\"Creating-a-Custom-Index-File-in-Hexo\"><a href=\"#Creating-a-Custom-Index-File-in-Hexo\" class=\"headerlink\" title=\"Creating a Custom Index File in Hexo\"></a>Creating a Custom Index File in Hexo</h2><p>Trying to generate a custom index file in source, hexo would ignore<br><code>source/index.md</code> no matter what I did. What I had to do was uninstall<br><code>hexo-generator-index</code>. <a href=\"https://github.com/hexojs/hexo/issues/1077\" target=\"_blank\" rel=\"noopener\">See<br>here</a>. Then it works. So, that<br>will be part of the setup for my theme. But, it’s worth it in order to properly<br>seperate the theme from the content, I think. Having everyone edit the theme<br>index.ejs template is no good.</p>\n<h2 id=\"Hexo-Rendering-Raw-EJS-File-Problem-I-Encountered\"><a href=\"#Hexo-Rendering-Raw-EJS-File-Problem-I-Encountered\" class=\"headerlink\" title=\"Hexo Rendering Raw EJS File Problem I Encountered\"></a>Hexo Rendering Raw EJS File Problem I Encountered</h2><p>Sometimes the server would keep rendering an old version of my code, but as<br>text. So I’d see stuff like</p>\n<pre><code><% if (site.tags.length){ %>\n</code></pre><p>The raw ejs, essentially. Restarting the server or running <code>hexo clean</code> didn’t<br>do anything.</p>\n<p>After some time, I realized it was due to the gedit swap files being read by<br>hexo as the actual layout files: for example, <code>tag.ejs~</code>. My <code>partial</code> helpers<br>looked like: <code><%- partial('_partials/tag') %></code>, and apparently hexo was reading<br>in <code>tag.ejs~</code> instead of <code>tag.ejs</code>. And therefore, the ejs wasn’t rendering.</p>\n<p>To fix this, I simply changed my partial helper to <code><%-\npartial('_partials/tag.ejs') %></code>. Problem solved.</p>\n<h2 id=\"Hexo-Excerpt-Variable\"><a href=\"#Hexo-Excerpt-Variable\" class=\"headerlink\" title=\"Hexo Excerpt Variable\"></a>Hexo Excerpt Variable</h2><p>I was confused by the behavior of the hexo <code>excerpt</code> variable. If you define<br><code>excerpt: something</code> in the front matter, hexo ignores that. Instead, to get it<br>to work, one needs to add a <code><!-- more --></code> comment in the source of the post.<br>Or, you can install a plugin that allows you to define custom excerpt in the<br>front matter.</p>\n<h2 id=\"Scripts-Directory\"><a href=\"#Scripts-Directory\" class=\"headerlink\" title=\"Scripts Directory\"></a>Scripts Directory</h2><p>One of the things I really discovered too late is the “Scripts” directory in the<br>theme folder. In Hexo, the various plugins drive the structure of the site, as<br>opposed to the placement of different files and directories, as in Jekyll. The<br>plugins programatically create folder structure, etc, where in Jekyll I mostly<br>used the liquid markup to structure the site. </p>\n<p>The problem is, then, that the user wants to extend hexo to do some sort of<br>custom thing. If one had to publish a new plugin, that’d be too much work. But<br>the theme level scripts folder allows one to extend the base hexo functionality<br>in ‘user space’ effectively.</p>\n"},{"title":"根据用户id生成唯一邀请码","date":"2019-06-27T08:59:04.000Z","_content":"\n**错误思路**\n随机生成一个字符串,再将用户id拼接到字符串后面,但是这样id就太明显了,容易暴露,而且如果id很长的话,会导致邀请码很长,不利于用户使用。\n\n所以可以将用户id插入到生成的字符串中,隔一个字符插入一个id的数字,这样id混合在字符串中,不容易暴露,但是长度问题并没有得到优化,于是把隔一个字符插入一个id的数字改为隔一个字符插入两个id的数字。然而长度好像并没有受到太大的影响。\n**正解**\n思考:一个10进制的数字短还是一个16进制的数字短?\n肯定是16进制相对短一些,所以我们可以直接把用户id转成10+26=36进制的不就可以了吗?具体代码如下:\n\n<!-- more -->\n\n```php\nfunction createCode($user_id)\n{\n static $source_string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n $num = $user_id;\n $code = '';\n while($num)\n {\n $mod = $num % 36; \n $num = ($num - $mod) / 36;\n $code = $source_string[$mod].$code;\n }\n return $code;\n}\n```\n邀请码保证了唯一性,并且长度不会太长,用户id也能够根据邀请码反推出来,但是有一点不好的是,别人也可以根据邀请码去反推出user_id,因此,我们需要做一些优化。\n**优化**\n把0剔除,当做补位符号,比如小于六位的邀请码在高位补0,不要0、1、O、I这些容易混淆的字符这样36进制就变成了32进制,然后把字符串顺序打乱,这样,在不知道$source_string的情况下,是没办法解出正确的user_id的。\n\n代码如下:\n```php\nfunction createReferralCode($user_id) \n{\n\tstatic $source_string = 'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ';\n\t$num = $user_id;\n\t$code = '';\n\twhile ( $num > 0) {\n\t\t$mod = $num % 32;\n\t\t$num = ($num - $mod) / 32;\n\t\t$code = $source_string[$mod].$code;\n\t}\n\tif(empty($code[5]))\n\t\t$code = str_pad($code,6,'0',STR_PAD_LEFT);\n\treturn $code;\n\n}\n```\n对应user_id的唯一邀请码就生成了,再附一个解码函数:\n```php\nfunction deReferralCode($code) \n{\n\tstatic $source_string = 'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ';\n\tif (strrpos($code, '0') !== false)\n\t\t$code = substr($code, strrpos($code, '0')+1);\n\t$len = strlen($code);\n\t$code = strrev($code);\n\t$num = 0;\n\tfor ($i=0; $i < $len; $i++) {\n\t\t$num += strpos($source_string, $code[$i]) * pow(32, $i);\n\t}\n\treturn $num;\n\n}\n```\n","source":"_posts/Generate-Unique-Invitation-Code-Based-On-User-ID.md","raw":"---\ntitle: 根据用户id生成唯一邀请码\ndate: 2019-06-27 16:59:04\ntags:\n- PHP\ncategory: PHP\n---\n\n**错误思路**\n随机生成一个字符串,再将用户id拼接到字符串后面,但是这样id就太明显了,容易暴露,而且如果id很长的话,会导致邀请码很长,不利于用户使用。\n\n所以可以将用户id插入到生成的字符串中,隔一个字符插入一个id的数字,这样id混合在字符串中,不容易暴露,但是长度问题并没有得到优化,于是把隔一个字符插入一个id的数字改为隔一个字符插入两个id的数字。然而长度好像并没有受到太大的影响。\n**正解**\n思考:一个10进制的数字短还是一个16进制的数字短?\n肯定是16进制相对短一些,所以我们可以直接把用户id转成10+26=36进制的不就可以了吗?具体代码如下:\n\n<!-- more -->\n\n```php\nfunction createCode($user_id)\n{\n static $source_string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n $num = $user_id;\n $code = '';\n while($num)\n {\n $mod = $num % 36; \n $num = ($num - $mod) / 36;\n $code = $source_string[$mod].$code;\n }\n return $code;\n}\n```\n邀请码保证了唯一性,并且长度不会太长,用户id也能够根据邀请码反推出来,但是有一点不好的是,别人也可以根据邀请码去反推出user_id,因此,我们需要做一些优化。\n**优化**\n把0剔除,当做补位符号,比如小于六位的邀请码在高位补0,不要0、1、O、I这些容易混淆的字符这样36进制就变成了32进制,然后把字符串顺序打乱,这样,在不知道$source_string的情况下,是没办法解出正确的user_id的。\n\n代码如下:\n```php\nfunction createReferralCode($user_id) \n{\n\tstatic $source_string = 'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ';\n\t$num = $user_id;\n\t$code = '';\n\twhile ( $num > 0) {\n\t\t$mod = $num % 32;\n\t\t$num = ($num - $mod) / 32;\n\t\t$code = $source_string[$mod].$code;\n\t}\n\tif(empty($code[5]))\n\t\t$code = str_pad($code,6,'0',STR_PAD_LEFT);\n\treturn $code;\n\n}\n```\n对应user_id的唯一邀请码就生成了,再附一个解码函数:\n```php\nfunction deReferralCode($code) \n{\n\tstatic $source_string = 'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ';\n\tif (strrpos($code, '0') !== false)\n\t\t$code = substr($code, strrpos($code, '0')+1);\n\t$len = strlen($code);\n\t$code = strrev($code);\n\t$num = 0;\n\tfor ($i=0; $i < $len; $i++) {\n\t\t$num += strpos($source_string, $code[$i]) * pow(32, $i);\n\t}\n\treturn $num;\n\n}\n```\n","slug":"Generate-Unique-Invitation-Code-Based-On-User-ID","published":1,"updated":"2019-06-27T09:21:54.411Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbr0007kgvpjyia5dn5","content":"<p><strong>错误思路</strong><br>随机生成一个字符串,再将用户id拼接到字符串后面,但是这样id就太明显了,容易暴露,而且如果id很长的话,会导致邀请码很长,不利于用户使用。</p>\n<p>所以可以将用户id插入到生成的字符串中,隔一个字符插入一个id的数字,这样id混合在字符串中,不容易暴露,但是长度问题并没有得到优化,于是把隔一个字符插入一个id的数字改为隔一个字符插入两个id的数字。然而长度好像并没有受到太大的影响。<br><strong>正解</strong><br>思考:一个10进制的数字短还是一个16进制的数字短?<br>肯定是16进制相对短一些,所以我们可以直接把用户id转成10+26=36进制的不就可以了吗?具体代码如下:</p>\n<a id=\"more\"></a>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">createCode</span><span class=\"params\">($user_id)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">static</span> $source_string = <span class=\"string\">'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>;</span><br><span class=\"line\"> $num = $user_id;</span><br><span class=\"line\"> $code = <span class=\"string\">''</span>;</span><br><span class=\"line\"> <span class=\"keyword\">while</span>($num)</span><br><span class=\"line\"> {</span><br><span class=\"line\"> $mod = $num % <span class=\"number\">36</span>; </span><br><span class=\"line\"> $num = ($num - $mod) / <span class=\"number\">36</span>;</span><br><span class=\"line\"> $code = $source_string[$mod].$code;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">return</span> $code;</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>\n<p>邀请码保证了唯一性,并且长度不会太长,用户id也能够根据邀请码反推出来,但是有一点不好的是,别人也可以根据邀请码去反推出user_id,因此,我们需要做一些优化。<br><strong>优化</strong><br>把0剔除,当做补位符号,比如小于六位的邀请码在高位补0,不要0、1、O、I这些容易混淆的字符这样36进制就变成了32进制,然后把字符串顺序打乱,这样,在不知道$source_string的情况下,是没办法解出正确的user_id的。</p>\n<p>代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">createReferralCode</span><span class=\"params\">($user_id)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\">\t<span class=\"keyword\">static</span> $source_string = <span class=\"string\">'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ'</span>;</span><br><span class=\"line\">\t$num = $user_id;</span><br><span class=\"line\">\t$code = <span class=\"string\">''</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">while</span> ( $num > <span class=\"number\">0</span>) {</span><br><span class=\"line\">\t\t$mod = $num % <span class=\"number\">32</span>;</span><br><span class=\"line\">\t\t$num = ($num - $mod) / <span class=\"number\">32</span>;</span><br><span class=\"line\">\t\t$code = $source_string[$mod].$code;</span><br><span class=\"line\">\t}</span><br><span class=\"line\">\t<span class=\"keyword\">if</span>(<span class=\"keyword\">empty</span>($code[<span class=\"number\">5</span>]))</span><br><span class=\"line\">\t\t$code = str_pad($code,<span class=\"number\">6</span>,<span class=\"string\">'0'</span>,STR_PAD_LEFT);</span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $code;</span><br><span class=\"line\"></span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>对应user_id的唯一邀请码就生成了,再附一个解码函数:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">deReferralCode</span><span class=\"params\">($code)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\">\t<span class=\"keyword\">static</span> $source_string = <span class=\"string\">'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ'</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (strrpos($code, <span class=\"string\">'0'</span>) !== <span class=\"keyword\">false</span>)</span><br><span class=\"line\">\t\t$code = substr($code, strrpos($code, <span class=\"string\">'0'</span>)+<span class=\"number\">1</span>);</span><br><span class=\"line\">\t$len = strlen($code);</span><br><span class=\"line\">\t$code = strrev($code);</span><br><span class=\"line\">\t$num = <span class=\"number\">0</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">for</span> ($i=<span class=\"number\">0</span>; $i < $len; $i++) {</span><br><span class=\"line\">\t\t$num += strpos($source_string, $code[$i]) * pow(<span class=\"number\">32</span>, $i);</span><br><span class=\"line\">\t}</span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $num;</span><br><span class=\"line\"></span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p><strong>错误思路</strong><br>随机生成一个字符串,再将用户id拼接到字符串后面,但是这样id就太明显了,容易暴露,而且如果id很长的话,会导致邀请码很长,不利于用户使用。</p>\n<p>所以可以将用户id插入到生成的字符串中,隔一个字符插入一个id的数字,这样id混合在字符串中,不容易暴露,但是长度问题并没有得到优化,于是把隔一个字符插入一个id的数字改为隔一个字符插入两个id的数字。然而长度好像并没有受到太大的影响。<br><strong>正解</strong><br>思考:一个10进制的数字短还是一个16进制的数字短?<br>肯定是16进制相对短一些,所以我们可以直接把用户id转成10+26=36进制的不就可以了吗?具体代码如下:</p>","more":"<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">createCode</span><span class=\"params\">($user_id)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">static</span> $source_string = <span class=\"string\">'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span>;</span><br><span class=\"line\"> $num = $user_id;</span><br><span class=\"line\"> $code = <span class=\"string\">''</span>;</span><br><span class=\"line\"> <span class=\"keyword\">while</span>($num)</span><br><span class=\"line\"> {</span><br><span class=\"line\"> $mod = $num % <span class=\"number\">36</span>; </span><br><span class=\"line\"> $num = ($num - $mod) / <span class=\"number\">36</span>;</span><br><span class=\"line\"> $code = $source_string[$mod].$code;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">return</span> $code;</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>\n<p>邀请码保证了唯一性,并且长度不会太长,用户id也能够根据邀请码反推出来,但是有一点不好的是,别人也可以根据邀请码去反推出user_id,因此,我们需要做一些优化。<br><strong>优化</strong><br>把0剔除,当做补位符号,比如小于六位的邀请码在高位补0,不要0、1、O、I这些容易混淆的字符这样36进制就变成了32进制,然后把字符串顺序打乱,这样,在不知道$source_string的情况下,是没办法解出正确的user_id的。</p>\n<p>代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">createReferralCode</span><span class=\"params\">($user_id)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\">\t<span class=\"keyword\">static</span> $source_string = <span class=\"string\">'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ'</span>;</span><br><span class=\"line\">\t$num = $user_id;</span><br><span class=\"line\">\t$code = <span class=\"string\">''</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">while</span> ( $num > <span class=\"number\">0</span>) {</span><br><span class=\"line\">\t\t$mod = $num % <span class=\"number\">32</span>;</span><br><span class=\"line\">\t\t$num = ($num - $mod) / <span class=\"number\">32</span>;</span><br><span class=\"line\">\t\t$code = $source_string[$mod].$code;</span><br><span class=\"line\">\t}</span><br><span class=\"line\">\t<span class=\"keyword\">if</span>(<span class=\"keyword\">empty</span>($code[<span class=\"number\">5</span>]))</span><br><span class=\"line\">\t\t$code = str_pad($code,<span class=\"number\">6</span>,<span class=\"string\">'0'</span>,STR_PAD_LEFT);</span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $code;</span><br><span class=\"line\"></span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>对应user_id的唯一邀请码就生成了,再附一个解码函数:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">deReferralCode</span><span class=\"params\">($code)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\">\t<span class=\"keyword\">static</span> $source_string = <span class=\"string\">'E5FCDG3HQA4BNPJ2RSTUV67MWX89KLYZ'</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (strrpos($code, <span class=\"string\">'0'</span>) !== <span class=\"keyword\">false</span>)</span><br><span class=\"line\">\t\t$code = substr($code, strrpos($code, <span class=\"string\">'0'</span>)+<span class=\"number\">1</span>);</span><br><span class=\"line\">\t$len = strlen($code);</span><br><span class=\"line\">\t$code = strrev($code);</span><br><span class=\"line\">\t$num = <span class=\"number\">0</span>;</span><br><span class=\"line\">\t<span class=\"keyword\">for</span> ($i=<span class=\"number\">0</span>; $i < $len; $i++) {</span><br><span class=\"line\">\t\t$num += strpos($source_string, $code[$i]) * pow(<span class=\"number\">32</span>, $i);</span><br><span class=\"line\">\t}</span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $num;</span><br><span class=\"line\"></span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>"},{"title":"git将本地文件推送到Github远程仓库","date":"2018-08-25T02:00:58.000Z","_content":"\n### 1. 在github上创建一个项目:例如 vue-demo\n### 2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库\n`git init`\n\n### 3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件\n`touch .gitignore`\n<!-- more -->\n### 4. 打开文件,编辑内容,例如:\n```bash\nnode_modules/\nupdate.txt\n```\n\n则可以忽略目录下node_modules 文件夹及update.txt 文件.\n\n[配置文件可以在github在线浏览](https://github.com/github/gitignore)\n\n### 5. 添加文件夹下所有文件到暂存区 git add .\n`git add .`\n\n### 6. 把文件提交到仓库\n`git commit -m 'decriptions'`\n\n### 7. 关联远程仓库 (第一次使用需要添加github公钥)\n\n`git remote add origin git@github.com:***/vue2.1-sell.git`\n或者\n`git remote add origin https://github.com/***/vue2.1-sell.git`\n\n### 8. 获取远程库与本地同步(远程仓库不为空需要这一步)\n\n`git pull --rebase origin master`\n\n\n### 9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)\n\n`git push -u origin master`\n\n\n以上内容就可以将本地文件推送到github上,并且可以自己设定不需要上传哪些文件\n","source":"_posts/Git-Push-Local-File-To-Git-Server.md","raw":"---\ntitle: git将本地文件推送到Github远程仓库\ndate: 2018-08-25 10:00:58\ntags:\n- Github\ncategory: Github\n---\n\n### 1. 在github上创建一个项目:例如 vue-demo\n### 2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库\n`git init`\n\n### 3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件\n`touch .gitignore`\n<!-- more -->\n### 4. 打开文件,编辑内容,例如:\n```bash\nnode_modules/\nupdate.txt\n```\n\n则可以忽略目录下node_modules 文件夹及update.txt 文件.\n\n[配置文件可以在github在线浏览](https://github.com/github/gitignore)\n\n### 5. 添加文件夹下所有文件到暂存区 git add .\n`git add .`\n\n### 6. 把文件提交到仓库\n`git commit -m 'decriptions'`\n\n### 7. 关联远程仓库 (第一次使用需要添加github公钥)\n\n`git remote add origin git@github.com:***/vue2.1-sell.git`\n或者\n`git remote add origin https://github.com/***/vue2.1-sell.git`\n\n### 8. 获取远程库与本地同步(远程仓库不为空需要这一步)\n\n`git pull --rebase origin master`\n\n\n### 9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)\n\n`git push -u origin master`\n\n\n以上内容就可以将本地文件推送到github上,并且可以自己设定不需要上传哪些文件\n","slug":"Git-Push-Local-File-To-Git-Server","published":1,"updated":"2018-08-25T02:29:23.033Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbt0008kgvpogugp1qc","content":"<h3 id=\"1-在github上创建一个项目:例如-vue-demo\"><a href=\"#1-在github上创建一个项目:例如-vue-demo\" class=\"headerlink\" title=\"1. 在github上创建一个项目:例如 vue-demo\"></a>1. 在github上创建一个项目:例如 vue-demo</h3><h3 id=\"2-在本地vue-demo-项目中使用-git-init-把其变成git可以管理的仓库\"><a href=\"#2-在本地vue-demo-项目中使用-git-init-把其变成git可以管理的仓库\" class=\"headerlink\" title=\"2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库\"></a>2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库</h3><p><code>git init</code></p>\n<h3 id=\"3-若要忽略本地的文件或文件夹不被提交到github-,则需要在项目根目录下创建-gitignore-文件\"><a href=\"#3-若要忽略本地的文件或文件夹不被提交到github-,则需要在项目根目录下创建-gitignore-文件\" class=\"headerlink\" title=\"3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件\"></a>3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件</h3><p><code>touch .gitignore</code><br><a id=\"more\"></a></p>\n<h3 id=\"4-打开文件,编辑内容,例如:\"><a href=\"#4-打开文件,编辑内容,例如:\" class=\"headerlink\" title=\"4. 打开文件,编辑内容,例如:\"></a>4. 打开文件,编辑内容,例如:</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">node_modules/</span><br><span class=\"line\">update.txt</span><br></pre></td></tr></table></figure>\n<p>则可以忽略目录下node_modules 文件夹及update.txt 文件.</p>\n<p><a href=\"https://github.com/github/gitignore\" target=\"_blank\" rel=\"noopener\">配置文件可以在github在线浏览</a></p>\n<h3 id=\"5-添加文件夹下所有文件到暂存区-git-add\"><a href=\"#5-添加文件夹下所有文件到暂存区-git-add\" class=\"headerlink\" title=\"5. 添加文件夹下所有文件到暂存区 git add .\"></a>5. 添加文件夹下所有文件到暂存区 git add .</h3><p><code>git add .</code></p>\n<h3 id=\"6-把文件提交到仓库\"><a href=\"#6-把文件提交到仓库\" class=\"headerlink\" title=\"6. 把文件提交到仓库\"></a>6. 把文件提交到仓库</h3><p><code>git commit -m 'decriptions'</code></p>\n<h3 id=\"7-关联远程仓库-(第一次使用需要添加github公钥)\"><a href=\"#7-关联远程仓库-(第一次使用需要添加github公钥)\" class=\"headerlink\" title=\"7. 关联远程仓库 (第一次使用需要添加github公钥)\"></a>7. 关联远程仓库 (第一次使用需要添加github公钥)</h3><p><code>git remote add origin git@github.com:***/vue2.1-sell.git</code><br>或者<br><code>git remote add origin https://github.com/***/vue2.1-sell.git</code></p>\n<h3 id=\"8-获取远程库与本地同步(远程仓库不为空需要这一步)\"><a href=\"#8-获取远程库与本地同步(远程仓库不为空需要这一步)\" class=\"headerlink\" title=\"8. 获取远程库与本地同步(远程仓库不为空需要这一步)\"></a>8. 获取远程库与本地同步(远程仓库不为空需要这一步)</h3><p><code>git pull --rebase origin master</code></p>\n<h3 id=\"9-把本地内容推送到远程库-使用-git-push-(第一次需要加-u,后面就不用加了)\"><a href=\"#9-把本地内容推送到远程库-使用-git-push-(第一次需要加-u,后面就不用加了)\" class=\"headerlink\" title=\"9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)\"></a>9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)</h3><p><code>git push -u origin master</code></p>\n<p>以上内容就可以将本地文件推送到github上,并且可以自己设定不需要上传哪些文件</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<h3 id=\"1-在github上创建一个项目:例如-vue-demo\"><a href=\"#1-在github上创建一个项目:例如-vue-demo\" class=\"headerlink\" title=\"1. 在github上创建一个项目:例如 vue-demo\"></a>1. 在github上创建一个项目:例如 vue-demo</h3><h3 id=\"2-在本地vue-demo-项目中使用-git-init-把其变成git可以管理的仓库\"><a href=\"#2-在本地vue-demo-项目中使用-git-init-把其变成git可以管理的仓库\" class=\"headerlink\" title=\"2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库\"></a>2. 在本地vue-demo 项目中使用 git init 把其变成git可以管理的仓库</h3><p><code>git init</code></p>\n<h3 id=\"3-若要忽略本地的文件或文件夹不被提交到github-,则需要在项目根目录下创建-gitignore-文件\"><a href=\"#3-若要忽略本地的文件或文件夹不被提交到github-,则需要在项目根目录下创建-gitignore-文件\" class=\"headerlink\" title=\"3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件\"></a>3. 若要忽略本地的文件或文件夹不被提交到github ,则需要在项目根目录下创建 .gitignore 文件</h3><p><code>touch .gitignore</code><br>","more":"</p>\n<h3 id=\"4-打开文件,编辑内容,例如:\"><a href=\"#4-打开文件,编辑内容,例如:\" class=\"headerlink\" title=\"4. 打开文件,编辑内容,例如:\"></a>4. 打开文件,编辑内容,例如:</h3><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">node_modules/</span><br><span class=\"line\">update.txt</span><br></pre></td></tr></table></figure>\n<p>则可以忽略目录下node_modules 文件夹及update.txt 文件.</p>\n<p><a href=\"https://github.com/github/gitignore\" target=\"_blank\" rel=\"noopener\">配置文件可以在github在线浏览</a></p>\n<h3 id=\"5-添加文件夹下所有文件到暂存区-git-add\"><a href=\"#5-添加文件夹下所有文件到暂存区-git-add\" class=\"headerlink\" title=\"5. 添加文件夹下所有文件到暂存区 git add .\"></a>5. 添加文件夹下所有文件到暂存区 git add .</h3><p><code>git add .</code></p>\n<h3 id=\"6-把文件提交到仓库\"><a href=\"#6-把文件提交到仓库\" class=\"headerlink\" title=\"6. 把文件提交到仓库\"></a>6. 把文件提交到仓库</h3><p><code>git commit -m 'decriptions'</code></p>\n<h3 id=\"7-关联远程仓库-(第一次使用需要添加github公钥)\"><a href=\"#7-关联远程仓库-(第一次使用需要添加github公钥)\" class=\"headerlink\" title=\"7. 关联远程仓库 (第一次使用需要添加github公钥)\"></a>7. 关联远程仓库 (第一次使用需要添加github公钥)</h3><p><code>git remote add origin git@github.com:***/vue2.1-sell.git</code><br>或者<br><code>git remote add origin https://github.com/***/vue2.1-sell.git</code></p>\n<h3 id=\"8-获取远程库与本地同步(远程仓库不为空需要这一步)\"><a href=\"#8-获取远程库与本地同步(远程仓库不为空需要这一步)\" class=\"headerlink\" title=\"8. 获取远程库与本地同步(远程仓库不为空需要这一步)\"></a>8. 获取远程库与本地同步(远程仓库不为空需要这一步)</h3><p><code>git pull --rebase origin master</code></p>\n<h3 id=\"9-把本地内容推送到远程库-使用-git-push-(第一次需要加-u,后面就不用加了)\"><a href=\"#9-把本地内容推送到远程库-使用-git-push-(第一次需要加-u,后面就不用加了)\" class=\"headerlink\" title=\"9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)\"></a>9. 把本地内容推送到远程库 使用 git-push,(第一次需要加-u,后面就不用加了)</h3><p><code>git push -u origin master</code></p>\n<p>以上内容就可以将本地文件推送到github上,并且可以自己设定不需要上传哪些文件</p>"},{"title":"git删除文件夹/文件,但不删除本地文件","date":"2017-12-23T07:28:15.000Z","_content":"\n**实质就是删除缓冲区里的文件,然后再提交给服务器端。**\n1.首先进入要删除的文件夹或文件的根目录下,如E:\\Hexo\n2.执行下面的语句”directory-name”是相对于本地根目录下的文件夹/文件路径\n```github\ngit rm -r --cached directory-name\ngit commit -m 'Remove directory \"directory-name\"'\ngit push origin master\n```\n`git pull --rebase origin master` 这句的意思是:把github上最新的文件下载下来。\n\n","source":"_posts/Github-Delete-Folder-and-Files-But-not-Delete-Local-Files.md","raw":"---\ntitle: 'git删除文件夹/文件,但不删除本地文件'\ndate: 2017-12-23 15:28:15\ntags:\n- Github\ncategory: Github\n---\n\n**实质就是删除缓冲区里的文件,然后再提交给服务器端。**\n1.首先进入要删除的文件夹或文件的根目录下,如E:\\Hexo\n2.执行下面的语句”directory-name”是相对于本地根目录下的文件夹/文件路径\n```github\ngit rm -r --cached directory-name\ngit commit -m 'Remove directory \"directory-name\"'\ngit push origin master\n```\n`git pull --rebase origin master` 这句的意思是:把github上最新的文件下载下来。\n\n","slug":"Github-Delete-Folder-and-Files-But-not-Delete-Local-Files","published":1,"updated":"2018-08-25T02:29:23.037Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmbv000bkgvps4ilkyyh","content":"<p><strong>实质就是删除缓冲区里的文件,然后再提交给服务器端。</strong><br>1.首先进入要删除的文件夹或文件的根目录下,如E:\\Hexo<br>2.执行下面的语句”directory-name”是相对于本地根目录下的文件夹/文件路径<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></pre></td><td class=\"code\"><pre><span class=\"line\">git rm -r --cached directory-name</span><br><span class=\"line\">git commit -m 'Remove directory "directory-name"'</span><br><span class=\"line\">git push origin master</span><br></pre></td></tr></table></figure></p>\n<p><code>git pull --rebase origin master</code> 这句的意思是:把github上最新的文件下载下来。</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<p><strong>实质就是删除缓冲区里的文件,然后再提交给服务器端。</strong><br>1.首先进入要删除的文件夹或文件的根目录下,如E:\\Hexo<br>2.执行下面的语句”directory-name”是相对于本地根目录下的文件夹/文件路径<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></pre></td><td class=\"code\"><pre><span class=\"line\">git rm -r --cached directory-name</span><br><span class=\"line\">git commit -m 'Remove directory "directory-name"'</span><br><span class=\"line\">git push origin master</span><br></pre></td></tr></table></figure></p>\n<p><code>git pull --rebase origin master</code> 这句的意思是:把github上最新的文件下载下来。</p>\n"},{"title":"Git常见问题汇总","date":"2018-08-27T02:26:46.000Z","_content":"\n## 1.Git冲突:commit your changes or stash them before you can merge.\n\n用git pull来更新代码的时候,遇到了下面的问题:\n```bash\nerror: Your local changes to the following files would be overwritten by merge:\n xxx/xxx/xxx.php\nPlease, commit your changes or stash them before you can merge.\nAborting\n```\n出现这个问题的原因是其他人修改了xxx.php并提交到版本库中去了,而你本地也修改了xxx.php,这时候你进行git pull操作就好出现冲突了,解决方法,在上面的提示中也说的很明确了。\n\n<!-- more -->\n### 保留本地的修改 的改法\n\n1)直接commit本地的修改 ----一般不用这种方法\n\n2)通过git stash ---- 通常用这种方法\n```github\ngit stash\ngit pull\ngit stash pop\n```\n然后可以使用git diff -w +文件名 来确认代码自动合并的情况.\n\n通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。\n\ngit stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。\n\ngit stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。\n\ngit stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。\n\ngit stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。\n\n### 放弃本地修改 的改法 ----这种方法会丢弃本地修改的代码,而且不可找回\n```github\ngit reset --hard\ngit pull\n```\n\n\n\n\n","source":"_posts/Git-FAQ.md","raw":"---\ntitle: Git常见问题汇总\ndate: 2018-08-27 10:26:46\ntags:\n- Github\ncategory: Github\n---\n\n## 1.Git冲突:commit your changes or stash them before you can merge.\n\n用git pull来更新代码的时候,遇到了下面的问题:\n```bash\nerror: Your local changes to the following files would be overwritten by merge:\n xxx/xxx/xxx.php\nPlease, commit your changes or stash them before you can merge.\nAborting\n```\n出现这个问题的原因是其他人修改了xxx.php并提交到版本库中去了,而你本地也修改了xxx.php,这时候你进行git pull操作就好出现冲突了,解决方法,在上面的提示中也说的很明确了。\n\n<!-- more -->\n### 保留本地的修改 的改法\n\n1)直接commit本地的修改 ----一般不用这种方法\n\n2)通过git stash ---- 通常用这种方法\n```github\ngit stash\ngit pull\ngit stash pop\n```\n然后可以使用git diff -w +文件名 来确认代码自动合并的情况.\n\n通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。\n\ngit stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。\n\ngit stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。\n\ngit stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。\n\ngit stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。\n\n### 放弃本地修改 的改法 ----这种方法会丢弃本地修改的代码,而且不可找回\n```github\ngit reset --hard\ngit pull\n```\n\n\n\n\n","slug":"Git-FAQ","published":1,"updated":"2018-08-27T02:41:23.743Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmby000ckgvps14jc1rk","content":"<h2 id=\"1-Git冲突:commit-your-changes-or-stash-them-before-you-can-merge\"><a href=\"#1-Git冲突:commit-your-changes-or-stash-them-before-you-can-merge\" class=\"headerlink\" title=\"1.Git冲突:commit your changes or stash them before you can merge.\"></a>1.Git冲突:commit your changes or stash them before you can merge.</h2><p>用git pull来更新代码的时候,遇到了下面的问题:<br><figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\">error: Your <span class=\"built_in\">local</span> changes to the following files would be overwritten by merge:</span><br><span class=\"line\"> xxx/xxx/xxx.php</span><br><span class=\"line\">Please, commit your changes or stash them before you can merge.</span><br><span class=\"line\">Aborting</span><br></pre></td></tr></table></figure></p>\n<p>出现这个问题的原因是其他人修改了xxx.php并提交到版本库中去了,而你本地也修改了xxx.php,这时候你进行git pull操作就好出现冲突了,解决方法,在上面的提示中也说的很明确了。</p>\n<a id=\"more\"></a>\n<h3 id=\"保留本地的修改-的改法\"><a href=\"#保留本地的修改-的改法\" class=\"headerlink\" title=\"保留本地的修改 的改法\"></a>保留本地的修改 的改法</h3><p>1)直接commit本地的修改 —-一般不用这种方法</p>\n<p>2)通过git stash —- 通常用这种方法<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></pre></td><td class=\"code\"><pre><span class=\"line\">git stash</span><br><span class=\"line\">git pull</span><br><span class=\"line\">git stash pop</span><br></pre></td></tr></table></figure></p>\n<p>然后可以使用git diff -w +文件名 来确认代码自动合并的情况.</p>\n<p>通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。</p>\n<p>git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。</p>\n<p>git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。</p>\n<p>git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。</p>\n<p>git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。</p>\n<h3 id=\"放弃本地修改-的改法-—-这种方法会丢弃本地修改的代码,而且不可找回\"><a href=\"#放弃本地修改-的改法-—-这种方法会丢弃本地修改的代码,而且不可找回\" class=\"headerlink\" title=\"放弃本地修改 的改法 —-这种方法会丢弃本地修改的代码,而且不可找回\"></a>放弃本地修改 的改法 —-这种方法会丢弃本地修改的代码,而且不可找回</h3><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">git reset --hard</span><br><span class=\"line\">git pull</span><br></pre></td></tr></table></figure>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<h2 id=\"1-Git冲突:commit-your-changes-or-stash-them-before-you-can-merge\"><a href=\"#1-Git冲突:commit-your-changes-or-stash-them-before-you-can-merge\" class=\"headerlink\" title=\"1.Git冲突:commit your changes or stash them before you can merge.\"></a>1.Git冲突:commit your changes or stash them before you can merge.</h2><p>用git pull来更新代码的时候,遇到了下面的问题:<br><figure class=\"highlight bash\"><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></pre></td><td class=\"code\"><pre><span class=\"line\">error: Your <span class=\"built_in\">local</span> changes to the following files would be overwritten by merge:</span><br><span class=\"line\"> xxx/xxx/xxx.php</span><br><span class=\"line\">Please, commit your changes or stash them before you can merge.</span><br><span class=\"line\">Aborting</span><br></pre></td></tr></table></figure></p>\n<p>出现这个问题的原因是其他人修改了xxx.php并提交到版本库中去了,而你本地也修改了xxx.php,这时候你进行git pull操作就好出现冲突了,解决方法,在上面的提示中也说的很明确了。</p>","more":"<h3 id=\"保留本地的修改-的改法\"><a href=\"#保留本地的修改-的改法\" class=\"headerlink\" title=\"保留本地的修改 的改法\"></a>保留本地的修改 的改法</h3><p>1)直接commit本地的修改 —-一般不用这种方法</p>\n<p>2)通过git stash —- 通常用这种方法<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></pre></td><td class=\"code\"><pre><span class=\"line\">git stash</span><br><span class=\"line\">git pull</span><br><span class=\"line\">git stash pop</span><br></pre></td></tr></table></figure></p>\n<p>然后可以使用git diff -w +文件名 来确认代码自动合并的情况.</p>\n<p>通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。</p>\n<p>git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。</p>\n<p>git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。</p>\n<p>git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。</p>\n<p>git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。</p>\n<h3 id=\"放弃本地修改-的改法-—-这种方法会丢弃本地修改的代码,而且不可找回\"><a href=\"#放弃本地修改-的改法-—-这种方法会丢弃本地修改的代码,而且不可找回\" class=\"headerlink\" title=\"放弃本地修改 的改法 —-这种方法会丢弃本地修改的代码,而且不可找回\"></a>放弃本地修改 的改法 —-这种方法会丢弃本地修改的代码,而且不可找回</h3><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">git reset --hard</span><br><span class=\"line\">git pull</span><br></pre></td></tr></table></figure>"},{"title":"移动端如何让页面强制横屏","date":"2019-03-07T03:31:55.000Z","_content":"### Html页面结构如下: ###\n```html\n<body class=\"webpBack\">\n <div id=\"print\">\n <p>lol</p> \n </div>\n</body>\n```\n<!-- more -->\n### CSS样式 ###\n```css\n@media screen and (orientation: portrait) {\n html{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n overflow : hidden;\n }\n body{\n width : 100% ;\n height : 100% ;\n background-color: red ;\n overflow : hidden;\n }\n #print{\n position : absolute ;\n background-color: yellow ;\n }\n} \n@media screen and (orientation: landscape) {\n html{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n } \n body{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n }\n #print{\n position : absolute ;\n top : 0 ; \n left : 0 ;\n width : 100% ;\n height : 100% ;\n background-color: yellow ;\n }\n}\n#print p{\n margin: auto ;\n margin-top : 20px ;\n text-align: center;\n }\n```\n把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。\n```Javascript\n var width = document.documentElement.clientWidth;\n var height = document.documentElement.clientHeight;\n if( width < height ){\n console.log(width + \" \" + height);\n $print = $('#print');\n $print.width(height);\n $print.height(width);\n $print.css('top', (height-width)/2 );\n $print.css('left', 0-(height-width)/2 );\n $print.css('transform' , 'rotate(90deg)');\n $print.css('transform-origin' , '50% 50%');\n } \n```\n在这里我们先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。\n最后,这么做带来的后果是,如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:\n```Javascript\n var evt = \"onorientationchange\" in window ? \"orientationchange\" : \"resize\";\n window.addEventListener(evt, function() {\n console.log(evt);\n var width = document.documentElement.clientWidth;\n var height = document.documentElement.clientHeight;\n $print = $('#print');\n if( width > height ){\n \n $print.width(width);\n $print.height(height);\n $print.css('top', 0 );\n $print.css('left', 0 );\n $print.css('transform' , 'none');\n $print.css('transform-origin' , '50% 50%');\n }\n else{\n $print.width(height);\n $print.height(width);\n $print.css('top', (height-width)/2 );\n $print.css('left', 0-(height-width)/2 );\n $print.css('transform' , 'rotate(90deg)');\n $print.css('transform-origin' , '50% 50%');\n }\n \n }, false);\n```\n[Demo](https://link.jianshu.com/?t=http://www.chubao.cn/s/godness/index.html)\n\n","source":"_posts/Mobile-Page-Force-to-Landscape.md","raw":"---\ntitle: 移动端如何让页面强制横屏\ndate: 2019-03-07 11:31:55\ntags:\n- CSS3\n- Javascript\ncategory: \n- CSS3 $ Javascript\n---\n### Html页面结构如下: ###\n```html\n<body class=\"webpBack\">\n <div id=\"print\">\n <p>lol</p> \n </div>\n</body>\n```\n<!-- more -->\n### CSS样式 ###\n```css\n@media screen and (orientation: portrait) {\n html{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n overflow : hidden;\n }\n body{\n width : 100% ;\n height : 100% ;\n background-color: red ;\n overflow : hidden;\n }\n #print{\n position : absolute ;\n background-color: yellow ;\n }\n} \n@media screen and (orientation: landscape) {\n html{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n } \n body{\n width : 100% ;\n height : 100% ;\n background-color: white ;\n }\n #print{\n position : absolute ;\n top : 0 ; \n left : 0 ;\n width : 100% ;\n height : 100% ;\n background-color: yellow ;\n }\n}\n#print p{\n margin: auto ;\n margin-top : 20px ;\n text-align: center;\n }\n```\n把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。\n```Javascript\n var width = document.documentElement.clientWidth;\n var height = document.documentElement.clientHeight;\n if( width < height ){\n console.log(width + \" \" + height);\n $print = $('#print');\n $print.width(height);\n $print.height(width);\n $print.css('top', (height-width)/2 );\n $print.css('left', 0-(height-width)/2 );\n $print.css('transform' , 'rotate(90deg)');\n $print.css('transform-origin' , '50% 50%');\n } \n```\n在这里我们先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。\n最后,这么做带来的后果是,如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:\n```Javascript\n var evt = \"onorientationchange\" in window ? \"orientationchange\" : \"resize\";\n window.addEventListener(evt, function() {\n console.log(evt);\n var width = document.documentElement.clientWidth;\n var height = document.documentElement.clientHeight;\n $print = $('#print');\n if( width > height ){\n \n $print.width(width);\n $print.height(height);\n $print.css('top', 0 );\n $print.css('left', 0 );\n $print.css('transform' , 'none');\n $print.css('transform-origin' , '50% 50%');\n }\n else{\n $print.width(height);\n $print.height(width);\n $print.css('top', (height-width)/2 );\n $print.css('left', 0-(height-width)/2 );\n $print.css('transform' , 'rotate(90deg)');\n $print.css('transform-origin' , '50% 50%');\n }\n \n }, false);\n```\n[Demo](https://link.jianshu.com/?t=http://www.chubao.cn/s/godness/index.html)\n\n","slug":"Mobile-Page-Force-to-Landscape","published":1,"updated":"2019-03-07T03:40:53.589Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmc3000gkgvpw7uguf7y","content":"<h3 id=\"Html页面结构如下:\"><a href=\"#Html页面结构如下:\" class=\"headerlink\" title=\"Html页面结构如下:\"></a>Html页面结构如下:</h3><figure class=\"highlight html\"><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></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\"><<span class=\"name\">body</span> <span class=\"attr\">class</span>=<span class=\"string\">\"webpBack\"</span>></span></span><br><span class=\"line\"> <span class=\"tag\"><<span class=\"name\">div</span> <span class=\"attr\">id</span>=<span class=\"string\">\"print\"</span>></span></span><br><span class=\"line\"> <span class=\"tag\"><<span class=\"name\">p</span>></span>lol<span class=\"tag\"></<span class=\"name\">p</span>></span> </span><br><span class=\"line\"> <span class=\"tag\"></<span class=\"name\">div</span>></span></span><br><span class=\"line\"><span class=\"tag\"></<span class=\"name\">body</span>></span></span><br></pre></td></tr></table></figure>\n<a id=\"more\"></a>\n<h3 id=\"CSS样式\"><a href=\"#CSS样式\" class=\"headerlink\" title=\"CSS样式\"></a>CSS样式</h3><figure class=\"highlight css\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@<span class=\"keyword\">media</span> screen and (orientation: portrait) {</span><br><span class=\"line\"> <span class=\"selector-tag\">html</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> <span class=\"attribute\">overflow </span>: hidden;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-tag\">body</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: red ;</span><br><span class=\"line\"> <span class=\"attribute\">overflow </span>: hidden;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-id\">#print</span>{</span><br><span class=\"line\"> <span class=\"attribute\">position </span>: absolute ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: yellow ;</span><br><span class=\"line\"> }</span><br><span class=\"line\">} </span><br><span class=\"line\">@<span class=\"keyword\">media</span> screen and (orientation: landscape) {</span><br><span class=\"line\"> <span class=\"selector-tag\">html</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> } </span><br><span class=\"line\"> <span class=\"selector-tag\">body</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-id\">#print</span>{</span><br><span class=\"line\"> <span class=\"attribute\">position </span>: absolute ;</span><br><span class=\"line\"> <span class=\"attribute\">top </span>: <span class=\"number\">0</span> ; </span><br><span class=\"line\"> <span class=\"attribute\">left </span>: <span class=\"number\">0</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: yellow ;</span><br><span class=\"line\"> }</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"selector-id\">#print</span> <span class=\"selector-tag\">p</span>{</span><br><span class=\"line\"> <span class=\"attribute\">margin</span>: auto ;</span><br><span class=\"line\"> <span class=\"attribute\">margin-top </span>: <span class=\"number\">20px</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">text-align</span>: center;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。<br><figure class=\"highlight javascript\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"> <span class=\"keyword\">var</span> width = <span class=\"built_in\">document</span>.documentElement.clientWidth;</span><br><span class=\"line\"> <span class=\"keyword\">var</span> height = <span class=\"built_in\">document</span>.documentElement.clientHeight;</span><br><span class=\"line\"> <span class=\"keyword\">if</span>( width < height ){</span><br><span class=\"line\"> <span class=\"built_in\">console</span>.log(width + <span class=\"string\">\" \"</span> + height);</span><br><span class=\"line\"> $print = $(<span class=\"string\">'#print'</span>);</span><br><span class=\"line\"> $print.width(height);</span><br><span class=\"line\"> $print.height(width);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, (height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span>-(height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'rotate(90deg)'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>在这里我们先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。<br>最后,这么做带来的后果是,如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:<br><figure class=\"highlight javascript\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">var</span> evt = <span class=\"string\">\"onorientationchange\"</span> <span class=\"keyword\">in</span> <span class=\"built_in\">window</span> ? <span class=\"string\">\"orientationchange\"</span> : <span class=\"string\">\"resize\"</span>;</span><br><span class=\"line\"> <span class=\"built_in\">window</span>.addEventListener(evt, <span class=\"function\"><span class=\"keyword\">function</span>(<span class=\"params\"></span>) </span>{</span><br><span class=\"line\"> <span class=\"built_in\">console</span>.log(evt);</span><br><span class=\"line\"> <span class=\"keyword\">var</span> width = <span class=\"built_in\">document</span>.documentElement.clientWidth;</span><br><span class=\"line\"> <span class=\"keyword\">var</span> height = <span class=\"built_in\">document</span>.documentElement.clientHeight;</span><br><span class=\"line\"> $print = $(<span class=\"string\">'#print'</span>);</span><br><span class=\"line\"> <span class=\"keyword\">if</span>( width > height ){</span><br><span class=\"line\"> </span><br><span class=\"line\"> $print.width(width);</span><br><span class=\"line\"> $print.height(height);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, <span class=\"number\">0</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'none'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">else</span>{</span><br><span class=\"line\"> $print.width(height);</span><br><span class=\"line\"> $print.height(width);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, (height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span>-(height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'rotate(90deg)'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\"> }</span><br><span class=\"line\"> </span><br><span class=\"line\"> }, <span class=\"literal\">false</span>);</span><br></pre></td></tr></table></figure></p>\n<p><a href=\"https://link.jianshu.com/?t=http://www.chubao.cn/s/godness/index.html\" target=\"_blank\" rel=\"noopener\">Demo</a></p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<h3 id=\"Html页面结构如下:\"><a href=\"#Html页面结构如下:\" class=\"headerlink\" title=\"Html页面结构如下:\"></a>Html页面结构如下:</h3><figure class=\"highlight html\"><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></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"tag\"><<span class=\"name\">body</span> <span class=\"attr\">class</span>=<span class=\"string\">\"webpBack\"</span>></span></span><br><span class=\"line\"> <span class=\"tag\"><<span class=\"name\">div</span> <span class=\"attr\">id</span>=<span class=\"string\">\"print\"</span>></span></span><br><span class=\"line\"> <span class=\"tag\"><<span class=\"name\">p</span>></span>lol<span class=\"tag\"></<span class=\"name\">p</span>></span> </span><br><span class=\"line\"> <span class=\"tag\"></<span class=\"name\">div</span>></span></span><br><span class=\"line\"><span class=\"tag\"></<span class=\"name\">body</span>></span></span><br></pre></td></tr></table></figure>","more":"<h3 id=\"CSS样式\"><a href=\"#CSS样式\" class=\"headerlink\" title=\"CSS样式\"></a>CSS样式</h3><figure class=\"highlight css\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">@<span class=\"keyword\">media</span> screen and (orientation: portrait) {</span><br><span class=\"line\"> <span class=\"selector-tag\">html</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> <span class=\"attribute\">overflow </span>: hidden;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-tag\">body</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: red ;</span><br><span class=\"line\"> <span class=\"attribute\">overflow </span>: hidden;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-id\">#print</span>{</span><br><span class=\"line\"> <span class=\"attribute\">position </span>: absolute ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: yellow ;</span><br><span class=\"line\"> }</span><br><span class=\"line\">} </span><br><span class=\"line\">@<span class=\"keyword\">media</span> screen and (orientation: landscape) {</span><br><span class=\"line\"> <span class=\"selector-tag\">html</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> } </span><br><span class=\"line\"> <span class=\"selector-tag\">body</span>{</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: white ;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"selector-id\">#print</span>{</span><br><span class=\"line\"> <span class=\"attribute\">position </span>: absolute ;</span><br><span class=\"line\"> <span class=\"attribute\">top </span>: <span class=\"number\">0</span> ; </span><br><span class=\"line\"> <span class=\"attribute\">left </span>: <span class=\"number\">0</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">width </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">height </span>: <span class=\"number\">100%</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">background-color</span>: yellow ;</span><br><span class=\"line\"> }</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"selector-id\">#print</span> <span class=\"selector-tag\">p</span>{</span><br><span class=\"line\"> <span class=\"attribute\">margin</span>: auto ;</span><br><span class=\"line\"> <span class=\"attribute\">margin-top </span>: <span class=\"number\">20px</span> ;</span><br><span class=\"line\"> <span class=\"attribute\">text-align</span>: center;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>把print这个div在竖屏模式下横过来,横屏状态下不变。所以在portrait下,没定义它的宽高。会通过下面的js来补。<br><figure class=\"highlight javascript\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"> <span class=\"keyword\">var</span> width = <span class=\"built_in\">document</span>.documentElement.clientWidth;</span><br><span class=\"line\"> <span class=\"keyword\">var</span> height = <span class=\"built_in\">document</span>.documentElement.clientHeight;</span><br><span class=\"line\"> <span class=\"keyword\">if</span>( width < height ){</span><br><span class=\"line\"> <span class=\"built_in\">console</span>.log(width + <span class=\"string\">\" \"</span> + height);</span><br><span class=\"line\"> $print = $(<span class=\"string\">'#print'</span>);</span><br><span class=\"line\"> $print.width(height);</span><br><span class=\"line\"> $print.height(width);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, (height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span>-(height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'rotate(90deg)'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>在这里我们先取得了屏幕内可用区域的宽高,然后根据宽高的关系来判断是横屏还是竖屏。如果是竖屏,就把print这个div的宽高设置下,对齐,然后旋转。<br>最后,这么做带来的后果是,如果用户手机的旋转屏幕按钮开着,那么当手机横过来之后,会造成一定的悲剧。解决办法如下:<br><figure class=\"highlight javascript\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">var</span> evt = <span class=\"string\">\"onorientationchange\"</span> <span class=\"keyword\">in</span> <span class=\"built_in\">window</span> ? <span class=\"string\">\"orientationchange\"</span> : <span class=\"string\">\"resize\"</span>;</span><br><span class=\"line\"> <span class=\"built_in\">window</span>.addEventListener(evt, <span class=\"function\"><span class=\"keyword\">function</span>(<span class=\"params\"></span>) </span>{</span><br><span class=\"line\"> <span class=\"built_in\">console</span>.log(evt);</span><br><span class=\"line\"> <span class=\"keyword\">var</span> width = <span class=\"built_in\">document</span>.documentElement.clientWidth;</span><br><span class=\"line\"> <span class=\"keyword\">var</span> height = <span class=\"built_in\">document</span>.documentElement.clientHeight;</span><br><span class=\"line\"> $print = $(<span class=\"string\">'#print'</span>);</span><br><span class=\"line\"> <span class=\"keyword\">if</span>( width > height ){</span><br><span class=\"line\"> </span><br><span class=\"line\"> $print.width(width);</span><br><span class=\"line\"> $print.height(height);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, <span class=\"number\">0</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'none'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">else</span>{</span><br><span class=\"line\"> $print.width(height);</span><br><span class=\"line\"> $print.height(width);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'top'</span>, (height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'left'</span>, <span class=\"number\">0</span>-(height-width)/<span class=\"number\">2</span> );</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform'</span> , <span class=\"string\">'rotate(90deg)'</span>);</span><br><span class=\"line\"> $print.css(<span class=\"string\">'transform-origin'</span> , <span class=\"string\">'50% 50%'</span>);</span><br><span class=\"line\"> }</span><br><span class=\"line\"> </span><br><span class=\"line\"> }, <span class=\"literal\">false</span>);</span><br></pre></td></tr></table></figure></p>\n<p><a href=\"https://link.jianshu.com/?t=http://www.chubao.cn/s/godness/index.html\" target=\"_blank\" rel=\"noopener\">Demo</a></p>"},{"title":"Laravel模型中的动态属性","date":"2018-08-30T06:50:22.000Z","_content":"\nsetxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = 'value'的时候, 操作数据库之前 自动转化一下\n\ngetxxAttribute 在获取xx属性的时候 $obj->xx 会转化\n\n```php\n //获取之前首字母大写\n public function getFirstNameAttribute($value)\n {\n return ucfirst($value);\n }\n //存入之前的改变\n public function setFirstNameAttribute($value)\n {\n $this->attributes['first_name'] = strtolower($value);\n }\n```\n<font color=\"#dd0000\">注意:使用驼峰格式命名</font>\n<!-- more -->\n\n# 一、引入\n一对一关联是很基本的关联。例如一个User模型也许会对应一个Phone。要定义这种关联,我们必须将phone方法放置于User模型上。phone方法应该要返回基类Eloquent上的hasOne方法的结果:\n```php\n<?php\nnamespace App; \nuse Illuminate\\Database\\Eloquent\\Model; \nclass User extends Model \n{ \n\t/** * 获取与指定用户互相关联的电话纪录。 */ \n\tpublic function phone() \n\t{ \n\t\treturn $this->hasOne('App\\Phone'); \n\t} \n}\n```\n传到hasOne方法里的第一个参数是关联模型的类名称。定义好关联之后,我们就可以使用Eloquent的动态属性来获取关联纪录。动态属性让你能够访问关联函数,就像他们是在模型中定义的属性:\n```php\n$phone = User::find(1)->phone;\n```\n但这里只讲了动态属性的最简单的一种形式,也就是调用的属性不存在,但存在同名的方法时,则会调用同名的方法,返回的类型是collection类型(Eloquent的集合)。下文让我们走一遍Laravel的源代码看看还有其他几种不同种类的动态属性。\n# 二、Laravel源代码trace\n## 1、对于动态属性疑问的产生\n在项目的blade里用到了一个方法,但是user的model里并不存在同名的avatar_src()方法,但是存在一个getAvatarSrcAttribute()名字有点像的方法,当时就觉得很懵逼,看代码的确是调用了这个方法,但不知是如何关联起来的,所以想搞明白这里面的逻辑究竟是怎么回事。\n```php\n<a href=\"#\"><img src=\"{{ Auth::user()->avatar_src }}\" alt=\"\"></a>\n```\n## 2、__get()\n那么问题来了,如何追溯?这里需要的一个预备知识是关于PHP的魔术方法__get(),当读取不可访问属性的值时,__get()会被调用。所以决定从这个方法开始进行追溯。具体的方法是在PhpStorm里打开user模型的代码,在菜单栏选择Navigate-File Structure,弹出的框子里勾选Show inherited members,英文输入状态下输入get可以找到我们想要的方法,点进去可以看到__get()方法源代码如下:\n```php\n/** \n* Dynamically retrieve attributes on the model. \n* @param string $key \n* @return mixed \n*/ \npublic function __get($key) \n{ \n\treturn $this->getAttribute($key); \n}\n```\n## 3、getAttribute($key)\n```php\n/** \n* Get an attribute from the model. \n* @param string $key \n* @return mixed\n */ \n public function getAttribute($key) \n { \n\t if (array_key_exists($key, $this->attributes) || $this->hasGetMutator($key)) { \n\t\treturn $this->getAttributeValue($key); \n\t } \n\t return $this->getRelationValue($key); \n }\n```\n第一个if的左半边,如果这个model有这个attribute那么就直接返回,没什么可说的。\n第一个if的右半边mutator是变异体的意思事实上处理了本节开头的疑问,看一下源代码:\n```php\n/** \n* Determine if a get mutator exists for an attribute. \n* @param string $key \n* @return bool \n*/ \npublic function hasGetMutator($key) \n{ \n\treturn method_exists($this, 'get'.Str::studly($key).'Attribute'); \n}\n```\n本方法的作用是判断所调用的这个不存在的属性是否存在“按照一定格式变形的类似名字的方法”。所谓的“一定格式”可以参考Studly caps命名法,对应的源代码:\n```php\n /** \n * Convert a value to studly caps case.\n * @param string $value \n * @return string \n */ \n public static function studly($value) \n { \n\t $key = $value; \n\t if (isset(static::$studlyCache[$key])) \n\t { \n\t\treturn static::$studlyCache[$key]; \n\t } \n\t $value = ucwords(str_replace(['-', '_'], ' ', $value)); \n\t return static::$studlyCache[$key] = str_replace(' ', '', $value); \n }\n```\n注意到经studly caps处理过的-和_都会被去掉。再回到hasGetMutator($key)这个方法,我们可以看到Laravel会尝试去寻找名字形似getStudlyCapsNameAttribute()的方法,如果有的话则会在getAttribute($key)里返回相关的值。第一小节提到的例子对应的方法名我们可以知道当调用这个不存在的属性avatar_src时,Laravel会尝试调用getAvatarSrcAttribute()这个方法,看了下代码果然是存在这个方法的,开始的疑问解决啦~\n## 4、getRelationValue($key)\n\n回到getAttribute($key)这个方法,如果在第一个if里没有返回则会调用getRelationValue($key)这个方法,源代码如下:\n```php\n/** \n* Get a relationship. \n* @param string $key \n* @return mixed \n*/ \npublic function getRelationValue($key) \n{ \n\t// If the key already exists in the relationships array, it just means the \n\t// relationship has already been loaded, so we'll just return it out of \n\t// here because there is no need to query within the relations twice. \n\tif ($this->relationLoaded($key)) \n\t{ \n\t\treturn $this->relations[$key]; \n\t} \n\t// If the \"attribute\" exists as a method on the model, we will just assume \n\t// it is a relationship and will load and return results from the query \n\t// and hydrate the relationship's value on the \"relationships\" array. \n\tif (method_exists($this, $key)) \n\t{ \n\t\treturn $this->getRelationshipFromMethod($key); \n\t} \n}\n```\n第一个if注释写得很清楚了,第二个if就是判断是否存在和所调用属性同名的方法,如果存在则调用getRelationshipFromMethod($key)方法。\n## 5、getRelationshipFromMethod($method)\n\n这个方法比较关键,我们看一下源代码:\n```php\n/** \n* Get a relationship value from a method. \n* @param string $method \n* @return mixed * \n* @throws \\LogicException \n*/ \nprotected function getRelationshipFromMethod($method) \n{ \n\t$relations = $this->$method(); \n\tif (! $relations instanceof Relation) \n\t{ \n\t\tthrow new LogicException('Relationship method must return an object of type ' .'Illuminate\\Database\\Eloquent\\Relations\\Relation'); \n\t} \n\t$this->setRelation($method, $results = $relations->getResults()); \n\treturn $results; \n}\n```\n注意if语句块那里的判断,意味着与属性同名的方法的返回类型必须是Relation类型或者是它的子类,例如hasMany等。所以如果要另外做处理,返回的类型不为Relation的话可以参考第四小节那样的命名法构造相关方法名。另外,setRelation那一行的意思是将没有加载的relation进行加载,那么下次需要时就可以在getRelationValue($key)的第一个if中即返回需要的结果。还有值得注意的是此方法最后的返回值返回的$results是Collection类型,也就是说如果调用不存在的动态属性后返回的是Collection类型,而如果我们直接调用方法返回的则是Relation类型,可以在其上构造查询进一步处理,而再调用getResults()后才能再获得Collection类型的返回值。\n\n\n","source":"_posts/Laravel-Model-Dynamic-Attribute.md","raw":"---\ntitle: Laravel模型中的动态属性\ndate: 2018-08-30 14:50:22\ntags:\n- Laravel\ncategory: \n- Laravel\n---\n\nsetxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = 'value'的时候, 操作数据库之前 自动转化一下\n\ngetxxAttribute 在获取xx属性的时候 $obj->xx 会转化\n\n```php\n //获取之前首字母大写\n public function getFirstNameAttribute($value)\n {\n return ucfirst($value);\n }\n //存入之前的改变\n public function setFirstNameAttribute($value)\n {\n $this->attributes['first_name'] = strtolower($value);\n }\n```\n<font color=\"#dd0000\">注意:使用驼峰格式命名</font>\n<!-- more -->\n\n# 一、引入\n一对一关联是很基本的关联。例如一个User模型也许会对应一个Phone。要定义这种关联,我们必须将phone方法放置于User模型上。phone方法应该要返回基类Eloquent上的hasOne方法的结果:\n```php\n<?php\nnamespace App; \nuse Illuminate\\Database\\Eloquent\\Model; \nclass User extends Model \n{ \n\t/** * 获取与指定用户互相关联的电话纪录。 */ \n\tpublic function phone() \n\t{ \n\t\treturn $this->hasOne('App\\Phone'); \n\t} \n}\n```\n传到hasOne方法里的第一个参数是关联模型的类名称。定义好关联之后,我们就可以使用Eloquent的动态属性来获取关联纪录。动态属性让你能够访问关联函数,就像他们是在模型中定义的属性:\n```php\n$phone = User::find(1)->phone;\n```\n但这里只讲了动态属性的最简单的一种形式,也就是调用的属性不存在,但存在同名的方法时,则会调用同名的方法,返回的类型是collection类型(Eloquent的集合)。下文让我们走一遍Laravel的源代码看看还有其他几种不同种类的动态属性。\n# 二、Laravel源代码trace\n## 1、对于动态属性疑问的产生\n在项目的blade里用到了一个方法,但是user的model里并不存在同名的avatar_src()方法,但是存在一个getAvatarSrcAttribute()名字有点像的方法,当时就觉得很懵逼,看代码的确是调用了这个方法,但不知是如何关联起来的,所以想搞明白这里面的逻辑究竟是怎么回事。\n```php\n<a href=\"#\"><img src=\"{{ Auth::user()->avatar_src }}\" alt=\"\"></a>\n```\n## 2、__get()\n那么问题来了,如何追溯?这里需要的一个预备知识是关于PHP的魔术方法__get(),当读取不可访问属性的值时,__get()会被调用。所以决定从这个方法开始进行追溯。具体的方法是在PhpStorm里打开user模型的代码,在菜单栏选择Navigate-File Structure,弹出的框子里勾选Show inherited members,英文输入状态下输入get可以找到我们想要的方法,点进去可以看到__get()方法源代码如下:\n```php\n/** \n* Dynamically retrieve attributes on the model. \n* @param string $key \n* @return mixed \n*/ \npublic function __get($key) \n{ \n\treturn $this->getAttribute($key); \n}\n```\n## 3、getAttribute($key)\n```php\n/** \n* Get an attribute from the model. \n* @param string $key \n* @return mixed\n */ \n public function getAttribute($key) \n { \n\t if (array_key_exists($key, $this->attributes) || $this->hasGetMutator($key)) { \n\t\treturn $this->getAttributeValue($key); \n\t } \n\t return $this->getRelationValue($key); \n }\n```\n第一个if的左半边,如果这个model有这个attribute那么就直接返回,没什么可说的。\n第一个if的右半边mutator是变异体的意思事实上处理了本节开头的疑问,看一下源代码:\n```php\n/** \n* Determine if a get mutator exists for an attribute. \n* @param string $key \n* @return bool \n*/ \npublic function hasGetMutator($key) \n{ \n\treturn method_exists($this, 'get'.Str::studly($key).'Attribute'); \n}\n```\n本方法的作用是判断所调用的这个不存在的属性是否存在“按照一定格式变形的类似名字的方法”。所谓的“一定格式”可以参考Studly caps命名法,对应的源代码:\n```php\n /** \n * Convert a value to studly caps case.\n * @param string $value \n * @return string \n */ \n public static function studly($value) \n { \n\t $key = $value; \n\t if (isset(static::$studlyCache[$key])) \n\t { \n\t\treturn static::$studlyCache[$key]; \n\t } \n\t $value = ucwords(str_replace(['-', '_'], ' ', $value)); \n\t return static::$studlyCache[$key] = str_replace(' ', '', $value); \n }\n```\n注意到经studly caps处理过的-和_都会被去掉。再回到hasGetMutator($key)这个方法,我们可以看到Laravel会尝试去寻找名字形似getStudlyCapsNameAttribute()的方法,如果有的话则会在getAttribute($key)里返回相关的值。第一小节提到的例子对应的方法名我们可以知道当调用这个不存在的属性avatar_src时,Laravel会尝试调用getAvatarSrcAttribute()这个方法,看了下代码果然是存在这个方法的,开始的疑问解决啦~\n## 4、getRelationValue($key)\n\n回到getAttribute($key)这个方法,如果在第一个if里没有返回则会调用getRelationValue($key)这个方法,源代码如下:\n```php\n/** \n* Get a relationship. \n* @param string $key \n* @return mixed \n*/ \npublic function getRelationValue($key) \n{ \n\t// If the key already exists in the relationships array, it just means the \n\t// relationship has already been loaded, so we'll just return it out of \n\t// here because there is no need to query within the relations twice. \n\tif ($this->relationLoaded($key)) \n\t{ \n\t\treturn $this->relations[$key]; \n\t} \n\t// If the \"attribute\" exists as a method on the model, we will just assume \n\t// it is a relationship and will load and return results from the query \n\t// and hydrate the relationship's value on the \"relationships\" array. \n\tif (method_exists($this, $key)) \n\t{ \n\t\treturn $this->getRelationshipFromMethod($key); \n\t} \n}\n```\n第一个if注释写得很清楚了,第二个if就是判断是否存在和所调用属性同名的方法,如果存在则调用getRelationshipFromMethod($key)方法。\n## 5、getRelationshipFromMethod($method)\n\n这个方法比较关键,我们看一下源代码:\n```php\n/** \n* Get a relationship value from a method. \n* @param string $method \n* @return mixed * \n* @throws \\LogicException \n*/ \nprotected function getRelationshipFromMethod($method) \n{ \n\t$relations = $this->$method(); \n\tif (! $relations instanceof Relation) \n\t{ \n\t\tthrow new LogicException('Relationship method must return an object of type ' .'Illuminate\\Database\\Eloquent\\Relations\\Relation'); \n\t} \n\t$this->setRelation($method, $results = $relations->getResults()); \n\treturn $results; \n}\n```\n注意if语句块那里的判断,意味着与属性同名的方法的返回类型必须是Relation类型或者是它的子类,例如hasMany等。所以如果要另外做处理,返回的类型不为Relation的话可以参考第四小节那样的命名法构造相关方法名。另外,setRelation那一行的意思是将没有加载的relation进行加载,那么下次需要时就可以在getRelationValue($key)的第一个if中即返回需要的结果。还有值得注意的是此方法最后的返回值返回的$results是Collection类型,也就是说如果调用不存在的动态属性后返回的是Collection类型,而如果我们直接调用方法返回的则是Relation类型,可以在其上构造查询进一步处理,而再调用getResults()后才能再获得Collection类型的返回值。\n\n\n","slug":"Laravel-Model-Dynamic-Attribute","published":1,"updated":"2018-08-30T07:23:13.588Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmc6000ikgvpb9tehmq6","content":"<p>setxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = ‘value’的时候, 操作数据库之前 自动转化一下</p>\n<p>getxxAttribute 在获取xx属性的时候 $obj->xx 会转化</p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">//获取之前首字母大写</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getFirstNameAttribute</span><span class=\"params\">($value)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">return</span> ucfirst($value);</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"comment\">//存入之前的改变</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">setFirstNameAttribute</span><span class=\"params\">($value)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->attributes[<span class=\"string\">'first_name'</span>] = strtolower($value);</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>\n<p><font color=\"#dd0000\">注意:使用驼峰格式命名</font><br><a id=\"more\"></a></p>\n<h1 id=\"一、引入\"><a href=\"#一、引入\" class=\"headerlink\" title=\"一、引入\"></a>一、引入</h1><p>一对一关联是很基本的关联。例如一个User模型也许会对应一个Phone。要定义这种关联,我们必须将phone方法放置于User模型上。phone方法应该要返回基类Eloquent上的hasOne方法的结果:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"><span class=\"keyword\">namespace</span> <span class=\"title\">App</span>; </span><br><span class=\"line\"><span class=\"keyword\">use</span> <span class=\"title\">Illuminate</span>\\<span class=\"title\">Database</span>\\<span class=\"title\">Eloquent</span>\\<span class=\"title\">Model</span>; </span><br><span class=\"line\"><span class=\"class\"><span class=\"keyword\">class</span> <span class=\"title\">User</span> <span class=\"keyword\">extends</span> <span class=\"title\">Model</span> </span></span><br><span class=\"line\"><span class=\"class\"></span>{ </span><br><span class=\"line\">\t<span class=\"comment\">/** * 获取与指定用户互相关联的电话纪录。 */</span> </span><br><span class=\"line\">\t<span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">phone</span><span class=\"params\">()</span> </span></span><br><span class=\"line\"><span class=\"function\">\t</span>{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->hasOne(<span class=\"string\">'App\\Phone'</span>); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>传到hasOne方法里的第一个参数是关联模型的类名称。定义好关联之后,我们就可以使用Eloquent的动态属性来获取关联纪录。动态属性让你能够访问关联函数,就像他们是在模型中定义的属性:<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$phone = User::find(<span class=\"number\">1</span>)->phone;</span><br></pre></td></tr></table></figure></p>\n<p>但这里只讲了动态属性的最简单的一种形式,也就是调用的属性不存在,但存在同名的方法时,则会调用同名的方法,返回的类型是collection类型(Eloquent的集合)。下文让我们走一遍Laravel的源代码看看还有其他几种不同种类的动态属性。</p>\n<h1 id=\"二、Laravel源代码trace\"><a href=\"#二、Laravel源代码trace\" class=\"headerlink\" title=\"二、Laravel源代码trace\"></a>二、Laravel源代码trace</h1><h2 id=\"1、对于动态属性疑问的产生\"><a href=\"#1、对于动态属性疑问的产生\" class=\"headerlink\" title=\"1、对于动态属性疑问的产生\"></a>1、对于动态属性疑问的产生</h2><p>在项目的blade里用到了一个方法,但是user的model里并不存在同名的avatar_src()方法,但是存在一个getAvatarSrcAttribute()名字有点像的方法,当时就觉得很懵逼,看代码的确是调用了这个方法,但不知是如何关联起来的,所以想搞明白这里面的逻辑究竟是怎么回事。<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><a href=<span class=\"string\">\"#\"</span>><img src=<span class=\"string\">\"{{ Auth::user()->avatar_src }}\"</span> alt=<span class=\"string\">\"\"</span>></a></span><br></pre></td></tr></table></figure></p>\n<h2 id=\"2、-get\"><a href=\"#2、-get\" class=\"headerlink\" title=\"2、__get()\"></a>2、__get()</h2><p>那么问题来了,如何追溯?这里需要的一个预备知识是关于PHP的魔术方法<strong>get(),当读取不可访问属性的值时,</strong>get()会被调用。所以决定从这个方法开始进行追溯。具体的方法是在PhpStorm里打开user模型的代码,在菜单栏选择Navigate-File Structure,弹出的框子里勾选Show inherited members,英文输入状态下输入get可以找到我们想要的方法,点进去可以看到__get()方法源代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Dynamically retrieve attributes on the model. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">__get</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getAttribute($key); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<h2 id=\"3、getAttribute-key\"><a href=\"#3、getAttribute-key\" class=\"headerlink\" title=\"3、getAttribute($key)\"></a>3、getAttribute($key)</h2><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get an attribute from the model. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed</span></span><br><span class=\"line\"><span class=\"comment\"> */</span> </span><br><span class=\"line\"> <span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getAttribute</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"> </span>{ </span><br><span class=\"line\">\t <span class=\"keyword\">if</span> (array_key_exists($key, <span class=\"keyword\">$this</span>->attributes) || <span class=\"keyword\">$this</span>->hasGetMutator($key)) { </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getAttributeValue($key); </span><br><span class=\"line\">\t } </span><br><span class=\"line\">\t <span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getRelationValue($key); </span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>第一个if的左半边,如果这个model有这个attribute那么就直接返回,没什么可说的。<br>第一个if的右半边mutator是变异体的意思事实上处理了本节开头的疑问,看一下源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Determine if a get mutator exists for an attribute. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> bool </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">hasGetMutator</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> method_exists(<span class=\"keyword\">$this</span>, <span class=\"string\">'get'</span>.Str::studly($key).<span class=\"string\">'Attribute'</span>); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>本方法的作用是判断所调用的这个不存在的属性是否存在“按照一定格式变形的类似名字的方法”。所谓的“一定格式”可以参考Studly caps命名法,对应的源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Convert a value to studly caps case.</span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $value </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> string </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">studly</span><span class=\"params\">($value)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\"> $key = $value; </span><br><span class=\"line\"> <span class=\"keyword\">if</span> (<span class=\"keyword\">isset</span>(<span class=\"keyword\">static</span>::$studlyCache[$key])) </span><br><span class=\"line\"> { </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> <span class=\"keyword\">static</span>::$studlyCache[$key]; </span><br><span class=\"line\"> } </span><br><span class=\"line\"> $value = ucwords(str_replace([<span class=\"string\">'-'</span>, <span class=\"string\">'_'</span>], <span class=\"string\">' '</span>, $value)); </span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">static</span>::$studlyCache[$key] = str_replace(<span class=\"string\">' '</span>, <span class=\"string\">''</span>, $value); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>注意到经studly caps处理过的-和_都会被去掉。再回到hasGetMutator($key)这个方法,我们可以看到Laravel会尝试去寻找名字形似getStudlyCapsNameAttribute()的方法,如果有的话则会在getAttribute($key)里返回相关的值。第一小节提到的例子对应的方法名我们可以知道当调用这个不存在的属性avatar_src时,Laravel会尝试调用getAvatarSrcAttribute()这个方法,看了下代码果然是存在这个方法的,开始的疑问解决啦~</p>\n<h2 id=\"4、getRelationValue-key\"><a href=\"#4、getRelationValue-key\" class=\"headerlink\" title=\"4、getRelationValue($key)\"></a>4、getRelationValue($key)</h2><p>回到getAttribute($key)这个方法,如果在第一个if里没有返回则会调用getRelationValue($key)这个方法,源代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get a relationship. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getRelationValue</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"comment\">// If the key already exists in the relationships array, it just means the </span></span><br><span class=\"line\">\t<span class=\"comment\">// relationship has already been loaded, so we'll just return it out of </span></span><br><span class=\"line\">\t<span class=\"comment\">// here because there is no need to query within the relations twice. </span></span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (<span class=\"keyword\">$this</span>->relationLoaded($key)) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->relations[$key]; </span><br><span class=\"line\">\t} </span><br><span class=\"line\">\t<span class=\"comment\">// If the \"attribute\" exists as a method on the model, we will just assume </span></span><br><span class=\"line\">\t<span class=\"comment\">// it is a relationship and will load and return results from the query </span></span><br><span class=\"line\">\t<span class=\"comment\">// and hydrate the relationship's value on the \"relationships\" array. </span></span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (method_exists(<span class=\"keyword\">$this</span>, $key)) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getRelationshipFromMethod($key); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>第一个if注释写得很清楚了,第二个if就是判断是否存在和所调用属性同名的方法,如果存在则调用getRelationshipFromMethod($key)方法。</p>\n<h2 id=\"5、getRelationshipFromMethod-method\"><a href=\"#5、getRelationshipFromMethod-method\" class=\"headerlink\" title=\"5、getRelationshipFromMethod($method)\"></a>5、getRelationshipFromMethod($method)</h2><p>这个方法比较关键,我们看一下源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get a relationship value from a method. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $method </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed * </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@throws</span> \\LogicException </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">protected</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getRelationshipFromMethod</span><span class=\"params\">($method)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t$relations = <span class=\"keyword\">$this</span>->$method(); </span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (! $relations <span class=\"keyword\">instanceof</span> Relation) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> LogicException(<span class=\"string\">'Relationship method must return an object of type '</span> .<span class=\"string\">'Illuminate\\Database\\Eloquent\\Relations\\Relation'</span>); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">\t<span class=\"keyword\">$this</span>->setRelation($method, $results = $relations->getResults()); </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $results; </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>注意if语句块那里的判断,意味着与属性同名的方法的返回类型必须是Relation类型或者是它的子类,例如hasMany等。所以如果要另外做处理,返回的类型不为Relation的话可以参考第四小节那样的命名法构造相关方法名。另外,setRelation那一行的意思是将没有加载的relation进行加载,那么下次需要时就可以在getRelationValue($key)的第一个if中即返回需要的结果。还有值得注意的是此方法最后的返回值返回的$results是Collection类型,也就是说如果调用不存在的动态属性后返回的是Collection类型,而如果我们直接调用方法返回的则是Relation类型,可以在其上构造查询进一步处理,而再调用getResults()后才能再获得Collection类型的返回值。</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>setxxAttribute 在设置(sql: insert update) 的时候 会将$obj->xx = ‘value’的时候, 操作数据库之前 自动转化一下</p>\n<p>getxxAttribute 在获取xx属性的时候 $obj->xx 会转化</p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">//获取之前首字母大写</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getFirstNameAttribute</span><span class=\"params\">($value)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">return</span> ucfirst($value);</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"comment\">//存入之前的改变</span></span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">setFirstNameAttribute</span><span class=\"params\">($value)</span></span></span><br><span class=\"line\"><span class=\"function\"></span>{</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->attributes[<span class=\"string\">'first_name'</span>] = strtolower($value);</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>\n<p><font color=\"#dd0000\">注意:使用驼峰格式命名</font><br>","more":"</p>\n<h1 id=\"一、引入\"><a href=\"#一、引入\" class=\"headerlink\" title=\"一、引入\"></a>一、引入</h1><p>一对一关联是很基本的关联。例如一个User模型也许会对应一个Phone。要定义这种关联,我们必须将phone方法放置于User模型上。phone方法应该要返回基类Eloquent上的hasOne方法的结果:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"><span class=\"keyword\">namespace</span> <span class=\"title\">App</span>; </span><br><span class=\"line\"><span class=\"keyword\">use</span> <span class=\"title\">Illuminate</span>\\<span class=\"title\">Database</span>\\<span class=\"title\">Eloquent</span>\\<span class=\"title\">Model</span>; </span><br><span class=\"line\"><span class=\"class\"><span class=\"keyword\">class</span> <span class=\"title\">User</span> <span class=\"keyword\">extends</span> <span class=\"title\">Model</span> </span></span><br><span class=\"line\"><span class=\"class\"></span>{ </span><br><span class=\"line\">\t<span class=\"comment\">/** * 获取与指定用户互相关联的电话纪录。 */</span> </span><br><span class=\"line\">\t<span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">phone</span><span class=\"params\">()</span> </span></span><br><span class=\"line\"><span class=\"function\">\t</span>{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->hasOne(<span class=\"string\">'App\\Phone'</span>); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>传到hasOne方法里的第一个参数是关联模型的类名称。定义好关联之后,我们就可以使用Eloquent的动态属性来获取关联纪录。动态属性让你能够访问关联函数,就像他们是在模型中定义的属性:<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$phone = User::find(<span class=\"number\">1</span>)->phone;</span><br></pre></td></tr></table></figure></p>\n<p>但这里只讲了动态属性的最简单的一种形式,也就是调用的属性不存在,但存在同名的方法时,则会调用同名的方法,返回的类型是collection类型(Eloquent的集合)。下文让我们走一遍Laravel的源代码看看还有其他几种不同种类的动态属性。</p>\n<h1 id=\"二、Laravel源代码trace\"><a href=\"#二、Laravel源代码trace\" class=\"headerlink\" title=\"二、Laravel源代码trace\"></a>二、Laravel源代码trace</h1><h2 id=\"1、对于动态属性疑问的产生\"><a href=\"#1、对于动态属性疑问的产生\" class=\"headerlink\" title=\"1、对于动态属性疑问的产生\"></a>1、对于动态属性疑问的产生</h2><p>在项目的blade里用到了一个方法,但是user的model里并不存在同名的avatar_src()方法,但是存在一个getAvatarSrcAttribute()名字有点像的方法,当时就觉得很懵逼,看代码的确是调用了这个方法,但不知是如何关联起来的,所以想搞明白这里面的逻辑究竟是怎么回事。<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><a href=<span class=\"string\">\"#\"</span>><img src=<span class=\"string\">\"{{ Auth::user()->avatar_src }}\"</span> alt=<span class=\"string\">\"\"</span>></a></span><br></pre></td></tr></table></figure></p>\n<h2 id=\"2、-get\"><a href=\"#2、-get\" class=\"headerlink\" title=\"2、__get()\"></a>2、__get()</h2><p>那么问题来了,如何追溯?这里需要的一个预备知识是关于PHP的魔术方法<strong>get(),当读取不可访问属性的值时,</strong>get()会被调用。所以决定从这个方法开始进行追溯。具体的方法是在PhpStorm里打开user模型的代码,在菜单栏选择Navigate-File Structure,弹出的框子里勾选Show inherited members,英文输入状态下输入get可以找到我们想要的方法,点进去可以看到__get()方法源代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Dynamically retrieve attributes on the model. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">__get</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getAttribute($key); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<h2 id=\"3、getAttribute-key\"><a href=\"#3、getAttribute-key\" class=\"headerlink\" title=\"3、getAttribute($key)\"></a>3、getAttribute($key)</h2><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get an attribute from the model. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed</span></span><br><span class=\"line\"><span class=\"comment\"> */</span> </span><br><span class=\"line\"> <span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getAttribute</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"> </span>{ </span><br><span class=\"line\">\t <span class=\"keyword\">if</span> (array_key_exists($key, <span class=\"keyword\">$this</span>->attributes) || <span class=\"keyword\">$this</span>->hasGetMutator($key)) { </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getAttributeValue($key); </span><br><span class=\"line\">\t } </span><br><span class=\"line\">\t <span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getRelationValue($key); </span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>第一个if的左半边,如果这个model有这个attribute那么就直接返回,没什么可说的。<br>第一个if的右半边mutator是变异体的意思事实上处理了本节开头的疑问,看一下源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Determine if a get mutator exists for an attribute. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> bool </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">hasGetMutator</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> method_exists(<span class=\"keyword\">$this</span>, <span class=\"string\">'get'</span>.Str::studly($key).<span class=\"string\">'Attribute'</span>); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>本方法的作用是判断所调用的这个不存在的属性是否存在“按照一定格式变形的类似名字的方法”。所谓的“一定格式”可以参考Studly caps命名法,对应的源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Convert a value to studly caps case.</span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $value </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> string </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">studly</span><span class=\"params\">($value)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\"> $key = $value; </span><br><span class=\"line\"> <span class=\"keyword\">if</span> (<span class=\"keyword\">isset</span>(<span class=\"keyword\">static</span>::$studlyCache[$key])) </span><br><span class=\"line\"> { </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> <span class=\"keyword\">static</span>::$studlyCache[$key]; </span><br><span class=\"line\"> } </span><br><span class=\"line\"> $value = ucwords(str_replace([<span class=\"string\">'-'</span>, <span class=\"string\">'_'</span>], <span class=\"string\">' '</span>, $value)); </span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">static</span>::$studlyCache[$key] = str_replace(<span class=\"string\">' '</span>, <span class=\"string\">''</span>, $value); </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>注意到经studly caps处理过的-和_都会被去掉。再回到hasGetMutator($key)这个方法,我们可以看到Laravel会尝试去寻找名字形似getStudlyCapsNameAttribute()的方法,如果有的话则会在getAttribute($key)里返回相关的值。第一小节提到的例子对应的方法名我们可以知道当调用这个不存在的属性avatar_src时,Laravel会尝试调用getAvatarSrcAttribute()这个方法,看了下代码果然是存在这个方法的,开始的疑问解决啦~</p>\n<h2 id=\"4、getRelationValue-key\"><a href=\"#4、getRelationValue-key\" class=\"headerlink\" title=\"4、getRelationValue($key)\"></a>4、getRelationValue($key)</h2><p>回到getAttribute($key)这个方法,如果在第一个if里没有返回则会调用getRelationValue($key)这个方法,源代码如下:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get a relationship. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $key </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getRelationValue</span><span class=\"params\">($key)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t<span class=\"comment\">// If the key already exists in the relationships array, it just means the </span></span><br><span class=\"line\">\t<span class=\"comment\">// relationship has already been loaded, so we'll just return it out of </span></span><br><span class=\"line\">\t<span class=\"comment\">// here because there is no need to query within the relations twice. </span></span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (<span class=\"keyword\">$this</span>->relationLoaded($key)) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->relations[$key]; </span><br><span class=\"line\">\t} </span><br><span class=\"line\">\t<span class=\"comment\">// If the \"attribute\" exists as a method on the model, we will just assume </span></span><br><span class=\"line\">\t<span class=\"comment\">// it is a relationship and will load and return results from the query </span></span><br><span class=\"line\">\t<span class=\"comment\">// and hydrate the relationship's value on the \"relationships\" array. </span></span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (method_exists(<span class=\"keyword\">$this</span>, $key)) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">return</span> <span class=\"keyword\">$this</span>->getRelationshipFromMethod($key); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>第一个if注释写得很清楚了,第二个if就是判断是否存在和所调用属性同名的方法,如果存在则调用getRelationshipFromMethod($key)方法。</p>\n<h2 id=\"5、getRelationshipFromMethod-method\"><a href=\"#5、getRelationshipFromMethod-method\" class=\"headerlink\" title=\"5、getRelationshipFromMethod($method)\"></a>5、getRelationshipFromMethod($method)</h2><p>这个方法比较关键,我们看一下源代码:<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"comment\">/** </span></span><br><span class=\"line\"><span class=\"comment\">* Get a relationship value from a method. </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@param</span> string $method </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@return</span> mixed * </span></span><br><span class=\"line\"><span class=\"comment\">* <span class=\"doctag\">@throws</span> \\LogicException </span></span><br><span class=\"line\"><span class=\"comment\">*/</span> </span><br><span class=\"line\"><span class=\"keyword\">protected</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">getRelationshipFromMethod</span><span class=\"params\">($method)</span> </span></span><br><span class=\"line\"><span class=\"function\"></span>{ </span><br><span class=\"line\">\t$relations = <span class=\"keyword\">$this</span>->$method(); </span><br><span class=\"line\">\t<span class=\"keyword\">if</span> (! $relations <span class=\"keyword\">instanceof</span> Relation) </span><br><span class=\"line\">\t{ </span><br><span class=\"line\">\t\t<span class=\"keyword\">throw</span> <span class=\"keyword\">new</span> LogicException(<span class=\"string\">'Relationship method must return an object of type '</span> .<span class=\"string\">'Illuminate\\Database\\Eloquent\\Relations\\Relation'</span>); </span><br><span class=\"line\">\t} </span><br><span class=\"line\">\t<span class=\"keyword\">$this</span>->setRelation($method, $results = $relations->getResults()); </span><br><span class=\"line\">\t<span class=\"keyword\">return</span> $results; </span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure></p>\n<p>注意if语句块那里的判断,意味着与属性同名的方法的返回类型必须是Relation类型或者是它的子类,例如hasMany等。所以如果要另外做处理,返回的类型不为Relation的话可以参考第四小节那样的命名法构造相关方法名。另外,setRelation那一行的意思是将没有加载的relation进行加载,那么下次需要时就可以在getRelationValue($key)的第一个if中即返回需要的结果。还有值得注意的是此方法最后的返回值返回的$results是Collection类型,也就是说如果调用不存在的动态属性后返回的是Collection类型,而如果我们直接调用方法返回的则是Relation类型,可以在其上构造查询进一步处理,而再调用getResults()后才能再获得Collection类型的返回值。</p>"},{"title":"Linux VMWare Device eth0 does not seem to be present,delaying initialization","date":"2018-01-11T03:55:40.000Z","_content":"虚拟机Vmware上克隆了一个CentOS Linx启动时发现找不到网卡,在命令窗口启动网络服务就会遇到”Device eth0 does not seem to be present, delaying initialization“错误。\n\n### 错误原因:\n\n克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变。而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息之间的绑定,克隆后的网卡的MAC已经发生了变化,所以导致系统认为网络设备不存在,网络不能正常启动。另外一个就是/etc/sysconfig/network-scripts/ifcfg-eth0里面MAC地址也是以前的旧信息。\n\n<!-- more -->\n\n关于/etc/udev/rules.d/70-persistent-net.rules这个文件,系统在启动时会自动监测变化,然后由/lib/udev/write_net_rules写入到/etc/udev/rules.d/70-persistent-net.rules中一个新的配置节,网卡的的序号依次递增(如原来为eth0,则修改第一后生成一个eth1,再次修改后生成一个eth2...),且其ATTR{address}的值为当前网卡对应的mac地址。 \n\n### 解决方法:\n\n1.编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,将ifcfg-eth0的配置文件里里面以前的关于MAC地址这一行删除掉或修改。另外克隆的服务器的IP设置的是静态IP,要么修改为一个其它的IP地址或设置为动态IP,重启网卡服务。\n\n2.找到/etc/udev/rules.d/70-persistent-net.rules删除后重启机器,系统会自动生成一个70-persistent-net.rules文件。因为这个文件绑定了网卡和MAC地址,换了网卡以后MAC地址变了,所以不能正常启动,也可以直接编辑这个配置文件把里面的网卡和MAC地址修改成对应的,不过这样多麻烦,直接删除重启,它会自动生成个一个新的文件。 ","source":"_posts/Linux-VMWare-Device-eth0-does-not-seem-to-be-present-delaying-initialization.md","raw":"---\ntitle: Linux VMWare Device eth0 does not seem to be present,delaying initialization\ndate: 2018-01-11 11:55:40\ntags:\n- Linux\n- VMWare\n- 网络配置\ncategory:\n- Linux\n---\n虚拟机Vmware上克隆了一个CentOS Linx启动时发现找不到网卡,在命令窗口启动网络服务就会遇到”Device eth0 does not seem to be present, delaying initialization“错误。\n\n### 错误原因:\n\n克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变。而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息之间的绑定,克隆后的网卡的MAC已经发生了变化,所以导致系统认为网络设备不存在,网络不能正常启动。另外一个就是/etc/sysconfig/network-scripts/ifcfg-eth0里面MAC地址也是以前的旧信息。\n\n<!-- more -->\n\n关于/etc/udev/rules.d/70-persistent-net.rules这个文件,系统在启动时会自动监测变化,然后由/lib/udev/write_net_rules写入到/etc/udev/rules.d/70-persistent-net.rules中一个新的配置节,网卡的的序号依次递增(如原来为eth0,则修改第一后生成一个eth1,再次修改后生成一个eth2...),且其ATTR{address}的值为当前网卡对应的mac地址。 \n\n### 解决方法:\n\n1.编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,将ifcfg-eth0的配置文件里里面以前的关于MAC地址这一行删除掉或修改。另外克隆的服务器的IP设置的是静态IP,要么修改为一个其它的IP地址或设置为动态IP,重启网卡服务。\n\n2.找到/etc/udev/rules.d/70-persistent-net.rules删除后重启机器,系统会自动生成一个70-persistent-net.rules文件。因为这个文件绑定了网卡和MAC地址,换了网卡以后MAC地址变了,所以不能正常启动,也可以直接编辑这个配置文件把里面的网卡和MAC地址修改成对应的,不过这样多麻烦,直接删除重启,它会自动生成个一个新的文件。 ","slug":"Linux-VMWare-Device-eth0-does-not-seem-to-be-present-delaying-initialization","published":1,"updated":"2018-08-25T02:29:23.055Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmhq001fkgvpxvm5vfyc","content":"<p>虚拟机Vmware上克隆了一个CentOS Linx启动时发现找不到网卡,在命令窗口启动网络服务就会遇到”Device eth0 does not seem to be present, delaying initialization“错误。</p>\n<h3 id=\"错误原因:\"><a href=\"#错误原因:\" class=\"headerlink\" title=\"错误原因:\"></a>错误原因:</h3><p>克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变。而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息之间的绑定,克隆后的网卡的MAC已经发生了变化,所以导致系统认为网络设备不存在,网络不能正常启动。另外一个就是/etc/sysconfig/network-scripts/ifcfg-eth0里面MAC地址也是以前的旧信息。</p>\n<a id=\"more\"></a>\n<p>关于/etc/udev/rules.d/70-persistent-net.rules这个文件,系统在启动时会自动监测变化,然后由/lib/udev/write_net_rules写入到/etc/udev/rules.d/70-persistent-net.rules中一个新的配置节,网卡的的序号依次递增(如原来为eth0,则修改第一后生成一个eth1,再次修改后生成一个eth2…),且其ATTR{address}的值为当前网卡对应的mac地址。 </p>\n<h3 id=\"解决方法:\"><a href=\"#解决方法:\" class=\"headerlink\" title=\"解决方法:\"></a>解决方法:</h3><p>1.编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,将ifcfg-eth0的配置文件里里面以前的关于MAC地址这一行删除掉或修改。另外克隆的服务器的IP设置的是静态IP,要么修改为一个其它的IP地址或设置为动态IP,重启网卡服务。</p>\n<p>2.找到/etc/udev/rules.d/70-persistent-net.rules删除后重启机器,系统会自动生成一个70-persistent-net.rules文件。因为这个文件绑定了网卡和MAC地址,换了网卡以后MAC地址变了,所以不能正常启动,也可以直接编辑这个配置文件把里面的网卡和MAC地址修改成对应的,不过这样多麻烦,直接删除重启,它会自动生成个一个新的文件。 </p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>虚拟机Vmware上克隆了一个CentOS Linx启动时发现找不到网卡,在命令窗口启动网络服务就会遇到”Device eth0 does not seem to be present, delaying initialization“错误。</p>\n<h3 id=\"错误原因:\"><a href=\"#错误原因:\" class=\"headerlink\" title=\"错误原因:\"></a>错误原因:</h3><p>克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变。而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息之间的绑定,克隆后的网卡的MAC已经发生了变化,所以导致系统认为网络设备不存在,网络不能正常启动。另外一个就是/etc/sysconfig/network-scripts/ifcfg-eth0里面MAC地址也是以前的旧信息。</p>","more":"<p>关于/etc/udev/rules.d/70-persistent-net.rules这个文件,系统在启动时会自动监测变化,然后由/lib/udev/write_net_rules写入到/etc/udev/rules.d/70-persistent-net.rules中一个新的配置节,网卡的的序号依次递增(如原来为eth0,则修改第一后生成一个eth1,再次修改后生成一个eth2…),且其ATTR{address}的值为当前网卡对应的mac地址。 </p>\n<h3 id=\"解决方法:\"><a href=\"#解决方法:\" class=\"headerlink\" title=\"解决方法:\"></a>解决方法:</h3><p>1.编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,将ifcfg-eth0的配置文件里里面以前的关于MAC地址这一行删除掉或修改。另外克隆的服务器的IP设置的是静态IP,要么修改为一个其它的IP地址或设置为动态IP,重启网卡服务。</p>\n<p>2.找到/etc/udev/rules.d/70-persistent-net.rules删除后重启机器,系统会自动生成一个70-persistent-net.rules文件。因为这个文件绑定了网卡和MAC地址,换了网卡以后MAC地址变了,所以不能正常启动,也可以直接编辑这个配置文件把里面的网卡和MAC地址修改成对应的,不过这样多麻烦,直接删除重启,它会自动生成个一个新的文件。 </p>"},{"title":"flush()用法以及ob_flush()和flush()的区别实例详解","date":"2019-01-12T02:13:55.000Z","_content":"\nflush()函数将当前为止程序的所有输出发送到用户的浏览器。\n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n按照php手册里的说法 \n该函数将当前为止程序的所有输出发送到用户的浏览器。 \n上面的这段代码,应该隔一秒钟输出一次$i。但是实际中却不一定是这样。有可能是等了10秒钟后,所有的输出同时呈现出来。 \n<!-- more -->\n好,我们来改一下这段代码,改成 \n```php\n<?php \nob_end_clean();//修改部分 \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n嘿,加了这一句ob_end_clean();,居然就OK了。实际上,我们把ob_end_clean()换成ob_end_flush()也一样OK。 \n我再来改一改。 \n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush();//修改部分 \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n运行一下,是不是发现$i也隔一秒输出一次了?这是为什么呢? \n别急,我们来看看php.ini。 \n打开php.ini,搜索output_buffering,我们会看到类似这样的设置 output_buffering = 4096。正如它的名字output_buffering一样,这个设置的作用就是把输出缓冲一下,缓冲大小为4096bytes. \n在我们的第一段代码里,之所以没有按预期的输出,正是因为这个output_buffering把那些输出都缓冲了。没达到4096bytes或者脚本结束,输出是不会被发送出去的。 \n而第二段代码中的ob_end_clean()和ob_end_flush()的作用,就是终止缓冲。这样就不用等到有4096bytes的缓冲之后才被发送出去了。 \n第三段代码中,用了一句ob_flush(),它的作用就是把缓冲的数据发送出去,但是并不会终止缓冲,所以它必须在每次flush()前使用。 \n如果不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我们就必须把php.ini里的 output_buffering设得足够小,例如设为0。需要注意的是,如果你打算在脚本中使用ini_set(” output_buffering”,”0″)来设置,那么请停下来吧,这种方法是不行的。因为在脚本一开始的时候,缓冲设置就已经被载入,然后缓冲就开始了。 \n可能你会问了,既然ob_flush()是把缓冲的数据发送出去,那么为什么还需要用flush()???直接用下面这段代码不行吗?? \n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush(); \n\tsleep(1); \n} \n?>\n```\n请注意ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。 \n那是不是flush()在这里就是不可缺少的呢?不是的,我们还有另外一种方法,使得当有数据输出的时候,马上被发送到浏览器。下面这两段代码就是不需要使用flush()了。(当你把output_buffering设为0的时候,连ob_flush()和ob_end_clean()都不需要了) \n```php\n<?php \nob_implicit_flush(true); \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush(); \n\tsleep(1); \n} \n?>\n```\n```php\n<?php \nob_end_clean(); \nob_implicit_flush(true); \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tsleep(1); \n} \n?>\n```\n请注意看上面的ob_implicit_flush(true),这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。 \n以上所诉可能在某些浏览器中不成立。因为浏览器也有自己的规则。我是用Firefox1.5,IE6,opera8.5来测试的。其中opera就不能正常输出,因为它有一个规则,就是不遇到一个HTML标签,就绝对不输出,除非到脚本结束。而FireFox和IE还算比较正常的。 \n最后附上一段非常有趣的代码,作者为PuTTYshell。在一个脚本周期里,每次输出,都会把前一次的输出覆盖掉。 \n以下代码只在firefox下可用,其他浏览器并不支持multipart/x-mixed-replace的Content-Type. \n```php\n<?php \nheader('Content-type: multipart/x-mixed-replace;boundary=endofsection'); \nprint \"\\n--endofsection\\n\"; \n$pmt = array(\"-\", \"\\\\\", \"|\", \"/\" ); \nfor( $i = 0; $i <10; $i ++ ){ \n\tsleep(1); \n\tprint \"Content-type: text/plain\\n\\n\"; \n\tprint \"Part $i\\t\".$pmt[$i % 4]; \n\tprint \"--endofsection\\n\"; \n\tob_flush(); \n\tflush(); \n} \nprint \"Content-type: text/plain\\n\\n\"; \nprint \"The end\\n\"; \nprint \"--endofsection--\\n\"; \n?>\n```\n","source":"_posts/PHP-Diffences-Between-flush-and-ob-flush.md","raw":"---\ntitle: flush()用法以及ob_flush()和flush()的区别实例详解\ndate: 2019-01-12 10:13:55\ntags:\n- PHP\n- flush\ncategory:\n- PHP\n---\n\nflush()函数将当前为止程序的所有输出发送到用户的浏览器。\n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n按照php手册里的说法 \n该函数将当前为止程序的所有输出发送到用户的浏览器。 \n上面的这段代码,应该隔一秒钟输出一次$i。但是实际中却不一定是这样。有可能是等了10秒钟后,所有的输出同时呈现出来。 \n<!-- more -->\n好,我们来改一下这段代码,改成 \n```php\n<?php \nob_end_clean();//修改部分 \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n嘿,加了这一句ob_end_clean();,居然就OK了。实际上,我们把ob_end_clean()换成ob_end_flush()也一样OK。 \n我再来改一改。 \n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush();//修改部分 \n\tflush(); \n\tsleep(1); \n} \n?>\n```\n运行一下,是不是发现$i也隔一秒输出一次了?这是为什么呢? \n别急,我们来看看php.ini。 \n打开php.ini,搜索output_buffering,我们会看到类似这样的设置 output_buffering = 4096。正如它的名字output_buffering一样,这个设置的作用就是把输出缓冲一下,缓冲大小为4096bytes. \n在我们的第一段代码里,之所以没有按预期的输出,正是因为这个output_buffering把那些输出都缓冲了。没达到4096bytes或者脚本结束,输出是不会被发送出去的。 \n而第二段代码中的ob_end_clean()和ob_end_flush()的作用,就是终止缓冲。这样就不用等到有4096bytes的缓冲之后才被发送出去了。 \n第三段代码中,用了一句ob_flush(),它的作用就是把缓冲的数据发送出去,但是并不会终止缓冲,所以它必须在每次flush()前使用。 \n如果不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我们就必须把php.ini里的 output_buffering设得足够小,例如设为0。需要注意的是,如果你打算在脚本中使用ini_set(” output_buffering”,”0″)来设置,那么请停下来吧,这种方法是不行的。因为在脚本一开始的时候,缓冲设置就已经被载入,然后缓冲就开始了。 \n可能你会问了,既然ob_flush()是把缓冲的数据发送出去,那么为什么还需要用flush()???直接用下面这段代码不行吗?? \n```php\n<?php \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush(); \n\tsleep(1); \n} \n?>\n```\n请注意ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。 \n那是不是flush()在这里就是不可缺少的呢?不是的,我们还有另外一种方法,使得当有数据输出的时候,马上被发送到浏览器。下面这两段代码就是不需要使用flush()了。(当你把output_buffering设为0的时候,连ob_flush()和ob_end_clean()都不需要了) \n```php\n<?php \nob_implicit_flush(true); \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tob_flush(); \n\tsleep(1); \n} \n?>\n```\n```php\n<?php \nob_end_clean(); \nob_implicit_flush(true); \nfor ($i=10; $i>0; $i--) { \n\techo $i; \n\tsleep(1); \n} \n?>\n```\n请注意看上面的ob_implicit_flush(true),这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。 \n以上所诉可能在某些浏览器中不成立。因为浏览器也有自己的规则。我是用Firefox1.5,IE6,opera8.5来测试的。其中opera就不能正常输出,因为它有一个规则,就是不遇到一个HTML标签,就绝对不输出,除非到脚本结束。而FireFox和IE还算比较正常的。 \n最后附上一段非常有趣的代码,作者为PuTTYshell。在一个脚本周期里,每次输出,都会把前一次的输出覆盖掉。 \n以下代码只在firefox下可用,其他浏览器并不支持multipart/x-mixed-replace的Content-Type. \n```php\n<?php \nheader('Content-type: multipart/x-mixed-replace;boundary=endofsection'); \nprint \"\\n--endofsection\\n\"; \n$pmt = array(\"-\", \"\\\\\", \"|\", \"/\" ); \nfor( $i = 0; $i <10; $i ++ ){ \n\tsleep(1); \n\tprint \"Content-type: text/plain\\n\\n\"; \n\tprint \"Part $i\\t\".$pmt[$i % 4]; \n\tprint \"--endofsection\\n\"; \n\tob_flush(); \n\tflush(); \n} \nprint \"Content-type: text/plain\\n\\n\"; \nprint \"The end\\n\"; \nprint \"--endofsection--\\n\"; \n?>\n```\n","slug":"PHP-Diffences-Between-flush-and-ob-flush","published":1,"updated":"2019-01-12T02:21:31.799Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmht001hkgvpntxr7lh0","content":"<p>flush()函数将当前为止程序的所有输出发送到用户的浏览器。<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>按照php手册里的说法<br>该函数将当前为止程序的所有输出发送到用户的浏览器。<br>上面的这段代码,应该隔一秒钟输出一次$i。但是实际中却不一定是这样。有可能是等了10秒钟后,所有的输出同时呈现出来。<br><a id=\"more\"></a><br>好,我们来改一下这段代码,改成<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_end_clean();<span class=\"comment\">//修改部分 </span></span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>嘿,加了这一句ob_end_clean();,居然就OK了。实际上,我们把ob_end_clean()换成ob_end_flush()也一样OK。<br>我再来改一改。<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush();<span class=\"comment\">//修改部分 </span></span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>运行一下,是不是发现$i也隔一秒输出一次了?这是为什么呢?<br>别急,我们来看看php.ini。<br>打开php.ini,搜索output_buffering,我们会看到类似这样的设置 output_buffering = 4096。正如它的名字output_buffering一样,这个设置的作用就是把输出缓冲一下,缓冲大小为4096bytes.<br>在我们的第一段代码里,之所以没有按预期的输出,正是因为这个output_buffering把那些输出都缓冲了。没达到4096bytes或者脚本结束,输出是不会被发送出去的。<br>而第二段代码中的ob_end_clean()和ob_end_flush()的作用,就是终止缓冲。这样就不用等到有4096bytes的缓冲之后才被发送出去了。<br>第三段代码中,用了一句ob_flush(),它的作用就是把缓冲的数据发送出去,但是并不会终止缓冲,所以它必须在每次flush()前使用。<br>如果不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我们就必须把php.ini里的 output_buffering设得足够小,例如设为0。需要注意的是,如果你打算在脚本中使用ini_set(” output_buffering”,”0″)来设置,那么请停下来吧,这种方法是不行的。因为在脚本一开始的时候,缓冲设置就已经被载入,然后缓冲就开始了。<br>可能你会问了,既然ob_flush()是把缓冲的数据发送出去,那么为什么还需要用flush()???直接用下面这段代码不行吗??<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>请注意ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。<br>那是不是flush()在这里就是不可缺少的呢?不是的,我们还有另外一种方法,使得当有数据输出的时候,马上被发送到浏览器。下面这两段代码就是不需要使用flush()了。(当你把output_buffering设为0的时候,连ob_flush()和ob_end_clean()都不需要了)<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_implicit_flush(<span class=\"keyword\">true</span>); </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_end_clean(); </span><br><span class=\"line\">ob_implicit_flush(<span class=\"keyword\">true</span>); </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure>\n<p>请注意看上面的ob_implicit_flush(true),这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。<br>以上所诉可能在某些浏览器中不成立。因为浏览器也有自己的规则。我是用Firefox1.5,IE6,opera8.5来测试的。其中opera就不能正常输出,因为它有一个规则,就是不遇到一个HTML标签,就绝对不输出,除非到脚本结束。而FireFox和IE还算比较正常的。<br>最后附上一段非常有趣的代码,作者为PuTTYshell。在一个脚本周期里,每次输出,都会把前一次的输出覆盖掉。<br>以下代码只在firefox下可用,其他浏览器并不支持multipart/x-mixed-replace的Content-Type.<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">header(<span class=\"string\">'Content-type: multipart/x-mixed-replace;boundary=endofsection'</span>); </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"\\n--endofsection\\n\"</span>; </span><br><span class=\"line\">$pmt = <span class=\"keyword\">array</span>(<span class=\"string\">\"-\"</span>, <span class=\"string\">\"\\\\\"</span>, <span class=\"string\">\"|\"</span>, <span class=\"string\">\"/\"</span> ); </span><br><span class=\"line\"><span class=\"keyword\">for</span>( $i = <span class=\"number\">0</span>; $i <<span class=\"number\">10</span>; $i ++ ){ </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"Content-type: text/plain\\n\\n\"</span>; </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"Part $i\\t\"</span>.$pmt[$i % <span class=\"number\">4</span>]; </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"--endofsection\\n\"</span>; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"Content-type: text/plain\\n\\n\"</span>; </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"The end\\n\"</span>; </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"--endofsection--\\n\"</span>; </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>flush()函数将当前为止程序的所有输出发送到用户的浏览器。<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>按照php手册里的说法<br>该函数将当前为止程序的所有输出发送到用户的浏览器。<br>上面的这段代码,应该隔一秒钟输出一次$i。但是实际中却不一定是这样。有可能是等了10秒钟后,所有的输出同时呈现出来。<br>","more":"<br>好,我们来改一下这段代码,改成<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_end_clean();<span class=\"comment\">//修改部分 </span></span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>嘿,加了这一句ob_end_clean();,居然就OK了。实际上,我们把ob_end_clean()换成ob_end_flush()也一样OK。<br>我再来改一改。<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush();<span class=\"comment\">//修改部分 </span></span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>运行一下,是不是发现$i也隔一秒输出一次了?这是为什么呢?<br>别急,我们来看看php.ini。<br>打开php.ini,搜索output_buffering,我们会看到类似这样的设置 output_buffering = 4096。正如它的名字output_buffering一样,这个设置的作用就是把输出缓冲一下,缓冲大小为4096bytes.<br>在我们的第一段代码里,之所以没有按预期的输出,正是因为这个output_buffering把那些输出都缓冲了。没达到4096bytes或者脚本结束,输出是不会被发送出去的。<br>而第二段代码中的ob_end_clean()和ob_end_flush()的作用,就是终止缓冲。这样就不用等到有4096bytes的缓冲之后才被发送出去了。<br>第三段代码中,用了一句ob_flush(),它的作用就是把缓冲的数据发送出去,但是并不会终止缓冲,所以它必须在每次flush()前使用。<br>如果不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我们就必须把php.ini里的 output_buffering设得足够小,例如设为0。需要注意的是,如果你打算在脚本中使用ini_set(” output_buffering”,”0″)来设置,那么请停下来吧,这种方法是不行的。因为在脚本一开始的时候,缓冲设置就已经被载入,然后缓冲就开始了。<br>可能你会问了,既然ob_flush()是把缓冲的数据发送出去,那么为什么还需要用flush()???直接用下面这段代码不行吗??<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<p>请注意ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。<br>那是不是flush()在这里就是不可缺少的呢?不是的,我们还有另外一种方法,使得当有数据输出的时候,马上被发送到浏览器。下面这两段代码就是不需要使用flush()了。(当你把output_buffering设为0的时候,连ob_flush()和ob_end_clean()都不需要了)<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_implicit_flush(<span class=\"keyword\">true</span>); </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">ob_end_clean(); </span><br><span class=\"line\">ob_implicit_flush(<span class=\"keyword\">true</span>); </span><br><span class=\"line\"><span class=\"keyword\">for</span> ($i=<span class=\"number\">10</span>; $i><span class=\"number\">0</span>; $i--) { </span><br><span class=\"line\">\t<span class=\"keyword\">echo</span> $i; </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure>\n<p>请注意看上面的ob_implicit_flush(true),这个函数强制每当有输出的时候,即刻把输出发送到浏览器。这样就不需要每次输出(echo)后,都用flush()来发送到浏览器了。<br>以上所诉可能在某些浏览器中不成立。因为浏览器也有自己的规则。我是用Firefox1.5,IE6,opera8.5来测试的。其中opera就不能正常输出,因为它有一个规则,就是不遇到一个HTML标签,就绝对不输出,除非到脚本结束。而FireFox和IE还算比较正常的。<br>最后附上一段非常有趣的代码,作者为PuTTYshell。在一个脚本周期里,每次输出,都会把前一次的输出覆盖掉。<br>以下代码只在firefox下可用,其他浏览器并不支持multipart/x-mixed-replace的Content-Type.<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span> </span><br><span class=\"line\">header(<span class=\"string\">'Content-type: multipart/x-mixed-replace;boundary=endofsection'</span>); </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"\\n--endofsection\\n\"</span>; </span><br><span class=\"line\">$pmt = <span class=\"keyword\">array</span>(<span class=\"string\">\"-\"</span>, <span class=\"string\">\"\\\\\"</span>, <span class=\"string\">\"|\"</span>, <span class=\"string\">\"/\"</span> ); </span><br><span class=\"line\"><span class=\"keyword\">for</span>( $i = <span class=\"number\">0</span>; $i <<span class=\"number\">10</span>; $i ++ ){ </span><br><span class=\"line\">\tsleep(<span class=\"number\">1</span>); </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"Content-type: text/plain\\n\\n\"</span>; </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"Part $i\\t\"</span>.$pmt[$i % <span class=\"number\">4</span>]; </span><br><span class=\"line\">\t<span class=\"keyword\">print</span> <span class=\"string\">\"--endofsection\\n\"</span>; </span><br><span class=\"line\">\tob_flush(); </span><br><span class=\"line\">\tflush(); </span><br><span class=\"line\">} </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"Content-type: text/plain\\n\\n\"</span>; </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"The end\\n\"</span>; </span><br><span class=\"line\"><span class=\"keyword\">print</span> <span class=\"string\">\"--endofsection--\\n\"</span>; </span><br><span class=\"line\"><span class=\"meta\">?></span></span><br></pre></td></tr></table></figure></p>"},{"title":"PHP防止跨域提交表单[非 http_referer 验证]","date":"2018-01-31T01:00:11.000Z","_content":"PHP开发中跨域表单提交解决办法,网上很多办法都是这样写的,通过判断HTTP_REFERER来验证来源,这个等于没做,别人既然都知道跨域提交了,随便写一段代码就模拟出referer,而你写的这一段验证等于0,下面介绍一个不通过使用验证码的手段来验证跨域提交,使用 session+token 验证\n\n我们通过使用 session+token 凭证来设置一段 form 的唯一性,为每一个form都生成一个随机并加密的 token 验证数据,当完成提交,我们就销毁掉这个 token 从而达到form的有效性只有一次\n\n<!-- more -->\n\n1.编辑 form.php,开启session,并产生一个加密token保存到 session 中,并在form表单中加入一个隐藏域用来提交token\n``` php\n<?php\n session_start();\n $token = md5(mt_rand());\n $_SESSION['token'] = $token;\n?>\n<form action=\"form.php\" method=\"post\">\n<input type=\"text\" name=\"name\">\n<input type=\"hidden\" name=\"token\" value=\"<?php echo $token?>\">\n<input type=\"submit\" value=\"submit\">\n</form>\n```\n\n2.编辑 post.php, 首先验证 token 是否合法,合法则处理请求,并销毁token,不合法则提示 bad request\n\n``` php\n<?php\nif(isset($_POST['token'])){\n if($_POST['token'] == $_SESSION['token']){\n echo $_POST['name'];\n unset($_SESSION['token']);\n }else{\n echo 'bad request<br>';\n }\n}\n```\n\n","source":"_posts/PHP-Prevent-Cross-Domain-Submit-Form.md","raw":"---\ntitle: PHP防止跨域提交表单[非 http_referer 验证]\ndate: 2018-01-31 09:00:11\ntags:\n- PHP\n- Cross Domain\ncategory:\n- PHP\n---\nPHP开发中跨域表单提交解决办法,网上很多办法都是这样写的,通过判断HTTP_REFERER来验证来源,这个等于没做,别人既然都知道跨域提交了,随便写一段代码就模拟出referer,而你写的这一段验证等于0,下面介绍一个不通过使用验证码的手段来验证跨域提交,使用 session+token 验证\n\n我们通过使用 session+token 凭证来设置一段 form 的唯一性,为每一个form都生成一个随机并加密的 token 验证数据,当完成提交,我们就销毁掉这个 token 从而达到form的有效性只有一次\n\n<!-- more -->\n\n1.编辑 form.php,开启session,并产生一个加密token保存到 session 中,并在form表单中加入一个隐藏域用来提交token\n``` php\n<?php\n session_start();\n $token = md5(mt_rand());\n $_SESSION['token'] = $token;\n?>\n<form action=\"form.php\" method=\"post\">\n<input type=\"text\" name=\"name\">\n<input type=\"hidden\" name=\"token\" value=\"<?php echo $token?>\">\n<input type=\"submit\" value=\"submit\">\n</form>\n```\n\n2.编辑 post.php, 首先验证 token 是否合法,合法则处理请求,并销毁token,不合法则提示 bad request\n\n``` php\n<?php\nif(isset($_POST['token'])){\n if($_POST['token'] == $_SESSION['token']){\n echo $_POST['name'];\n unset($_SESSION['token']);\n }else{\n echo 'bad request<br>';\n }\n}\n```\n\n","slug":"PHP-Prevent-Cross-Domain-Submit-Form","published":1,"updated":"2018-08-25T02:29:23.065Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmhx001lkgvpgmr2in2q","content":"<p>PHP开发中跨域表单提交解决办法,网上很多办法都是这样写的,通过判断HTTP_REFERER来验证来源,这个等于没做,别人既然都知道跨域提交了,随便写一段代码就模拟出referer,而你写的这一段验证等于0,下面介绍一个不通过使用验证码的手段来验证跨域提交,使用 session+token 验证</p>\n<p>我们通过使用 session+token 凭证来设置一段 form 的唯一性,为每一个form都生成一个随机并加密的 token 验证数据,当完成提交,我们就销毁掉这个 token 从而达到form的有效性只有一次</p>\n<a id=\"more\"></a>\n<p>1.编辑 form.php,开启session,并产生一个加密token保存到 session 中,并在form表单中加入一个隐藏域用来提交token<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"> session_start();</span><br><span class=\"line\"> $token = md5(mt_rand());</span><br><span class=\"line\"> $_SESSION[<span class=\"string\">'token'</span>] = $token;</span><br><span class=\"line\"><span class=\"meta\">?></span></span><br><span class=\"line\"><form action=<span class=\"string\">\"form.php\"</span> method=<span class=\"string\">\"post\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"text\"</span> name=<span class=\"string\">\"name\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"hidden\"</span> name=<span class=\"string\">\"token\"</span> value=<span class=\"string\">\"<?php echo $token?>\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"submit\"</span> value=<span class=\"string\">\"submit\"</span>></span><br><span class=\"line\"></form></span><br></pre></td></tr></table></figure></p>\n<p>2.编辑 post.php, 首先验证 token 是否合法,合法则处理请求,并销毁token,不合法则提示 bad request</p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"><span class=\"keyword\">if</span>(<span class=\"keyword\">isset</span>($_POST[<span class=\"string\">'token'</span>])){</span><br><span class=\"line\"> <span class=\"keyword\">if</span>($_POST[<span class=\"string\">'token'</span>] == $_SESSION[<span class=\"string\">'token'</span>]){</span><br><span class=\"line\"> <span class=\"keyword\">echo</span> $_POST[<span class=\"string\">'name'</span>];</span><br><span class=\"line\"> <span class=\"keyword\">unset</span>($_SESSION[<span class=\"string\">'token'</span>]);</span><br><span class=\"line\"> }<span class=\"keyword\">else</span>{</span><br><span class=\"line\"> <span class=\"keyword\">echo</span> <span class=\"string\">'bad request<br>'</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>PHP开发中跨域表单提交解决办法,网上很多办法都是这样写的,通过判断HTTP_REFERER来验证来源,这个等于没做,别人既然都知道跨域提交了,随便写一段代码就模拟出referer,而你写的这一段验证等于0,下面介绍一个不通过使用验证码的手段来验证跨域提交,使用 session+token 验证</p>\n<p>我们通过使用 session+token 凭证来设置一段 form 的唯一性,为每一个form都生成一个随机并加密的 token 验证数据,当完成提交,我们就销毁掉这个 token 从而达到form的有效性只有一次</p>","more":"<p>1.编辑 form.php,开启session,并产生一个加密token保存到 session 中,并在form表单中加入一个隐藏域用来提交token<br><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"> session_start();</span><br><span class=\"line\"> $token = md5(mt_rand());</span><br><span class=\"line\"> $_SESSION[<span class=\"string\">'token'</span>] = $token;</span><br><span class=\"line\"><span class=\"meta\">?></span></span><br><span class=\"line\"><form action=<span class=\"string\">\"form.php\"</span> method=<span class=\"string\">\"post\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"text\"</span> name=<span class=\"string\">\"name\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"hidden\"</span> name=<span class=\"string\">\"token\"</span> value=<span class=\"string\">\"<?php echo $token?>\"</span>></span><br><span class=\"line\"><input type=<span class=\"string\">\"submit\"</span> value=<span class=\"string\">\"submit\"</span>></span><br><span class=\"line\"></form></span><br></pre></td></tr></table></figure></p>\n<p>2.编辑 post.php, 首先验证 token 是否合法,合法则处理请求,并销毁token,不合法则提示 bad request</p>\n<figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"meta\"><?php</span></span><br><span class=\"line\"><span class=\"keyword\">if</span>(<span class=\"keyword\">isset</span>($_POST[<span class=\"string\">'token'</span>])){</span><br><span class=\"line\"> <span class=\"keyword\">if</span>($_POST[<span class=\"string\">'token'</span>] == $_SESSION[<span class=\"string\">'token'</span>]){</span><br><span class=\"line\"> <span class=\"keyword\">echo</span> $_POST[<span class=\"string\">'name'</span>];</span><br><span class=\"line\"> <span class=\"keyword\">unset</span>($_SESSION[<span class=\"string\">'token'</span>]);</span><br><span class=\"line\"> }<span class=\"keyword\">else</span>{</span><br><span class=\"line\"> <span class=\"keyword\">echo</span> <span class=\"string\">'bad request<br>'</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\">}</span><br></pre></td></tr></table></figure>"},{"title":"PHP接入诺诺电子发票","date":"2021-03-16T01:36:31.000Z","_content":"# 前期准备111\n\n首先开票公司必须使用的是航天信息的开票系统,有航天信息提供的开票软件客户端、金税盘等。然后要在诺诺电子发票服务平台注册企业账号,注意是企业账号,不是个人账号,地址:[https://fp.jss.com.cn](https://fp.jss.com.cn/) ,如果要开电票的话(诺诺发票服务平台也可以开普票纸票和专票),可能还要去税务局找航信公司人员办理电子签章等,航信一般在当地税务局有窗口办理业务。\n\n\n注册和签章做完后,可以登录诺诺电子发票服务平台工作台。\n<!-- more -->\n这里还是简单介绍一下诺诺的各平台吧。\n1.电子发票服务平台,诺诺提供的在线开票和发票管理平台,这里可以直接开票,前提是你已经办好了上述的一些手续,电子发票服务平台的工作台,可以直接开票,注意,这里不光可以开电子发票,还可以开纸质普票,专票,可以选择开票类型。\n\n2.诺诺开放平台,如果你不使用诺诺提供的电子发票服务平台,或者要将电子发票引入到你自己的业务系统,那就要使用诺诺开放平台,地址:[https://open.jss.com.cn](https://open.jss.com.cn/) ,账号是通用的,可直接登录诺诺开放平台,在应用管理中,创建应用,一般应用类型是自用型应用,然后会分别给一个正式环境和沙箱环境的appkey和APP Secret,开放平台提供了开发文档和sdk,使用都很简单。\n\n这里要注意,先去看文档找接口,那最重要的就是开票接口,平台的文档里没有开票接口文档,只有在注册了账号,创建了应用后,查看应用中提供了开票接口的文档……\n\n3.诺诺开票软件,诺诺发票,诺诺电子发票等客户端,这些都是财务使用的,也许有的\n财务只用其中一个或2个,所有这些客户端都需要插上金税盘。\n\n\n# 开票流程\n## 普通的开票:\n公司财务直接在开票软件中开了,开票时填写开票信息等,如果开通了电子发票,开票软件中也可以开电子发票,开完后不用打印,直接将电子发票发送到开票信息中提供的手机和邮箱中了,也会提供电子发票的下载地址。\n\n使用电子发票服务平台开票:\n1.在公司财务电脑(有金税盘的)上打开诺诺发票,开启开票服务,然后数据就会在发票服务平台和公司财务的开票软件之间同步,下图是诺诺发票客户端开启发票服务的状态。\n2.登录电子发票服务平台工作台,点击发票填开,填写发票信息,发票类型。提交开票。提交的时候会请求公司的财务电脑的诺诺发票同步数据,如果请求不成功,会提示相应的错误,如果请求成功,开票状态是待开。\n3.如果是纸票和专票,在公司财务电脑上打开开票软件,发票管理或者开票界面导入中,有从电子发票服务平台提交过来的开票信息,导入打印开票。开票完成后,数据会同步到电子发票服务平台中,刷新的话发票状态已经变成开票完成了。如果是电子发票,同样会请求公司财务电脑诺诺发票,不过不需要手动打印开票,而是请求电子签章,完成后同样将数据同步回去。\n所以公司的诺诺发票软件要一直保持开启开票服务的状态,不然无法从电子发票服务平台(也包括开放平台api)提交发票,但是有时候财务人员会拿金税盘到税务去办相关的业务,金税盘不插的话,诺诺发票和开票软件等客户端肯定无法正常使用,而且财务的电脑也不是服务器,也不可能一直保持开机状态,这种情况可能需要使用分机,办理了分机的话,会有一个分机税盘,然后要配置分机,这个可以下载一个诺言客户端咨询客服,客服会通过远程给协助配置。\n\n## 开放平台开票:\n搞清楚电子发票服务平台后,那使用开放平台api就简单了,自己的业务系统中使用开发平台接口所完成的功能其实就是电子发票服务平台提供的功能的简化版,只是把一些功能通过api加到自己的业务系统中了,所以使用开放平台api开票,首先要调试电子发票服务平台能不能开票成功,如果电子发票服务平台开票不成功,api接口也不会调试成功!\n\n所以,不管是电子发票服务平台,还是开放平台,最终开票请求都通过诺诺提交到了公司财务的开票电脑上了,开票电脑完成开票后返回开票的结果。\n\n### PHP实现\n这个就很简单了,主要使用三个接口:获取access_token,开票和查询,下载php的sdk。直接上代码:\n```php\nrequire_once \"../nuonuo/lib/Api.php\";\n```\n#### 获取access_token:\n```php\n$appKey = C('invoice.appKey');\n$appSecret = C('invoice.appSecret');\ntry {\n $token = Api::getMerchantToken($appKey, $appSecret);\n} catch (Exception $e) {\n return false;\n}\nif (!isJson($token)) {\n return false;\n}\n$token = json_decode($token);\nif (!isset($token->access_token) || !isset($token->expires_in)) {\n return false;\n}\nreturn $token->access_token;\n```\n注意:access_token的调用限制是30天50次,需要本地缓存起来,在有效期内重复使用。\n\n#### 开票请求:\n```php\npublic function request() {\n $appKey = C('invoice.appKey');\n $appSecret = C('invoice.appSecret');\n $token = self::getMerchantToken();\n $taxnum = C('invoice.salerTaxNum');\n $url = C('invoice.url');\n $method = \"nuonuo.electronInvoice.requestBilling\";\n $senid = $this->senid;\n $body = json_encode(\n array(\n 'order' => array(\n 'buyerName' => stripslashes($this->buyerName),\n 'buyerTaxNum' => $this->buyerTaxNum,\n 'buyerTel' => $this->buyerTel,\n 'buyerAddress' => stripslashes($this->buyerAddress),\n 'buyerAccount' => stripslashes($this->buyerAccount),\n 'orderNo' => $this->orderNo,\n 'invoiceDate' => $this->invoiceDate,\n 'clerk' => $this->clerk,\n 'payee' => C('invoice.payee'),\n 'checker' => C('invoice.checker'),\n 'salerTaxNum' => $this->salerTaxNum,\n 'salerTel' => $this->salerTel,\n 'salerAddress' => $this->salerAddress,\n 'salerAccount' => $this->salerAccount,\n 'invoiceType' => $this->invoiceType,\n 'pushMode' => $this->pushMode,\n 'buyerPhone' => $this->buyerPhone,\n 'email' => $this->email,\n 'invoiceLine' => $this->invoiceLine,\n 'invoiceDetail' => array(\n 'goodsName' => $this->goodsName,\n 'goodsCode' => $this->goodsCode,\n 'num' => $this->num,\n 'price' => $this->price,\n 'taxIncludedAmount' => $this->taxIncludedAmount,\n 'withTaxFlag' => $this->withTaxFlag,\n 'taxRate' => $this->taxRate,\n )\n )\n )\n );\n try {\n $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);\n } catch (Exception $e) {\n $this->message = $e->getMessage();\n return false;\n }\n if (!isJson($res)) {\n $this->message = '发票请求失败';\n return false;\n }\n $res = json_decode($res);\n if ($res->code !== 'E0000') {\n $this->message = $res->describe;\n return false;\n }\n if (!isset($res->result->invoiceSerialNum)) {\n $this->message = '未收到发票流水号';\n return false;\n }\n $this->invoiceSerialNum = $res->result->invoiceSerialNum;\n $this->update_field(array('invoiceSerialNum'));\n return true;\n }\n```\n注意:请求成功后,保存返回的发票流水号,用来查询开票结果。\n#### 查询结果:\n```php\npublic static function queryInvoice(array $serialNos) {\n $appKey = C('invoice.appKey');\n $appSecret = C('invoice.appSecret');\n $token = self::getMerchantToken();\n $taxnum = C('invoice.salerTaxNum');\n $url = C('invoice.url');\n $method = \"nuonuo.ElectronInvoice.queryInvoiceResult\";\n $senid = uniqid();\n\n $body = json_encode(array(\n 'serialNos' => $serialNos,\n ));\n try {\n $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);\n } catch (Exception $e) {\n return false;\n }\n if (!isJson($res)) {\n return false;\n }\n $res = json_decode($res);\n if ($res->code !== 'E0000') {\n return false;\n }\n if (!isset($res->result)) {\n return false;\n }\n return $res->result;\n }\n```\n注意:发票结果查询需要作为定时任务一直运行,然后将查询的结果更新到本地,可批量查询。\n最新的接口中,请求发票的时候可以提交一个callbackUrl参数,这个url只有开票成功的时候才会回调,但官方网站没有提供回调请求的文档,个人认为这个参数还是不要使用了,因为光使用回调不使用定时查询的话是不够的,其他状态的发票也需要更新,如开票失败,签章失败,作废等,既然避免不了使用定时任务来更新发票状态,那就没必要做回调了。\n","source":"_posts/Php-Nuonuo-Elec-Invoice.md","raw":"---\ntitle: PHP接入诺诺电子发票\ndate: 2021-03-16 09:36:31\ntags:\n- PHP\n- API\ncategory:\n- PHP\n---\n# 前期准备111\n\n首先开票公司必须使用的是航天信息的开票系统,有航天信息提供的开票软件客户端、金税盘等。然后要在诺诺电子发票服务平台注册企业账号,注意是企业账号,不是个人账号,地址:[https://fp.jss.com.cn](https://fp.jss.com.cn/) ,如果要开电票的话(诺诺发票服务平台也可以开普票纸票和专票),可能还要去税务局找航信公司人员办理电子签章等,航信一般在当地税务局有窗口办理业务。\n\n\n注册和签章做完后,可以登录诺诺电子发票服务平台工作台。\n<!-- more -->\n这里还是简单介绍一下诺诺的各平台吧。\n1.电子发票服务平台,诺诺提供的在线开票和发票管理平台,这里可以直接开票,前提是你已经办好了上述的一些手续,电子发票服务平台的工作台,可以直接开票,注意,这里不光可以开电子发票,还可以开纸质普票,专票,可以选择开票类型。\n\n2.诺诺开放平台,如果你不使用诺诺提供的电子发票服务平台,或者要将电子发票引入到你自己的业务系统,那就要使用诺诺开放平台,地址:[https://open.jss.com.cn](https://open.jss.com.cn/) ,账号是通用的,可直接登录诺诺开放平台,在应用管理中,创建应用,一般应用类型是自用型应用,然后会分别给一个正式环境和沙箱环境的appkey和APP Secret,开放平台提供了开发文档和sdk,使用都很简单。\n\n这里要注意,先去看文档找接口,那最重要的就是开票接口,平台的文档里没有开票接口文档,只有在注册了账号,创建了应用后,查看应用中提供了开票接口的文档……\n\n3.诺诺开票软件,诺诺发票,诺诺电子发票等客户端,这些都是财务使用的,也许有的\n财务只用其中一个或2个,所有这些客户端都需要插上金税盘。\n\n\n# 开票流程\n## 普通的开票:\n公司财务直接在开票软件中开了,开票时填写开票信息等,如果开通了电子发票,开票软件中也可以开电子发票,开完后不用打印,直接将电子发票发送到开票信息中提供的手机和邮箱中了,也会提供电子发票的下载地址。\n\n使用电子发票服务平台开票:\n1.在公司财务电脑(有金税盘的)上打开诺诺发票,开启开票服务,然后数据就会在发票服务平台和公司财务的开票软件之间同步,下图是诺诺发票客户端开启发票服务的状态。\n2.登录电子发票服务平台工作台,点击发票填开,填写发票信息,发票类型。提交开票。提交的时候会请求公司的财务电脑的诺诺发票同步数据,如果请求不成功,会提示相应的错误,如果请求成功,开票状态是待开。\n3.如果是纸票和专票,在公司财务电脑上打开开票软件,发票管理或者开票界面导入中,有从电子发票服务平台提交过来的开票信息,导入打印开票。开票完成后,数据会同步到电子发票服务平台中,刷新的话发票状态已经变成开票完成了。如果是电子发票,同样会请求公司财务电脑诺诺发票,不过不需要手动打印开票,而是请求电子签章,完成后同样将数据同步回去。\n所以公司的诺诺发票软件要一直保持开启开票服务的状态,不然无法从电子发票服务平台(也包括开放平台api)提交发票,但是有时候财务人员会拿金税盘到税务去办相关的业务,金税盘不插的话,诺诺发票和开票软件等客户端肯定无法正常使用,而且财务的电脑也不是服务器,也不可能一直保持开机状态,这种情况可能需要使用分机,办理了分机的话,会有一个分机税盘,然后要配置分机,这个可以下载一个诺言客户端咨询客服,客服会通过远程给协助配置。\n\n## 开放平台开票:\n搞清楚电子发票服务平台后,那使用开放平台api就简单了,自己的业务系统中使用开发平台接口所完成的功能其实就是电子发票服务平台提供的功能的简化版,只是把一些功能通过api加到自己的业务系统中了,所以使用开放平台api开票,首先要调试电子发票服务平台能不能开票成功,如果电子发票服务平台开票不成功,api接口也不会调试成功!\n\n所以,不管是电子发票服务平台,还是开放平台,最终开票请求都通过诺诺提交到了公司财务的开票电脑上了,开票电脑完成开票后返回开票的结果。\n\n### PHP实现\n这个就很简单了,主要使用三个接口:获取access_token,开票和查询,下载php的sdk。直接上代码:\n```php\nrequire_once \"../nuonuo/lib/Api.php\";\n```\n#### 获取access_token:\n```php\n$appKey = C('invoice.appKey');\n$appSecret = C('invoice.appSecret');\ntry {\n $token = Api::getMerchantToken($appKey, $appSecret);\n} catch (Exception $e) {\n return false;\n}\nif (!isJson($token)) {\n return false;\n}\n$token = json_decode($token);\nif (!isset($token->access_token) || !isset($token->expires_in)) {\n return false;\n}\nreturn $token->access_token;\n```\n注意:access_token的调用限制是30天50次,需要本地缓存起来,在有效期内重复使用。\n\n#### 开票请求:\n```php\npublic function request() {\n $appKey = C('invoice.appKey');\n $appSecret = C('invoice.appSecret');\n $token = self::getMerchantToken();\n $taxnum = C('invoice.salerTaxNum');\n $url = C('invoice.url');\n $method = \"nuonuo.electronInvoice.requestBilling\";\n $senid = $this->senid;\n $body = json_encode(\n array(\n 'order' => array(\n 'buyerName' => stripslashes($this->buyerName),\n 'buyerTaxNum' => $this->buyerTaxNum,\n 'buyerTel' => $this->buyerTel,\n 'buyerAddress' => stripslashes($this->buyerAddress),\n 'buyerAccount' => stripslashes($this->buyerAccount),\n 'orderNo' => $this->orderNo,\n 'invoiceDate' => $this->invoiceDate,\n 'clerk' => $this->clerk,\n 'payee' => C('invoice.payee'),\n 'checker' => C('invoice.checker'),\n 'salerTaxNum' => $this->salerTaxNum,\n 'salerTel' => $this->salerTel,\n 'salerAddress' => $this->salerAddress,\n 'salerAccount' => $this->salerAccount,\n 'invoiceType' => $this->invoiceType,\n 'pushMode' => $this->pushMode,\n 'buyerPhone' => $this->buyerPhone,\n 'email' => $this->email,\n 'invoiceLine' => $this->invoiceLine,\n 'invoiceDetail' => array(\n 'goodsName' => $this->goodsName,\n 'goodsCode' => $this->goodsCode,\n 'num' => $this->num,\n 'price' => $this->price,\n 'taxIncludedAmount' => $this->taxIncludedAmount,\n 'withTaxFlag' => $this->withTaxFlag,\n 'taxRate' => $this->taxRate,\n )\n )\n )\n );\n try {\n $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);\n } catch (Exception $e) {\n $this->message = $e->getMessage();\n return false;\n }\n if (!isJson($res)) {\n $this->message = '发票请求失败';\n return false;\n }\n $res = json_decode($res);\n if ($res->code !== 'E0000') {\n $this->message = $res->describe;\n return false;\n }\n if (!isset($res->result->invoiceSerialNum)) {\n $this->message = '未收到发票流水号';\n return false;\n }\n $this->invoiceSerialNum = $res->result->invoiceSerialNum;\n $this->update_field(array('invoiceSerialNum'));\n return true;\n }\n```\n注意:请求成功后,保存返回的发票流水号,用来查询开票结果。\n#### 查询结果:\n```php\npublic static function queryInvoice(array $serialNos) {\n $appKey = C('invoice.appKey');\n $appSecret = C('invoice.appSecret');\n $token = self::getMerchantToken();\n $taxnum = C('invoice.salerTaxNum');\n $url = C('invoice.url');\n $method = \"nuonuo.ElectronInvoice.queryInvoiceResult\";\n $senid = uniqid();\n\n $body = json_encode(array(\n 'serialNos' => $serialNos,\n ));\n try {\n $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);\n } catch (Exception $e) {\n return false;\n }\n if (!isJson($res)) {\n return false;\n }\n $res = json_decode($res);\n if ($res->code !== 'E0000') {\n return false;\n }\n if (!isset($res->result)) {\n return false;\n }\n return $res->result;\n }\n```\n注意:发票结果查询需要作为定时任务一直运行,然后将查询的结果更新到本地,可批量查询。\n最新的接口中,请求发票的时候可以提交一个callbackUrl参数,这个url只有开票成功的时候才会回调,但官方网站没有提供回调请求的文档,个人认为这个参数还是不要使用了,因为光使用回调不使用定时查询的话是不够的,其他状态的发票也需要更新,如开票失败,签章失败,作废等,既然避免不了使用定时任务来更新发票状态,那就没必要做回调了。\n","slug":"Php-Nuonuo-Elec-Invoice","published":1,"updated":"2021-03-16T05:52:49.003Z","_id":"ckmbipmhz001nkgvp3f356h1e","comments":1,"layout":"post","photos":[],"link":"","content":"<h1 id=\"前期准备111\"><a href=\"#前期准备111\" class=\"headerlink\" title=\"前期准备111\"></a>前期准备111</h1><p>首先开票公司必须使用的是航天信息的开票系统,有航天信息提供的开票软件客户端、金税盘等。然后要在诺诺电子发票服务平台注册企业账号,注意是企业账号,不是个人账号,地址:<a href=\"https://fp.jss.com.cn/\" target=\"_blank\" rel=\"noopener\">https://fp.jss.com.cn</a> ,如果要开电票的话(诺诺发票服务平台也可以开普票纸票和专票),可能还要去税务局找航信公司人员办理电子签章等,航信一般在当地税务局有窗口办理业务。</p>\n<p>注册和签章做完后,可以登录诺诺电子发票服务平台工作台。<br><a id=\"more\"></a><br>这里还是简单介绍一下诺诺的各平台吧。<br>1.电子发票服务平台,诺诺提供的在线开票和发票管理平台,这里可以直接开票,前提是你已经办好了上述的一些手续,电子发票服务平台的工作台,可以直接开票,注意,这里不光可以开电子发票,还可以开纸质普票,专票,可以选择开票类型。</p>\n<p>2.诺诺开放平台,如果你不使用诺诺提供的电子发票服务平台,或者要将电子发票引入到你自己的业务系统,那就要使用诺诺开放平台,地址:<a href=\"https://open.jss.com.cn/\" target=\"_blank\" rel=\"noopener\">https://open.jss.com.cn</a> ,账号是通用的,可直接登录诺诺开放平台,在应用管理中,创建应用,一般应用类型是自用型应用,然后会分别给一个正式环境和沙箱环境的appkey和APP Secret,开放平台提供了开发文档和sdk,使用都很简单。</p>\n<p>这里要注意,先去看文档找接口,那最重要的就是开票接口,平台的文档里没有开票接口文档,只有在注册了账号,创建了应用后,查看应用中提供了开票接口的文档……</p>\n<p>3.诺诺开票软件,诺诺发票,诺诺电子发票等客户端,这些都是财务使用的,也许有的<br>财务只用其中一个或2个,所有这些客户端都需要插上金税盘。</p>\n<h1 id=\"开票流程\"><a href=\"#开票流程\" class=\"headerlink\" title=\"开票流程\"></a>开票流程</h1><h2 id=\"普通的开票:\"><a href=\"#普通的开票:\" class=\"headerlink\" title=\"普通的开票:\"></a>普通的开票:</h2><p>公司财务直接在开票软件中开了,开票时填写开票信息等,如果开通了电子发票,开票软件中也可以开电子发票,开完后不用打印,直接将电子发票发送到开票信息中提供的手机和邮箱中了,也会提供电子发票的下载地址。</p>\n<p>使用电子发票服务平台开票:<br>1.在公司财务电脑(有金税盘的)上打开诺诺发票,开启开票服务,然后数据就会在发票服务平台和公司财务的开票软件之间同步,下图是诺诺发票客户端开启发票服务的状态。<br>2.登录电子发票服务平台工作台,点击发票填开,填写发票信息,发票类型。提交开票。提交的时候会请求公司的财务电脑的诺诺发票同步数据,如果请求不成功,会提示相应的错误,如果请求成功,开票状态是待开。<br>3.如果是纸票和专票,在公司财务电脑上打开开票软件,发票管理或者开票界面导入中,有从电子发票服务平台提交过来的开票信息,导入打印开票。开票完成后,数据会同步到电子发票服务平台中,刷新的话发票状态已经变成开票完成了。如果是电子发票,同样会请求公司财务电脑诺诺发票,不过不需要手动打印开票,而是请求电子签章,完成后同样将数据同步回去。<br>所以公司的诺诺发票软件要一直保持开启开票服务的状态,不然无法从电子发票服务平台(也包括开放平台api)提交发票,但是有时候财务人员会拿金税盘到税务去办相关的业务,金税盘不插的话,诺诺发票和开票软件等客户端肯定无法正常使用,而且财务的电脑也不是服务器,也不可能一直保持开机状态,这种情况可能需要使用分机,办理了分机的话,会有一个分机税盘,然后要配置分机,这个可以下载一个诺言客户端咨询客服,客服会通过远程给协助配置。</p>\n<h2 id=\"开放平台开票:\"><a href=\"#开放平台开票:\" class=\"headerlink\" title=\"开放平台开票:\"></a>开放平台开票:</h2><p>搞清楚电子发票服务平台后,那使用开放平台api就简单了,自己的业务系统中使用开发平台接口所完成的功能其实就是电子发票服务平台提供的功能的简化版,只是把一些功能通过api加到自己的业务系统中了,所以使用开放平台api开票,首先要调试电子发票服务平台能不能开票成功,如果电子发票服务平台开票不成功,api接口也不会调试成功!</p>\n<p>所以,不管是电子发票服务平台,还是开放平台,最终开票请求都通过诺诺提交到了公司财务的开票电脑上了,开票电脑完成开票后返回开票的结果。</p>\n<h3 id=\"PHP实现\"><a href=\"#PHP实现\" class=\"headerlink\" title=\"PHP实现\"></a>PHP实现</h3><p>这个就很简单了,主要使用三个接口:获取access_token,开票和查询,下载php的sdk。直接上代码:<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">require_once</span> <span class=\"string\">\"../nuonuo/lib/Api.php\"</span>;</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"获取access-token:\"><a href=\"#获取access-token:\" class=\"headerlink\" title=\"获取access_token:\"></a>获取access_token:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\">$appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"><span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $token = Api::getMerchantToken($appKey, $appSecret);</span><br><span class=\"line\">} <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"keyword\">if</span> (!isJson($token)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\">$token = json_decode($token);</span><br><span class=\"line\"><span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($token->access_token) || !<span class=\"keyword\">isset</span>($token->expires_in)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"keyword\">return</span> $token->access_token;</span><br></pre></td></tr></table></figure>\n<p>注意:access_token的调用限制是30天50次,需要本地缓存起来,在有效期内重复使用。</p>\n<h4 id=\"开票请求:\"><a href=\"#开票请求:\" class=\"headerlink\" title=\"开票请求:\"></a>开票请求:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">request</span><span class=\"params\">()</span> </span>{</span><br><span class=\"line\"> $appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\"> $appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"> $token = <span class=\"keyword\">self</span>::getMerchantToken();</span><br><span class=\"line\"> $taxnum = C(<span class=\"string\">'invoice.salerTaxNum'</span>);</span><br><span class=\"line\"> $url = C(<span class=\"string\">'invoice.url'</span>);</span><br><span class=\"line\"> $method = <span class=\"string\">\"nuonuo.electronInvoice.requestBilling\"</span>;</span><br><span class=\"line\"> $senid = <span class=\"keyword\">$this</span>->senid;</span><br><span class=\"line\"> $body = json_encode(</span><br><span class=\"line\"> <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'order'</span> => <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'buyerName'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerName),</span><br><span class=\"line\"> <span class=\"string\">'buyerTaxNum'</span> => <span class=\"keyword\">$this</span>->buyerTaxNum,</span><br><span class=\"line\"> <span class=\"string\">'buyerTel'</span> => <span class=\"keyword\">$this</span>->buyerTel,</span><br><span class=\"line\"> <span class=\"string\">'buyerAddress'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerAddress),</span><br><span class=\"line\"> <span class=\"string\">'buyerAccount'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerAccount),</span><br><span class=\"line\"> <span class=\"string\">'orderNo'</span> => <span class=\"keyword\">$this</span>->orderNo,</span><br><span class=\"line\"> <span class=\"string\">'invoiceDate'</span> => <span class=\"keyword\">$this</span>->invoiceDate,</span><br><span class=\"line\"> <span class=\"string\">'clerk'</span> => <span class=\"keyword\">$this</span>->clerk,</span><br><span class=\"line\"> <span class=\"string\">'payee'</span> => C(<span class=\"string\">'invoice.payee'</span>),</span><br><span class=\"line\"> <span class=\"string\">'checker'</span> => C(<span class=\"string\">'invoice.checker'</span>),</span><br><span class=\"line\"> <span class=\"string\">'salerTaxNum'</span> => <span class=\"keyword\">$this</span>->salerTaxNum,</span><br><span class=\"line\"> <span class=\"string\">'salerTel'</span> => <span class=\"keyword\">$this</span>->salerTel,</span><br><span class=\"line\"> <span class=\"string\">'salerAddress'</span> => <span class=\"keyword\">$this</span>->salerAddress,</span><br><span class=\"line\"> <span class=\"string\">'salerAccount'</span> => <span class=\"keyword\">$this</span>->salerAccount,</span><br><span class=\"line\"> <span class=\"string\">'invoiceType'</span> => <span class=\"keyword\">$this</span>->invoiceType,</span><br><span class=\"line\"> <span class=\"string\">'pushMode'</span> => <span class=\"keyword\">$this</span>->pushMode,</span><br><span class=\"line\"> <span class=\"string\">'buyerPhone'</span> => <span class=\"keyword\">$this</span>->buyerPhone,</span><br><span class=\"line\"> <span class=\"string\">'email'</span> => <span class=\"keyword\">$this</span>->email,</span><br><span class=\"line\"> <span class=\"string\">'invoiceLine'</span> => <span class=\"keyword\">$this</span>->invoiceLine,</span><br><span class=\"line\"> <span class=\"string\">'invoiceDetail'</span> => <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'goodsName'</span> => <span class=\"keyword\">$this</span>->goodsName,</span><br><span class=\"line\"> <span class=\"string\">'goodsCode'</span> => <span class=\"keyword\">$this</span>->goodsCode,</span><br><span class=\"line\"> <span class=\"string\">'num'</span> => <span class=\"keyword\">$this</span>->num,</span><br><span class=\"line\"> <span class=\"string\">'price'</span> => <span class=\"keyword\">$this</span>->price,</span><br><span class=\"line\"> <span class=\"string\">'taxIncludedAmount'</span> => <span class=\"keyword\">$this</span>->taxIncludedAmount,</span><br><span class=\"line\"> <span class=\"string\">'withTaxFlag'</span> => <span class=\"keyword\">$this</span>->withTaxFlag,</span><br><span class=\"line\"> <span class=\"string\">'taxRate'</span> => <span class=\"keyword\">$this</span>->taxRate,</span><br><span class=\"line\"> )</span><br><span class=\"line\"> )</span><br><span class=\"line\"> )</span><br><span class=\"line\"> );</span><br><span class=\"line\"> <span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);</span><br><span class=\"line\"> } <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = $e->getMessage();</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!isJson($res)) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = <span class=\"string\">'发票请求失败'</span>;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> $res = json_decode($res);</span><br><span class=\"line\"> <span class=\"keyword\">if</span> ($res->code !== <span class=\"string\">'E0000'</span>) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = $res->describe;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($res->result->invoiceSerialNum)) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = <span class=\"string\">'未收到发票流水号'</span>;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->invoiceSerialNum = $res->result->invoiceSerialNum;</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->update_field(<span class=\"keyword\">array</span>(<span class=\"string\">'invoiceSerialNum'</span>));</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">true</span>;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>注意:请求成功后,保存返回的发票流水号,用来查询开票结果。</p>\n<h4 id=\"查询结果:\"><a href=\"#查询结果:\" class=\"headerlink\" title=\"查询结果:\"></a>查询结果:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">queryInvoice</span><span class=\"params\">(array $serialNos)</span> </span>{</span><br><span class=\"line\"> $appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\"> $appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"> $token = <span class=\"keyword\">self</span>::getMerchantToken();</span><br><span class=\"line\"> $taxnum = C(<span class=\"string\">'invoice.salerTaxNum'</span>);</span><br><span class=\"line\"> $url = C(<span class=\"string\">'invoice.url'</span>);</span><br><span class=\"line\"> $method = <span class=\"string\">\"nuonuo.ElectronInvoice.queryInvoiceResult\"</span>;</span><br><span class=\"line\"> $senid = uniqid();</span><br><span class=\"line\"></span><br><span class=\"line\"> $body = json_encode(<span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'serialNos'</span> => $serialNos,</span><br><span class=\"line\"> ));</span><br><span class=\"line\"> <span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);</span><br><span class=\"line\"> } <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!isJson($res)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> $res = json_decode($res);</span><br><span class=\"line\"> <span class=\"keyword\">if</span> ($res->code !== <span class=\"string\">'E0000'</span>) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($res->result)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">return</span> $res->result;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>注意:发票结果查询需要作为定时任务一直运行,然后将查询的结果更新到本地,可批量查询。<br>最新的接口中,请求发票的时候可以提交一个callbackUrl参数,这个url只有开票成功的时候才会回调,但官方网站没有提供回调请求的文档,个人认为这个参数还是不要使用了,因为光使用回调不使用定时查询的话是不够的,其他状态的发票也需要更新,如开票失败,签章失败,作废等,既然避免不了使用定时任务来更新发票状态,那就没必要做回调了。</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<h1 id=\"前期准备111\"><a href=\"#前期准备111\" class=\"headerlink\" title=\"前期准备111\"></a>前期准备111</h1><p>首先开票公司必须使用的是航天信息的开票系统,有航天信息提供的开票软件客户端、金税盘等。然后要在诺诺电子发票服务平台注册企业账号,注意是企业账号,不是个人账号,地址:<a href=\"https://fp.jss.com.cn/\" target=\"_blank\" rel=\"noopener\">https://fp.jss.com.cn</a> ,如果要开电票的话(诺诺发票服务平台也可以开普票纸票和专票),可能还要去税务局找航信公司人员办理电子签章等,航信一般在当地税务局有窗口办理业务。</p>\n<p>注册和签章做完后,可以登录诺诺电子发票服务平台工作台。<br>","more":"<br>这里还是简单介绍一下诺诺的各平台吧。<br>1.电子发票服务平台,诺诺提供的在线开票和发票管理平台,这里可以直接开票,前提是你已经办好了上述的一些手续,电子发票服务平台的工作台,可以直接开票,注意,这里不光可以开电子发票,还可以开纸质普票,专票,可以选择开票类型。</p>\n<p>2.诺诺开放平台,如果你不使用诺诺提供的电子发票服务平台,或者要将电子发票引入到你自己的业务系统,那就要使用诺诺开放平台,地址:<a href=\"https://open.jss.com.cn/\" target=\"_blank\" rel=\"noopener\">https://open.jss.com.cn</a> ,账号是通用的,可直接登录诺诺开放平台,在应用管理中,创建应用,一般应用类型是自用型应用,然后会分别给一个正式环境和沙箱环境的appkey和APP Secret,开放平台提供了开发文档和sdk,使用都很简单。</p>\n<p>这里要注意,先去看文档找接口,那最重要的就是开票接口,平台的文档里没有开票接口文档,只有在注册了账号,创建了应用后,查看应用中提供了开票接口的文档……</p>\n<p>3.诺诺开票软件,诺诺发票,诺诺电子发票等客户端,这些都是财务使用的,也许有的<br>财务只用其中一个或2个,所有这些客户端都需要插上金税盘。</p>\n<h1 id=\"开票流程\"><a href=\"#开票流程\" class=\"headerlink\" title=\"开票流程\"></a>开票流程</h1><h2 id=\"普通的开票:\"><a href=\"#普通的开票:\" class=\"headerlink\" title=\"普通的开票:\"></a>普通的开票:</h2><p>公司财务直接在开票软件中开了,开票时填写开票信息等,如果开通了电子发票,开票软件中也可以开电子发票,开完后不用打印,直接将电子发票发送到开票信息中提供的手机和邮箱中了,也会提供电子发票的下载地址。</p>\n<p>使用电子发票服务平台开票:<br>1.在公司财务电脑(有金税盘的)上打开诺诺发票,开启开票服务,然后数据就会在发票服务平台和公司财务的开票软件之间同步,下图是诺诺发票客户端开启发票服务的状态。<br>2.登录电子发票服务平台工作台,点击发票填开,填写发票信息,发票类型。提交开票。提交的时候会请求公司的财务电脑的诺诺发票同步数据,如果请求不成功,会提示相应的错误,如果请求成功,开票状态是待开。<br>3.如果是纸票和专票,在公司财务电脑上打开开票软件,发票管理或者开票界面导入中,有从电子发票服务平台提交过来的开票信息,导入打印开票。开票完成后,数据会同步到电子发票服务平台中,刷新的话发票状态已经变成开票完成了。如果是电子发票,同样会请求公司财务电脑诺诺发票,不过不需要手动打印开票,而是请求电子签章,完成后同样将数据同步回去。<br>所以公司的诺诺发票软件要一直保持开启开票服务的状态,不然无法从电子发票服务平台(也包括开放平台api)提交发票,但是有时候财务人员会拿金税盘到税务去办相关的业务,金税盘不插的话,诺诺发票和开票软件等客户端肯定无法正常使用,而且财务的电脑也不是服务器,也不可能一直保持开机状态,这种情况可能需要使用分机,办理了分机的话,会有一个分机税盘,然后要配置分机,这个可以下载一个诺言客户端咨询客服,客服会通过远程给协助配置。</p>\n<h2 id=\"开放平台开票:\"><a href=\"#开放平台开票:\" class=\"headerlink\" title=\"开放平台开票:\"></a>开放平台开票:</h2><p>搞清楚电子发票服务平台后,那使用开放平台api就简单了,自己的业务系统中使用开发平台接口所完成的功能其实就是电子发票服务平台提供的功能的简化版,只是把一些功能通过api加到自己的业务系统中了,所以使用开放平台api开票,首先要调试电子发票服务平台能不能开票成功,如果电子发票服务平台开票不成功,api接口也不会调试成功!</p>\n<p>所以,不管是电子发票服务平台,还是开放平台,最终开票请求都通过诺诺提交到了公司财务的开票电脑上了,开票电脑完成开票后返回开票的结果。</p>\n<h3 id=\"PHP实现\"><a href=\"#PHP实现\" class=\"headerlink\" title=\"PHP实现\"></a>PHP实现</h3><p>这个就很简单了,主要使用三个接口:获取access_token,开票和查询,下载php的sdk。直接上代码:<br><figure class=\"highlight php\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">require_once</span> <span class=\"string\">\"../nuonuo/lib/Api.php\"</span>;</span><br></pre></td></tr></table></figure></p>\n<h4 id=\"获取access-token:\"><a href=\"#获取access-token:\" class=\"headerlink\" title=\"获取access_token:\"></a>获取access_token:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">$appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\">$appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"><span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $token = Api::getMerchantToken($appKey, $appSecret);</span><br><span class=\"line\">} <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"keyword\">if</span> (!isJson($token)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\">$token = json_decode($token);</span><br><span class=\"line\"><span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($token->access_token) || !<span class=\"keyword\">isset</span>($token->expires_in)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\">}</span><br><span class=\"line\"><span class=\"keyword\">return</span> $token->access_token;</span><br></pre></td></tr></table></figure>\n<p>注意:access_token的调用限制是30天50次,需要本地缓存起来,在有效期内重复使用。</p>\n<h4 id=\"开票请求:\"><a href=\"#开票请求:\" class=\"headerlink\" title=\"开票请求:\"></a>开票请求:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br><span class=\"line\">30</span><br><span class=\"line\">31</span><br><span class=\"line\">32</span><br><span class=\"line\">33</span><br><span class=\"line\">34</span><br><span class=\"line\">35</span><br><span class=\"line\">36</span><br><span class=\"line\">37</span><br><span class=\"line\">38</span><br><span class=\"line\">39</span><br><span class=\"line\">40</span><br><span class=\"line\">41</span><br><span class=\"line\">42</span><br><span class=\"line\">43</span><br><span class=\"line\">44</span><br><span class=\"line\">45</span><br><span class=\"line\">46</span><br><span class=\"line\">47</span><br><span class=\"line\">48</span><br><span class=\"line\">49</span><br><span class=\"line\">50</span><br><span class=\"line\">51</span><br><span class=\"line\">52</span><br><span class=\"line\">53</span><br><span class=\"line\">54</span><br><span class=\"line\">55</span><br><span class=\"line\">56</span><br><span class=\"line\">57</span><br><span class=\"line\">58</span><br><span class=\"line\">59</span><br><span class=\"line\">60</span><br><span class=\"line\">61</span><br><span class=\"line\">62</span><br><span class=\"line\">63</span><br><span class=\"line\">64</span><br><span class=\"line\">65</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">request</span><span class=\"params\">()</span> </span>{</span><br><span class=\"line\"> $appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\"> $appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"> $token = <span class=\"keyword\">self</span>::getMerchantToken();</span><br><span class=\"line\"> $taxnum = C(<span class=\"string\">'invoice.salerTaxNum'</span>);</span><br><span class=\"line\"> $url = C(<span class=\"string\">'invoice.url'</span>);</span><br><span class=\"line\"> $method = <span class=\"string\">\"nuonuo.electronInvoice.requestBilling\"</span>;</span><br><span class=\"line\"> $senid = <span class=\"keyword\">$this</span>->senid;</span><br><span class=\"line\"> $body = json_encode(</span><br><span class=\"line\"> <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'order'</span> => <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'buyerName'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerName),</span><br><span class=\"line\"> <span class=\"string\">'buyerTaxNum'</span> => <span class=\"keyword\">$this</span>->buyerTaxNum,</span><br><span class=\"line\"> <span class=\"string\">'buyerTel'</span> => <span class=\"keyword\">$this</span>->buyerTel,</span><br><span class=\"line\"> <span class=\"string\">'buyerAddress'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerAddress),</span><br><span class=\"line\"> <span class=\"string\">'buyerAccount'</span> => stripslashes(<span class=\"keyword\">$this</span>->buyerAccount),</span><br><span class=\"line\"> <span class=\"string\">'orderNo'</span> => <span class=\"keyword\">$this</span>->orderNo,</span><br><span class=\"line\"> <span class=\"string\">'invoiceDate'</span> => <span class=\"keyword\">$this</span>->invoiceDate,</span><br><span class=\"line\"> <span class=\"string\">'clerk'</span> => <span class=\"keyword\">$this</span>->clerk,</span><br><span class=\"line\"> <span class=\"string\">'payee'</span> => C(<span class=\"string\">'invoice.payee'</span>),</span><br><span class=\"line\"> <span class=\"string\">'checker'</span> => C(<span class=\"string\">'invoice.checker'</span>),</span><br><span class=\"line\"> <span class=\"string\">'salerTaxNum'</span> => <span class=\"keyword\">$this</span>->salerTaxNum,</span><br><span class=\"line\"> <span class=\"string\">'salerTel'</span> => <span class=\"keyword\">$this</span>->salerTel,</span><br><span class=\"line\"> <span class=\"string\">'salerAddress'</span> => <span class=\"keyword\">$this</span>->salerAddress,</span><br><span class=\"line\"> <span class=\"string\">'salerAccount'</span> => <span class=\"keyword\">$this</span>->salerAccount,</span><br><span class=\"line\"> <span class=\"string\">'invoiceType'</span> => <span class=\"keyword\">$this</span>->invoiceType,</span><br><span class=\"line\"> <span class=\"string\">'pushMode'</span> => <span class=\"keyword\">$this</span>->pushMode,</span><br><span class=\"line\"> <span class=\"string\">'buyerPhone'</span> => <span class=\"keyword\">$this</span>->buyerPhone,</span><br><span class=\"line\"> <span class=\"string\">'email'</span> => <span class=\"keyword\">$this</span>->email,</span><br><span class=\"line\"> <span class=\"string\">'invoiceLine'</span> => <span class=\"keyword\">$this</span>->invoiceLine,</span><br><span class=\"line\"> <span class=\"string\">'invoiceDetail'</span> => <span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'goodsName'</span> => <span class=\"keyword\">$this</span>->goodsName,</span><br><span class=\"line\"> <span class=\"string\">'goodsCode'</span> => <span class=\"keyword\">$this</span>->goodsCode,</span><br><span class=\"line\"> <span class=\"string\">'num'</span> => <span class=\"keyword\">$this</span>->num,</span><br><span class=\"line\"> <span class=\"string\">'price'</span> => <span class=\"keyword\">$this</span>->price,</span><br><span class=\"line\"> <span class=\"string\">'taxIncludedAmount'</span> => <span class=\"keyword\">$this</span>->taxIncludedAmount,</span><br><span class=\"line\"> <span class=\"string\">'withTaxFlag'</span> => <span class=\"keyword\">$this</span>->withTaxFlag,</span><br><span class=\"line\"> <span class=\"string\">'taxRate'</span> => <span class=\"keyword\">$this</span>->taxRate,</span><br><span class=\"line\"> )</span><br><span class=\"line\"> )</span><br><span class=\"line\"> )</span><br><span class=\"line\"> );</span><br><span class=\"line\"> <span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);</span><br><span class=\"line\"> } <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = $e->getMessage();</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!isJson($res)) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = <span class=\"string\">'发票请求失败'</span>;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> $res = json_decode($res);</span><br><span class=\"line\"> <span class=\"keyword\">if</span> ($res->code !== <span class=\"string\">'E0000'</span>) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = $res->describe;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($res->result->invoiceSerialNum)) {</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->message = <span class=\"string\">'未收到发票流水号'</span>;</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->invoiceSerialNum = $res->result->invoiceSerialNum;</span><br><span class=\"line\"> <span class=\"keyword\">$this</span>->update_field(<span class=\"keyword\">array</span>(<span class=\"string\">'invoiceSerialNum'</span>));</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">true</span>;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>注意:请求成功后,保存返回的发票流水号,用来查询开票结果。</p>\n<h4 id=\"查询结果:\"><a href=\"#查询结果:\" class=\"headerlink\" title=\"查询结果:\"></a>查询结果:</h4><figure class=\"highlight php\"><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><span class=\"line\">7</span><br><span class=\"line\">8</span><br><span class=\"line\">9</span><br><span class=\"line\">10</span><br><span class=\"line\">11</span><br><span class=\"line\">12</span><br><span class=\"line\">13</span><br><span class=\"line\">14</span><br><span class=\"line\">15</span><br><span class=\"line\">16</span><br><span class=\"line\">17</span><br><span class=\"line\">18</span><br><span class=\"line\">19</span><br><span class=\"line\">20</span><br><span class=\"line\">21</span><br><span class=\"line\">22</span><br><span class=\"line\">23</span><br><span class=\"line\">24</span><br><span class=\"line\">25</span><br><span class=\"line\">26</span><br><span class=\"line\">27</span><br><span class=\"line\">28</span><br><span class=\"line\">29</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"keyword\">public</span> <span class=\"keyword\">static</span> <span class=\"function\"><span class=\"keyword\">function</span> <span class=\"title\">queryInvoice</span><span class=\"params\">(array $serialNos)</span> </span>{</span><br><span class=\"line\"> $appKey = C(<span class=\"string\">'invoice.appKey'</span>);</span><br><span class=\"line\"> $appSecret = C(<span class=\"string\">'invoice.appSecret'</span>);</span><br><span class=\"line\"> $token = <span class=\"keyword\">self</span>::getMerchantToken();</span><br><span class=\"line\"> $taxnum = C(<span class=\"string\">'invoice.salerTaxNum'</span>);</span><br><span class=\"line\"> $url = C(<span class=\"string\">'invoice.url'</span>);</span><br><span class=\"line\"> $method = <span class=\"string\">\"nuonuo.ElectronInvoice.queryInvoiceResult\"</span>;</span><br><span class=\"line\"> $senid = uniqid();</span><br><span class=\"line\"></span><br><span class=\"line\"> $body = json_encode(<span class=\"keyword\">array</span>(</span><br><span class=\"line\"> <span class=\"string\">'serialNos'</span> => $serialNos,</span><br><span class=\"line\"> ));</span><br><span class=\"line\"> <span class=\"keyword\">try</span> {</span><br><span class=\"line\"> $res = Api::sendPostSyncRequest($url, $senid, $appKey, $appSecret, $token, $taxnum, $method, $body);</span><br><span class=\"line\"> } <span class=\"keyword\">catch</span> (<span class=\"keyword\">Exception</span> $e) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!isJson($res)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> $res = json_decode($res);</span><br><span class=\"line\"> <span class=\"keyword\">if</span> ($res->code !== <span class=\"string\">'E0000'</span>) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">if</span> (!<span class=\"keyword\">isset</span>($res->result)) {</span><br><span class=\"line\"> <span class=\"keyword\">return</span> <span class=\"keyword\">false</span>;</span><br><span class=\"line\"> }</span><br><span class=\"line\"> <span class=\"keyword\">return</span> $res->result;</span><br><span class=\"line\"> }</span><br></pre></td></tr></table></figure>\n<p>注意:发票结果查询需要作为定时任务一直运行,然后将查询的结果更新到本地,可批量查询。<br>最新的接口中,请求发票的时候可以提交一个callbackUrl参数,这个url只有开票成功的时候才会回调,但官方网站没有提供回调请求的文档,个人认为这个参数还是不要使用了,因为光使用回调不使用定时查询的话是不够的,其他状态的发票也需要更新,如开票失败,签章失败,作废等,既然避免不了使用定时任务来更新发票状态,那就没必要做回调了。</p>"},{"title":"windows 的cmd设置代理的问题","date":"2018-08-27T02:18:30.000Z","_content":"\n# 电脑通过设置代理来访问外网,则需要为cmd设置代理:\n\n## 1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)\n\n## 2、输入以下命令\n```bash\nset http_proxy=http://127.0.0.1:1189\nset https_proxy=http://127.0.0.1:1189\n```\n其中\":\"后面的为自己的代理服务器的地址,可自行查阅\n注意,代理服务器的地址的查看:谷歌浏览器——设置——高级——打开代理设置——局域网设置——复制代理服务器地址即可\n\n## 3、如果你的代理服务器要求用户名和密码的话,那么还需要:\n```bash\nset http_proxy_user=\nset http_proxy_pass=\n```\n## 4、设置完成之后就可以在 cmd 下正常使用网络了。\n","source":"_posts/Windows-Cmd-Set-Proxy.md","raw":"---\ntitle: windows 的cmd设置代理的问题\ndate: 2018-08-27 10:18:30\ntags:\n- Github\ncategory: Github\n---\n\n# 电脑通过设置代理来访问外网,则需要为cmd设置代理:\n\n## 1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)\n\n## 2、输入以下命令\n```bash\nset http_proxy=http://127.0.0.1:1189\nset https_proxy=http://127.0.0.1:1189\n```\n其中\":\"后面的为自己的代理服务器的地址,可自行查阅\n注意,代理服务器的地址的查看:谷歌浏览器——设置——高级——打开代理设置——局域网设置——复制代理服务器地址即可\n\n## 3、如果你的代理服务器要求用户名和密码的话,那么还需要:\n```bash\nset http_proxy_user=\nset http_proxy_pass=\n```\n## 4、设置完成之后就可以在 cmd 下正常使用网络了。\n","slug":"Windows-Cmd-Set-Proxy","published":1,"updated":"2018-08-27T02:23:26.363Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmi1001pkgvpm0l61y94","content":"<h1 id=\"电脑通过设置代理来访问外网,则需要为cmd设置代理:\"><a href=\"#电脑通过设置代理来访问外网,则需要为cmd设置代理:\" class=\"headerlink\" title=\"电脑通过设置代理来访问外网,则需要为cmd设置代理:\"></a>电脑通过设置代理来访问外网,则需要为cmd设置代理:</h1><h2 id=\"1、首先打开-cmd-(win-R,输入-cmd,然后按-enter-键)\"><a href=\"#1、首先打开-cmd-(win-R,输入-cmd,然后按-enter-键)\" class=\"headerlink\" title=\"1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)\"></a>1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)</h2><h2 id=\"2、输入以下命令\"><a href=\"#2、输入以下命令\" class=\"headerlink\" title=\"2、输入以下命令\"></a>2、输入以下命令</h2><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">set</span> http_proxy=http://127.0.0.1:1189</span><br><span class=\"line\"><span class=\"built_in\">set</span> https_proxy=http://127.0.0.1:1189</span><br></pre></td></tr></table></figure>\n<p>其中”:”后面的为自己的代理服务器的地址,可自行查阅<br>注意,代理服务器的地址的查看:谷歌浏览器——设置——高级——打开代理设置——局域网设置——复制代理服务器地址即可</p>\n<h2 id=\"3、如果你的代理服务器要求用户名和密码的话,那么还需要:\"><a href=\"#3、如果你的代理服务器要求用户名和密码的话,那么还需要:\" class=\"headerlink\" title=\"3、如果你的代理服务器要求用户名和密码的话,那么还需要:\"></a>3、如果你的代理服务器要求用户名和密码的话,那么还需要:</h2><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">set</span> http_proxy_user=</span><br><span class=\"line\"><span class=\"built_in\">set</span> http_proxy_pass=</span><br></pre></td></tr></table></figure>\n<h2 id=\"4、设置完成之后就可以在-cmd-下正常使用网络了。\"><a href=\"#4、设置完成之后就可以在-cmd-下正常使用网络了。\" class=\"headerlink\" title=\"4、设置完成之后就可以在 cmd 下正常使用网络了。\"></a>4、设置完成之后就可以在 cmd 下正常使用网络了。</h2>","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<h1 id=\"电脑通过设置代理来访问外网,则需要为cmd设置代理:\"><a href=\"#电脑通过设置代理来访问外网,则需要为cmd设置代理:\" class=\"headerlink\" title=\"电脑通过设置代理来访问外网,则需要为cmd设置代理:\"></a>电脑通过设置代理来访问外网,则需要为cmd设置代理:</h1><h2 id=\"1、首先打开-cmd-(win-R,输入-cmd,然后按-enter-键)\"><a href=\"#1、首先打开-cmd-(win-R,输入-cmd,然后按-enter-键)\" class=\"headerlink\" title=\"1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)\"></a>1、首先打开 cmd (win + R,输入 cmd,然后按 enter 键)</h2><h2 id=\"2、输入以下命令\"><a href=\"#2、输入以下命令\" class=\"headerlink\" title=\"2、输入以下命令\"></a>2、输入以下命令</h2><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">set</span> http_proxy=http://127.0.0.1:1189</span><br><span class=\"line\"><span class=\"built_in\">set</span> https_proxy=http://127.0.0.1:1189</span><br></pre></td></tr></table></figure>\n<p>其中”:”后面的为自己的代理服务器的地址,可自行查阅<br>注意,代理服务器的地址的查看:谷歌浏览器——设置——高级——打开代理设置——局域网设置——复制代理服务器地址即可</p>\n<h2 id=\"3、如果你的代理服务器要求用户名和密码的话,那么还需要:\"><a href=\"#3、如果你的代理服务器要求用户名和密码的话,那么还需要:\" class=\"headerlink\" title=\"3、如果你的代理服务器要求用户名和密码的话,那么还需要:\"></a>3、如果你的代理服务器要求用户名和密码的话,那么还需要:</h2><figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><span class=\"built_in\">set</span> http_proxy_user=</span><br><span class=\"line\"><span class=\"built_in\">set</span> http_proxy_pass=</span><br></pre></td></tr></table></figure>\n<h2 id=\"4、设置完成之后就可以在-cmd-下正常使用网络了。\"><a href=\"#4、设置完成之后就可以在-cmd-下正常使用网络了。\" class=\"headerlink\" title=\"4、设置完成之后就可以在 cmd 下正常使用网络了。\"></a>4、设置完成之后就可以在 cmd 下正常使用网络了。</h2>"},{"title":"The connection was reset on wamp","date":"2018-11-13T03:33:36.000Z","_content":"\n\nI have installed wamp server on my pc.Then I have installed a zend application. I put it in www directory. When I access that directory by localhost it just shows\n`The connection was reset`.This problem could not fix by increasing timeouts and memory limits.\n`Os:window 7(x64), Apache : 2.5, PHP:5.5.12, Mysql : 5.6.17`\n\n### 解决方法:\nAdd the following to the end of httpd.conf to increase the Apache stack size to 8MB.\n\n```bash\n<IfModule mpm_winnt_module>\n ThreadStackSize 8388608 #用来控制堆栈大小\n</IfModule>\n```","source":"_posts/The-connection-was-reset-on-wamp.md","raw":"---\ntitle: The connection was reset on wamp\ndate: 2018-11-13 11:33:36\ntags:\n- PHP\n- Wamp\ncategory:\n- PHP\n- Wamp\n---\n\n\nI have installed wamp server on my pc.Then I have installed a zend application. I put it in www directory. When I access that directory by localhost it just shows\n`The connection was reset`.This problem could not fix by increasing timeouts and memory limits.\n`Os:window 7(x64), Apache : 2.5, PHP:5.5.12, Mysql : 5.6.17`\n\n### 解决方法:\nAdd the following to the end of httpd.conf to increase the Apache stack size to 8MB.\n\n```bash\n<IfModule mpm_winnt_module>\n ThreadStackSize 8388608 #用来控制堆栈大小\n</IfModule>\n```","slug":"The-connection-was-reset-on-wamp","published":1,"updated":"2018-11-13T03:45:58.528Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmi4001tkgvptgaw1g5l","content":"<p>I have installed wamp server on my pc.Then I have installed a zend application. I put it in www directory. When I access that directory by localhost it just shows<br><code>The connection was reset</code>.This problem could not fix by increasing timeouts and memory limits.<br><code>Os:window 7(x64), Apache : 2.5, PHP:5.5.12, Mysql : 5.6.17</code></p>\n<h3 id=\"解决方法:\"><a href=\"#解决方法:\" class=\"headerlink\" title=\"解决方法:\"></a>解决方法:</h3><p>Add the following to the end of httpd.conf to increase the Apache stack size to 8MB.</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><IfModule mpm_winnt_module></span><br><span class=\"line\"> ThreadStackSize 8388608 <span class=\"comment\">#用来控制堆栈大小</span></span><br><span class=\"line\"></IfModule></span><br></pre></td></tr></table></figure>","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"","more":"<p>I have installed wamp server on my pc.Then I have installed a zend application. I put it in www directory. When I access that directory by localhost it just shows<br><code>The connection was reset</code>.This problem could not fix by increasing timeouts and memory limits.<br><code>Os:window 7(x64), Apache : 2.5, PHP:5.5.12, Mysql : 5.6.17</code></p>\n<h3 id=\"解决方法:\"><a href=\"#解决方法:\" class=\"headerlink\" title=\"解决方法:\"></a>解决方法:</h3><p>Add the following to the end of httpd.conf to increase the Apache stack size to 8MB.</p>\n<figure class=\"highlight bash\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br><span class=\"line\">2</span><br><span class=\"line\">3</span><br></pre></td><td class=\"code\"><pre><span class=\"line\"><IfModule mpm_winnt_module></span><br><span class=\"line\"> ThreadStackSize 8388608 <span class=\"comment\">#用来控制堆栈大小</span></span><br><span class=\"line\"></IfModule></span><br></pre></td></tr></table></figure>"},{"title":"Travis CI自动构建hexo博客可能遇到的坑","date":"2017-12-25T03:18:32.000Z","_content":"### 坑1:travis CI构建一直提示github账户授权失败 ###\npsersonal token问题,重新产生,并使用travis whoami判断token有效之后再配置travis CI environment variable\n### 坑2:travis CI构建一直提示hexo-renderer-sass错误 ###\n在本地deploy并没有发生此问题,在travis vm中出现此问题,解决方式是在.travis.yml中增加\n```\nnpm install hexo-renderer-sass --save\n```\n\n<!-- more -->\n\n### 坑3:travis CI自动构建部署之后,博客页面空白,什么也没有 ###\n将主题换回默认的landscape则可以正常显示内容。则锁定是next theme配置问题,check发现themes/next 中的内容被ignore了,并没有push到raw branch.\n解决方法有二:\n- 使用.gitmodules,该方法会直接将next theme repository import进来,这样的好处是可以使用最新的next theme,坏处是没法客制化自己的主题配置文件\n```\n[submodule \"next\"]\n path = themes/next\n url = https://github.com/iissnan/hexo-theme-next\n```\n- 删除themes/next的.git和.gitignore,然后就可以讲themes/next的内容push到repository中了\n\n### Others ###\n1.在.travis.yml中将node_modules添加到cache中,可以加快构建速度\n```\ncache:\n directories:\n - node_modules\n```\n2.如果想在github的README.md显示构建成功与否的标示,可以修改README.md:\n```\n[build-info](https://travis-ci.org/userName/repoName.svg)\n```\n","source":"_posts/Travis-CI-Build-Hexo-Faqs.md","raw":"---\ntitle: Travis CI自动构建hexo博客可能遇到的坑\ndate: 2017-12-25 11:18:32\ntags:\n- Travis\ncategory:\n- Travis\n---\n### 坑1:travis CI构建一直提示github账户授权失败 ###\npsersonal token问题,重新产生,并使用travis whoami判断token有效之后再配置travis CI environment variable\n### 坑2:travis CI构建一直提示hexo-renderer-sass错误 ###\n在本地deploy并没有发生此问题,在travis vm中出现此问题,解决方式是在.travis.yml中增加\n```\nnpm install hexo-renderer-sass --save\n```\n\n<!-- more -->\n\n### 坑3:travis CI自动构建部署之后,博客页面空白,什么也没有 ###\n将主题换回默认的landscape则可以正常显示内容。则锁定是next theme配置问题,check发现themes/next 中的内容被ignore了,并没有push到raw branch.\n解决方法有二:\n- 使用.gitmodules,该方法会直接将next theme repository import进来,这样的好处是可以使用最新的next theme,坏处是没法客制化自己的主题配置文件\n```\n[submodule \"next\"]\n path = themes/next\n url = https://github.com/iissnan/hexo-theme-next\n```\n- 删除themes/next的.git和.gitignore,然后就可以讲themes/next的内容push到repository中了\n\n### Others ###\n1.在.travis.yml中将node_modules添加到cache中,可以加快构建速度\n```\ncache:\n directories:\n - node_modules\n```\n2.如果想在github的README.md显示构建成功与否的标示,可以修改README.md:\n```\n[build-info](https://travis-ci.org/userName/repoName.svg)\n```\n","slug":"Travis-CI-Build-Hexo-Faqs","published":1,"updated":"2018-08-25T02:29:23.069Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmi7001xkgvp8lipp7le","content":"<h3 id=\"坑1-travis-CI构建一直提示github账户授权失败\"><a href=\"#坑1-travis-CI构建一直提示github账户授权失败\" class=\"headerlink\" title=\"坑1:travis CI构建一直提示github账户授权失败\"></a>坑1:travis CI构建一直提示github账户授权失败</h3><p>psersonal token问题,重新产生,并使用travis whoami判断token有效之后再配置travis CI environment variable</p>\n<h3 id=\"坑2-travis-CI构建一直提示hexo-renderer-sass错误\"><a href=\"#坑2-travis-CI构建一直提示hexo-renderer-sass错误\" class=\"headerlink\" title=\"坑2:travis CI构建一直提示hexo-renderer-sass错误\"></a>坑2:travis CI构建一直提示hexo-renderer-sass错误</h3><p>在本地deploy并没有发生此问题,在travis vm中出现此问题,解决方式是在.travis.yml中增加<br><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">npm install hexo-renderer-sass --save</span><br></pre></td></tr></table></figure></p>\n<a id=\"more\"></a>\n<h3 id=\"坑3-travis-CI自动构建部署之后,博客页面空白,什么也没有\"><a href=\"#坑3-travis-CI自动构建部署之后,博客页面空白,什么也没有\" class=\"headerlink\" title=\"坑3:travis CI自动构建部署之后,博客页面空白,什么也没有\"></a>坑3:travis CI自动构建部署之后,博客页面空白,什么也没有</h3><p>将主题换回默认的landscape则可以正常显示内容。则锁定是next theme配置问题,check发现themes/next 中的内容被ignore了,并没有push到raw branch.<br>解决方法有二:</p>\n<ul>\n<li><p>使用.gitmodules,该方法会直接将next theme repository import进来,这样的好处是可以使用最新的next theme,坏处是没法客制化自己的主题配置文件</p>\n<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></pre></td><td class=\"code\"><pre><span class=\"line\">[submodule "next"]</span><br><span class=\"line\"> path = themes/next</span><br><span class=\"line\"> url = https://github.com/iissnan/hexo-theme-next</span><br></pre></td></tr></table></figure>\n</li>\n<li><p>删除themes/next的.git和.gitignore,然后就可以讲themes/next的内容push到repository中了</p>\n</li>\n</ul>\n<h3 id=\"Others\"><a href=\"#Others\" class=\"headerlink\" title=\"Others\"></a>Others</h3><p>1.在.travis.yml中将node_modules添加到cache中,可以加快构建速度<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></pre></td><td class=\"code\"><pre><span class=\"line\">cache:</span><br><span class=\"line\"> directories:</span><br><span class=\"line\"> - node_modules</span><br></pre></td></tr></table></figure></p>\n<p>2.如果想在github的README.md显示构建成功与否的标示,可以修改README.md:<br><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">[build-info](https://travis-ci.org/userName/repoName.svg)</span><br></pre></td></tr></table></figure></p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<h3 id=\"坑1-travis-CI构建一直提示github账户授权失败\"><a href=\"#坑1-travis-CI构建一直提示github账户授权失败\" class=\"headerlink\" title=\"坑1:travis CI构建一直提示github账户授权失败\"></a>坑1:travis CI构建一直提示github账户授权失败</h3><p>psersonal token问题,重新产生,并使用travis whoami判断token有效之后再配置travis CI environment variable</p>\n<h3 id=\"坑2-travis-CI构建一直提示hexo-renderer-sass错误\"><a href=\"#坑2-travis-CI构建一直提示hexo-renderer-sass错误\" class=\"headerlink\" title=\"坑2:travis CI构建一直提示hexo-renderer-sass错误\"></a>坑2:travis CI构建一直提示hexo-renderer-sass错误</h3><p>在本地deploy并没有发生此问题,在travis vm中出现此问题,解决方式是在.travis.yml中增加<br><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">npm install hexo-renderer-sass --save</span><br></pre></td></tr></table></figure></p>","more":"<h3 id=\"坑3-travis-CI自动构建部署之后,博客页面空白,什么也没有\"><a href=\"#坑3-travis-CI自动构建部署之后,博客页面空白,什么也没有\" class=\"headerlink\" title=\"坑3:travis CI自动构建部署之后,博客页面空白,什么也没有\"></a>坑3:travis CI自动构建部署之后,博客页面空白,什么也没有</h3><p>将主题换回默认的landscape则可以正常显示内容。则锁定是next theme配置问题,check发现themes/next 中的内容被ignore了,并没有push到raw branch.<br>解决方法有二:</p>\n<ul>\n<li><p>使用.gitmodules,该方法会直接将next theme repository import进来,这样的好处是可以使用最新的next theme,坏处是没法客制化自己的主题配置文件</p>\n<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></pre></td><td class=\"code\"><pre><span class=\"line\">[submodule "next"]</span><br><span class=\"line\"> path = themes/next</span><br><span class=\"line\"> url = https://github.com/iissnan/hexo-theme-next</span><br></pre></td></tr></table></figure>\n</li>\n<li><p>删除themes/next的.git和.gitignore,然后就可以讲themes/next的内容push到repository中了</p>\n</li>\n</ul>\n<h3 id=\"Others\"><a href=\"#Others\" class=\"headerlink\" title=\"Others\"></a>Others</h3><p>1.在.travis.yml中将node_modules添加到cache中,可以加快构建速度<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></pre></td><td class=\"code\"><pre><span class=\"line\">cache:</span><br><span class=\"line\"> directories:</span><br><span class=\"line\"> - node_modules</span><br></pre></td></tr></table></figure></p>\n<p>2.如果想在github的README.md显示构建成功与否的标示,可以修改README.md:<br><figure class=\"highlight plain\"><table><tr><td class=\"gutter\"><pre><span class=\"line\">1</span><br></pre></td><td class=\"code\"><pre><span class=\"line\">[build-info](https://travis-ci.org/userName/repoName.svg)</span><br></pre></td></tr></table></figure></p>"},{"title":"Centos7 Nginx+PHP框架laravel状态码500错误解决!","date":"2018-08-25T01:02:16.000Z","_content":"\nLaravel安装完成后的权限设置,要给`storage`,`bootstrap/cache`目录可写权限,`chmod +x storage`。\n\n我用的环境是lnmp一键安装,配置完成之后我还是不能访问,报500错误。\n\n首先开启php.ini中的错误提示:`display_error=on;`(PHP7.x的调试默认是OFF)。开启后发现,lnmp一键安装的环境中,在nginx的配置文件中有两处设置了open_basedir参数。\n\n由于laravel框架的入口文件不再项目根目录,而在public目录下,当我在lnmp中用lnmp vhost add命令添加虚拟主机并将域名制定到public目录下时,会在public目录下生成.user.ini文件,\n<!-- more -->\n里边的内容是:`open_basedir=/home/wwwroot/blog/public:/tmp/:/proc/`,所以导致laravel请求不到public目录意外的文件而报错。\n\n还有一处实在nginx的配置文件中/usr/local/nginx/conf/fastcgi.conf的最后有类似的配置:`fastcgi_param PHP_ADMIN_VALUE \"open_basedir=$document_root/:/tmp/:/proc/\";`,\n\n这句代表open_basedir的目录跟你的站点目录相同(public),跟上边一样的效果,可以直接对这句进行了注释,或者将项目目录加入`fastcgi_param PHP_ADMIN_VALUE \"open_basedir=$document_root/:/tmp/:/proc/:/home/wwwroot/laravel/\";`,\n\n然后重启lnmp即可解决问题。","source":"_posts/CentOS7-Nginx-PHP-Laravel-500-error.md","raw":"---\ntitle: Centos7 Nginx+PHP框架laravel状态码500错误解决!\ndate: 2018-08-25 09:02:16\ntags:\n- Laravel\n- PHP\ncategory:\n- PHP\n- Laravel\n---\n\nLaravel安装完成后的权限设置,要给`storage`,`bootstrap/cache`目录可写权限,`chmod +x storage`。\n\n我用的环境是lnmp一键安装,配置完成之后我还是不能访问,报500错误。\n\n首先开启php.ini中的错误提示:`display_error=on;`(PHP7.x的调试默认是OFF)。开启后发现,lnmp一键安装的环境中,在nginx的配置文件中有两处设置了open_basedir参数。\n\n由于laravel框架的入口文件不再项目根目录,而在public目录下,当我在lnmp中用lnmp vhost add命令添加虚拟主机并将域名制定到public目录下时,会在public目录下生成.user.ini文件,\n<!-- more -->\n里边的内容是:`open_basedir=/home/wwwroot/blog/public:/tmp/:/proc/`,所以导致laravel请求不到public目录意外的文件而报错。\n\n还有一处实在nginx的配置文件中/usr/local/nginx/conf/fastcgi.conf的最后有类似的配置:`fastcgi_param PHP_ADMIN_VALUE \"open_basedir=$document_root/:/tmp/:/proc/\";`,\n\n这句代表open_basedir的目录跟你的站点目录相同(public),跟上边一样的效果,可以直接对这句进行了注释,或者将项目目录加入`fastcgi_param PHP_ADMIN_VALUE \"open_basedir=$document_root/:/tmp/:/proc/:/home/wwwroot/laravel/\";`,\n\n然后重启lnmp即可解决问题。","slug":"CentOS7-Nginx-PHP-Laravel-500-error","published":1,"updated":"2018-08-25T02:29:23.026Z","comments":1,"layout":"post","photos":[],"link":"","_id":"ckmbipmi90020kgvph60q0gcj","content":"<p>Laravel安装完成后的权限设置,要给<code>storage</code>,<code>bootstrap/cache</code>目录可写权限,<code>chmod +x storage</code>。</p>\n<p>我用的环境是lnmp一键安装,配置完成之后我还是不能访问,报500错误。</p>\n<p>首先开启php.ini中的错误提示:<code>display_error=on;</code>(PHP7.x的调试默认是OFF)。开启后发现,lnmp一键安装的环境中,在nginx的配置文件中有两处设置了open_basedir参数。</p>\n<p>由于laravel框架的入口文件不再项目根目录,而在public目录下,当我在lnmp中用lnmp vhost add命令添加虚拟主机并将域名制定到public目录下时,会在public目录下生成.user.ini文件,<br><a id=\"more\"></a><br>里边的内容是:<code>open_basedir=/home/wwwroot/blog/public:/tmp/:/proc/</code>,所以导致laravel请求不到public目录意外的文件而报错。</p>\n<p>还有一处实在nginx的配置文件中/usr/local/nginx/conf/fastcgi.conf的最后有类似的配置:<code>fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";</code>,</p>\n<p>这句代表open_basedir的目录跟你的站点目录相同(public),跟上边一样的效果,可以直接对这句进行了注释,或者将项目目录加入<code>fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/home/wwwroot/laravel/";</code>,</p>\n<p>然后重启lnmp即可解决问题。</p>\n","site":{"data":{"next2":{"title":"Hexo","subtitle":null,"description":null,"author":"John Doe","language":null,"timezone":null,"url":"http://yoursite.com","root":"/","permalink":":year/:month/:day/:title/","permalink_defaults":null,"source_dir":"source","public_dir":"public","tag_dir":"tags","archive_dir":"archives","category_dir":"categories","code_dir":"downloads/code","i18n_dir":":lang","skip_render":null,"new_post_name":":title.md","default_layout":"post","titlecase":false,"external_link":true,"filename_case":0,"render_drafts":false,"post_asset_folder":false,"relative_link":false,"future":true,"highlight":{"enable":true,"line_number":true,"auto_detect":false,"tab_replace":null},"index_generator":{"path":"","per_page":10,"order_by":"-date"},"default_category":"uncategorized","category_map":null,"tag_map":null,"date_format":"YYYY-MM-DD","time_format":"HH:mm:ss","per_page":10,"pagination_dir":"page","theme":"next","deploy":{"type":"git","repo":"git@github.com:xiaozha87/xiaozha87.github.io.git","branch":"master"},"override":false,"favicon":{"small":"/images/favicon-16x16-next.png","medium":"/images/favicon-32x32-next.png","apple_touch_icon":"/images/apple-touch-icon-next.png","safari_pinned_tab":"/images/logo.svg"},"keywords":"Hexo, NexT","rss":null,"footer":{"icon":"user","copyright":null,"powered":true,"theme":{"enable":true,"version":true}},"canonical":true,"seo":false,"index_with_subtitle":false,"menu":{"home":"/ || home","archives":"/archives/ || archive"},"menu_icons":{"enable":true},"scheme":"Muse","social_icons":{"enable":true,"icons_only":false,"transition":false},"links_icon":"link","links_title":"Links","links_layout":"block","toc":{"enable":true,"number":true,"wrap":false},"sidebar":{"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},"scroll_to_more":true,"save_scroll":false,"excerpt_description":true,"auto_excerpt":{"enable":false,"length":150},"post_meta":{"item_text":true,"created_at":true,"updated_at":false,"categories":true},"post_wordcount":{"item_text":true,"wordcount":false,"min2read":false,"totalcount":false,"separated_meta":true},"post_copyright":{"enable":false,"license":"CC BY-NC-SA 3.0","license_url":"https://creativecommons.org/licenses/by-nc-sa/3.0/"},"mobile_layout_economy":false,"android_chrome_color":"#222","custom_logo":{"enabled":false,"image":null},"highlight_theme":"normal","font":{"enable":false,"host":null,"global":{"external":true,"family":"Lato","size":null},"headings":{"external":true,"family":null,"size":null},"posts":{"external":true,"family":null},"logo":{"external":true,"family":null,"size":null},"codes":{"external":true,"family":null,"size":null}},"mathjax":{"enable":false,"per_page":false,"cdn":"//cdn.bootcss.com/mathjax/2.7.1/latest.js?config=TeX-AMS-MML_HTMLorMML"},"han":false,"disqus":{"enable":false,"shortname":null,"count":true},"changyan":{"enable":false,"appid":null,"appkey":null},"valine":{"enable":false,"appid":null,"appkey":null,"notify":false,"verify":false,"placeholder":"Just go go","avatar":"mm","guest_info":"nick,mail,link","pageSize":10},"gitment":{"enable":false,"mint":true,"count":true,"lazy":false,"cleanly":false,"language":null,"github_user":null,"github_repo":null,"client_id":null,"client_secret":null,"proxy_gateway":null,"redirect_protocol":null},"needmoreshare2":{"enable":false,"postbottom":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"bottomCenter","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}},"float":{"enable":false,"options":{"iconStyle":"box","boxForm":"horizontal","position":"middleRight","networks":"Weibo,Wechat,Douban,QQZone,Twitter,Facebook"}}},"duoshuo_info":{"ua_enable":true,"admin_enable":false,"user_id":0},"facebook_sdk":{"enable":false,"app_id":null,"fb_admin":null,"like_button":null,"webmaster":null},"facebook_comments_plugin":{"enable":false,"num_of_posts":10,"width":"100%","scheme":"light"},"vkontakte_api":{"enable":false,"app_id":null,"like":true,"comments":true,"num_of_posts":10},"rating":{"enable":false,"id":null,"color":"fc6423"},"leancloud_visitors":{"enable":false,"app_id":null,"app_key":null},"firestore":{"enable":false,"collection":"articles","apiKey":null,"projectId":null,"bluebird":false},"busuanzi_count":{"enable":false,"site_uv":true,"site_uv_header":"<i class=\"fa fa-user\"></i>","site_uv_footer":null,"site_pv":true,"site_pv_header":"<i class=\"fa fa-eye\"></i>","site_pv_footer":null,"page_pv":true,"page_pv_header":"<i class=\"fa fa-file-o\"></i>","page_pv_footer":null},"baidu_push":false,"calendar":{"enable":false,"calendar_id":"<required>","api_key":"<required>","orderBy":"startTime","offsetMax":24,"offsetMin":4,"timeZone":null,"showDeleted":false,"singleEvents":true,"maxResults":250},"algolia_search":{"enable":false,"hits":{"per_page":10},"labels":{"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}},"local_search":{"enable":false,"trigger":"auto","top_n_per_article":1},"exturl":false,"note":{"style":"simple","icons":false,"border_radius":3,"light_bg_offset":0},"label":true,"tabs":{"enable":true,"transition":{"tabs":false,"labels":true},"border_radius":0},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},"fancybox":true,"pace":false,"pace_theme":"pace-theme-minimal","canvas_nest":false,"three_waves":false,"canvas_lines":false,"canvas_sphere":false,"canvas_ribbon":{"enable":false,"size":300,"alpha":0.6,"zIndex":-1},"vendors":{"_internal":"lib","jquery":null,"fancybox":null,"fancybox_css":null,"fastclick":null,"lazyload":null,"velocity":null,"velocity_ui":null,"ua_parser":null,"fontawesome":null,"algolia_instant_js":null,"algolia_instant_css":null,"pace":null,"pace_css":null,"canvas_nest":null,"three":null,"three_waves":null,"canvas_lines":null,"canvas_sphere":null,"canvas_ribbon":null,"han":null,"needMoreShare2":null},"css":"css","js":"js","images":"images","version":"5.1.3"}}},"excerpt":"<p>Laravel安装完成后的权限设置,要给<code>storage</code>,<code>bootstrap/cache</code>目录可写权限,<code>chmod +x storage</code>。</p>\n<p>我用的环境是lnmp一键安装,配置完成之后我还是不能访问,报500错误。</p>\n<p>首先开启php.ini中的错误提示:<code>display_error=on;</code>(PHP7.x的调试默认是OFF)。开启后发现,lnmp一键安装的环境中,在nginx的配置文件中有两处设置了open_basedir参数。</p>\n<p>由于laravel框架的入口文件不再项目根目录,而在public目录下,当我在lnmp中用lnmp vhost add命令添加虚拟主机并将域名制定到public目录下时,会在public目录下生成.user.ini文件,<br>","more":"<br>里边的内容是:<code>open_basedir=/home/wwwroot/blog/public:/tmp/:/proc/</code>,所以导致laravel请求不到public目录意外的文件而报错。</p>\n<p>还有一处实在nginx的配置文件中/usr/local/nginx/conf/fastcgi.conf的最后有类似的配置:<code>fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";</code>,</p>\n<p>这句代表open_basedir的目录跟你的站点目录相同(public),跟上边一样的效果,可以直接对这句进行了注释,或者将项目目录加入<code>fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/:/home/wwwroot/laravel/";</code>,</p>\n<p>然后重启lnmp即可解决问题。</p>"}],"PostAsset":[],"PostCategory":[{"post_id":"ckmbipmbh0002kgvpodzfnquu","category_id":"ckmbipmbo0004kgvp89lqeeuw","_id":"ckmbipmc0000dkgvp5va71q14"},{"post_id":"ckmbipmbv000bkgvps4ilkyyh","category_id":"ckmbipmbu0009kgvpkfkk881q","_id":"ckmbipmc6000jkgvpob4mfjf5"},{"post_id":"ckmbipmbl0003kgvpqytoq1r4","category_id":"ckmbipmbu0009kgvpkfkk881q","_id":"ckmbipmc8000nkgvpcwthrefz"},{"post_id":"ckmbipmby000ckgvps14jc1rk","category_id":"ckmbipmbu0009kgvpkfkk881q","_id":"ckmbipmc9000pkgvpdrqd46ya"},{"post_id":"ckmbipmbq0006kgvpqoma0pjm","category_id":"ckmbipmbo0004kgvp89lqeeuw","_id":"ckmbipmcb000skgvprjkiz2yz"},{"post_id":"ckmbipmbr0007kgvpjyia5dn5","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmcb000ukgvpoz1aabsj"},{"post_id":"ckmbipmbt0008kgvpogugp1qc","category_id":"ckmbipmbu0009kgvpkfkk881q","_id":"ckmbipmcc000xkgvppgc4dg8l"},{"post_id":"ckmbipmc3000gkgvpw7uguf7y","category_id":"ckmbipmcb000tkgvpmf8hq3iy","_id":"ckmbipmce0012kgvpxgk1k7z1"},{"post_id":"ckmbipmc6000ikgvpb9tehmq6","category_id":"ckmbipmcd000ykgvp426da9hw","_id":"ckmbipmcg0015kgvpsx4l7ji1"},{"post_id":"ckmbipmht001hkgvpntxr7lh0","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmi2001qkgvpp3hg7h3j"},{"post_id":"ckmbipmhx001lkgvpgmr2in2q","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmi5001ukgvpcn12t8bv"},{"post_id":"ckmbipmhz001nkgvp3f356h1e","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmi8001ykgvp4mus1ved"},{"post_id":"ckmbipmhq001fkgvpxvm5vfyc","category_id":"ckmbipmhw001jkgvp12f12b6a","_id":"ckmbipmia0022kgvpk0ea4ojz"},{"post_id":"ckmbipmi1001pkgvpm0l61y94","category_id":"ckmbipmbu0009kgvpkfkk881q","_id":"ckmbipmib0023kgvpjnllq67q"},{"post_id":"ckmbipmi4001tkgvptgaw1g5l","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmie002akgvpq9uowv8y"},{"post_id":"ckmbipmi4001tkgvptgaw1g5l","category_id":"ckmbipmia0021kgvpzzzb77wx","_id":"ckmbipmif002dkgvpwhwu8k8n"},{"post_id":"ckmbipmi7001xkgvp8lipp7le","category_id":"ckmbipmic0026kgvpkyuh60hb","_id":"ckmbipmig002gkgvp86b5rafp"},{"post_id":"ckmbipmi90020kgvph60q0gcj","category_id":"ckmbipmc7000lkgvphoii1v4v","_id":"ckmbipmii002lkgvpyxjwwyqf"},{"post_id":"ckmbipmi90020kgvph60q0gcj","category_id":"ckmbipmie002bkgvppgymw88j","_id":"ckmbipmii002nkgvph0fscl3f"}],"PostTag":[{"post_id":"ckmbipmbh0002kgvpodzfnquu","tag_id":"ckmbipmbp0005kgvprcs0k6wh","_id":"ckmbipmc5000hkgvpdclb1jj9"},{"post_id":"ckmbipmbh0002kgvpodzfnquu","tag_id":"ckmbipmbu000akgvpjv9kosmv","_id":"ckmbipmc7000kkgvpmo0a4dsz"},{"post_id":"ckmbipmbl0003kgvpqytoq1r4","tag_id":"ckmbipmc1000fkgvpz9syk5p5","_id":"ckmbipmc9000okgvpdnvup8q8"},{"post_id":"ckmbipmbq0006kgvpqoma0pjm","tag_id":"ckmbipmc8000mkgvpheh90fnp","_id":"ckmbipmcc000wkgvpqun1ecv7"},{"post_id":"ckmbipmbq0006kgvpqoma0pjm","tag_id":"ckmbipmca000rkgvpdeswf09e","_id":"ckmbipmcd000zkgvpszsda5fg"},{"post_id":"ckmbipmbr0007kgvpjyia5dn5","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmce0011kgvpx1jjjbom"},{"post_id":"ckmbipmbt0008kgvpogugp1qc","tag_id":"ckmbipmc1000fkgvpz9syk5p5","_id":"ckmbipmcf0014kgvpkhq3xbp6"},{"post_id":"ckmbipmbv000bkgvps4ilkyyh","tag_id":"ckmbipmc1000fkgvpz9syk5p5","_id":"ckmbipmch0017kgvpja1dy8ty"},{"post_id":"ckmbipmby000ckgvps14jc1rk","tag_id":"ckmbipmc1000fkgvpz9syk5p5","_id":"ckmbipmch0019kgvp6mfr1shh"},{"post_id":"ckmbipmc3000gkgvpw7uguf7y","tag_id":"ckmbipmch0018kgvpqdof9dq0","_id":"ckmbipmci001ckgvp0q11bvc3"},{"post_id":"ckmbipmc3000gkgvpw7uguf7y","tag_id":"ckmbipmci001akgvp5r2xkvmj","_id":"ckmbipmcj001dkgvpx1ov2ry8"},{"post_id":"ckmbipmc6000ikgvpb9tehmq6","tag_id":"ckmbipmci001bkgvpaicno30e","_id":"ckmbipmcj001ekgvpt45h3u3d"},{"post_id":"ckmbipmi1001pkgvpm0l61y94","tag_id":"ckmbipmc1000fkgvpz9syk5p5","_id":"ckmbipmi6001wkgvp9zcnr5w5"},{"post_id":"ckmbipmi90020kgvph60q0gcj","tag_id":"ckmbipmci001bkgvpaicno30e","_id":"ckmbipmic0025kgvp48a87yz6"},{"post_id":"ckmbipmi90020kgvph60q0gcj","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmid0027kgvpirebxpj6"},{"post_id":"ckmbipmhq001fkgvpxvm5vfyc","tag_id":"ckmbipmhx001kkgvpn7gue4gp","_id":"ckmbipmid0028kgvpkrtzbe57"},{"post_id":"ckmbipmhq001fkgvpxvm5vfyc","tag_id":"ckmbipmi2001rkgvpwe5fr2am","_id":"ckmbipmie002ckgvpq1ll292c"},{"post_id":"ckmbipmhq001fkgvpxvm5vfyc","tag_id":"ckmbipmi8001zkgvpffvsf52p","_id":"ckmbipmif002ekgvp45ymw082"},{"post_id":"ckmbipmht001hkgvpntxr7lh0","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmig002hkgvpl1je9yrv"},{"post_id":"ckmbipmht001hkgvpntxr7lh0","tag_id":"ckmbipmib0024kgvpzd1vlvau","_id":"ckmbipmih002ikgvps0nz3k4d"},{"post_id":"ckmbipmhx001lkgvpgmr2in2q","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmii002kkgvpp90wdz9s"},{"post_id":"ckmbipmhx001lkgvpgmr2in2q","tag_id":"ckmbipmid0029kgvpb4hz5t1k","_id":"ckmbipmii002mkgvpsxzw7e2k"},{"post_id":"ckmbipmhz001nkgvp3f356h1e","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmij002pkgvpfdbd641o"},{"post_id":"ckmbipmhz001nkgvp3f356h1e","tag_id":"ckmbipmif002fkgvpbnm34kfs","_id":"ckmbipmik002qkgvp0vpflzam"},{"post_id":"ckmbipmi4001tkgvptgaw1g5l","tag_id":"ckmbipmcc000vkgvp03ifidjm","_id":"ckmbipmik002rkgvpelgv7zt2"},{"post_id":"ckmbipmi4001tkgvptgaw1g5l","tag_id":"ckmbipmih002jkgvpc1qrxwf8","_id":"ckmbipmil002skgvpwbxk2wp1"},{"post_id":"ckmbipmi7001xkgvp8lipp7le","tag_id":"ckmbipmij002okgvpt67fs9ik","_id":"ckmbipmil002tkgvpxyfnyjtf"}],"Tag":[{"name":"Welcome","_id":"ckmbipmbp0005kgvprcs0k6wh"},{"name":"How-To","_id":"ckmbipmbu000akgvpjv9kosmv"},{"name":"Github","_id":"ckmbipmc1000fkgvpz9syk5p5"},{"name":"Programming","_id":"ckmbipmc8000mkgvpheh90fnp"},{"name":"Design","_id":"ckmbipmca000rkgvpdeswf09e"},{"name":"PHP","_id":"ckmbipmcc000vkgvp03ifidjm"},{"name":"CSS3","_id":"ckmbipmch0018kgvpqdof9dq0"},{"name":"Javascript","_id":"ckmbipmci001akgvp5r2xkvmj"},{"name":"Laravel","_id":"ckmbipmci001bkgvpaicno30e"},{"name":"Linux","_id":"ckmbipmhx001kkgvpn7gue4gp"},{"name":"VMWare","_id":"ckmbipmi2001rkgvpwe5fr2am"},{"name":"网络配置","_id":"ckmbipmi8001zkgvpffvsf52p"},{"name":"flush","_id":"ckmbipmib0024kgvpzd1vlvau"},{"name":"Cross Domain","_id":"ckmbipmid0029kgvpb4hz5t1k"},{"name":"API","_id":"ckmbipmif002fkgvpbnm34kfs"},{"name":"Wamp","_id":"ckmbipmih002jkgvpc1qrxwf8"},{"name":"Travis","_id":"ckmbipmij002okgvpt67fs9ik"}]}}