<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[github_38589282的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/github_38589282</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; github_38589282]]></copyright><item><title><![CDATA[Promisify函数]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79274678</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79274678</guid><author>github_38589282</author><pubDate>Tue, 06 Feb 2018 21:16:14 +0800</pubDate><description><![CDATA[函数



promisify(fn, reverse)


fn  有回调函数作为参数的函数
reverse  默认False。当fn的回调函数参数在前时(如setTimeout)，设为True。




源码



function promisify(fn, reverse) {
  if ({}.toString.call(fn) !== '[object Function]') thro]]></description><category></category></item><item><title><![CDATA[Express异常捕获]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79270654</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79270654</guid><author>github_38589282</author><pubDate>Tue, 06 Feb 2018 15:55:15 +0800</pubDate><description><![CDATA[在使用Express框架设计web应用时，一定会遇到异常处理问题。 
因为用户数据或代码自身问题，常常引起请求时，控制器内部异常，res返回不能被执行，前台表现为请求“卡死”。



1 处理 Exception



1.1 Express 错误处理中间件

为了避免这种情况，Express有“错误处理中间件”的机制。



const express = require('express');]]></description><category></category></item><item><title><![CDATA[用async-await实现类似Promise.all()的执行效果]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79268484</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79268484</guid><author>github_38589282</author><pubDate>Tue, 06 Feb 2018 11:04:16 +0800</pubDate><description><![CDATA[使用函数：awaitAll(fn1, fn2, fn3...)async function awaitAll(...fnArr) {
  if ({}.toString.call(fnArr[0]) === '[object Array]') {
    fnArr = fnArr[0];
  }
  const fnNum = fnArr.length;
  const promiseArr =]]></description><category></category></item><item><title><![CDATA[模拟器+Fiddler抓包安卓应用]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79264390</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79264390</guid><author>github_38589282</author><pubDate>Mon, 05 Feb 2018 20:57:34 +0800</pubDate><description><![CDATA[1、使用任意一款安卓模拟器安装应用。 
2、安装Fiddler，并勾选options->connections->allow remote computers to connect 
3、在安卓模拟器的设置中，设置默认wifi，高级设置->使用代理。代理服务器ip为本机ip，端口8888。保存 
4、这时，使用应用，即可在Fiddler中看到请求。]]></description><category></category></item><item><title><![CDATA[MySQL非安装版部署]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79260339</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79260339</guid><author>github_38589282</author><pubDate>Mon, 05 Feb 2018 15:08:20 +0800</pubDate><description><![CDATA[1. 解压 
2. 环境变量 
3. 根目录创建my.ini[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 
[mysqld]
#设置3306端口
port = 3306 
# 设置mysql的安装目录
basedir="D:\mysql-5.7.17-winx64"
# 设置mysql数据库的数据的存放目录
datadir="D:\mysq]]></description><category></category></item><item><title><![CDATA[MongoDB中Date对象和ObjectId对象互转]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79228802</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79228802</guid><author>github_38589282</author><pubDate>Thu, 01 Feb 2018 15:08:39 +0800</pubDate><description><![CDATA[function time2id(time) {
    return mongoose.Types.ObjectId((~~(+time/1000)).toString(16) + '0'.repeat(16));
}
function id2time(id) {
    return new Date(parseInt(id.toString().substring(0, 8), 16) * 1]]></description><category></category></item><item><title><![CDATA[git技巧]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79228732</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79228732</guid><author>github_38589282</author><pubDate>Thu, 01 Feb 2018 15:04:08 +0800</pubDate><description><![CDATA[1、本地init的库，链接到git 
git remote add origin git@github.com:Pingze-github/git-cmd-test.git 
git push -u origin master2、编辑到一半，临时需要pull一下（或切分支点），又不想commit 
git stash 
git pull 
git stash pop3、不小心add .了，撤销，保留]]></description><category></category></item><item><title><![CDATA[Javascript数据类型转换---简易写法]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/79089930</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/79089930</guid><author>github_38589282</author><pubDate>Wed, 17 Jan 2018 20:59:05 +0800</pubDate><description><![CDATA[基本

转字符串： 
''+obj 
转数字： 
+obj 
转整数： 
~~obj 
转布尔值: 
!!obj



技巧

+new Date() = new Date().getTime() 
~~'123.2' = ~~123.2 = 123 
''+[1,2,3] = '1,2,3'

注意



+'123.2KB' // NaN
~~'123.2KB' // 0
parseInt(']]></description><category></category></item><item><title><![CDATA[如何加快Vue单页加载（和打包）速度]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78967912</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78967912</guid><author>github_38589282</author><pubDate>Thu, 04 Jan 2018 13:54:41 +0800</pubDate><description><![CDATA[在使用个人境外服务器运行vue项目时，会遇到打包的vendor.js过大而导致无缓存加载时，页面会空白数秒之久。 
  解决这个问题有2个思路：1是通过压缩混淆代码、gzip实际减小代码大小；2是将部分不会改动的文件提出，放到CDN上。 
  这里列举几种解决方案。（uglify由于vue-cli已默认包含，这里不写）








#1 gzip

使用gzip压缩vendor.js可以有效减]]></description><category></category></item><item><title><![CDATA[windows平台安装gcc等编译工具]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78503814</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78503814</guid><author>github_38589282</author><pubDate>Fri, 10 Nov 2017 22:24:40 +0800</pubDate><description><![CDATA[这里选用MinGW-w64的Msys2版
#1 下载安装MinGW-w64 Msys2MinGW-w64地址：http://www.mingw-w64.org/doku.php/download。选择Msys2。 
或者直接到Msys2官网http://www.msys2.org/下载64位版本。 
直接安装。#2 配置pacman源
  pacman是Msys2自带的包管理工具
在文件…/msys]]></description><category></category></item><item><title><![CDATA[使用GO开发桌面GUI程序]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78494293</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78494293</guid><author>github_38589282</author><pubDate>Thu, 09 Nov 2017 21:29:16 +0800</pubDate><description><![CDATA[使用GO来开发桌面GUI程序，个人感觉有几个好处：
静态编译后只生成单个文件。实现小型和工具型程序不需依赖，易于分享。
直接编译为exe等可执行文件，不用像PyQt、Electron那样再打包。
跨平台编译能力，同时支持多个跨平台库。
并发优化，协程支持，开发多线程GUI程序，比Python效率更优。
语言简单，开发难度较C++小。
常用的GO-GUI库
github.com/andlabs/ui]]></description><category></category></item><item><title><![CDATA[Docker实践记录]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78434875</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78434875</guid><author>github_38589282</author><pubDate>Fri, 03 Nov 2017 14:03:08 +0800</pubDate><description><![CDATA[创建容器（并执行脚本）docker run -d --name [容器名] -v [主机脚本所在目录]:[容器映射目录] -w [容器映射目录] [镜像] [...执行脚本的指令]
  docker run 命令基本结构：  
  docker run [参数] [镜像] [命令] 
查看记录 
查看所有记录 
docker logs [容器]
查看最近N条记录 
docker logs [容器]]]></description><category></category></item><item><title><![CDATA[Ubuntu安装dockerCE]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78434067</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78434067</guid><author>github_38589282</author><pubDate>Fri, 03 Nov 2017 11:51:17 +0800</pubDate><description><![CDATA[参考https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#set-up-the-repository步骤1. 安装https支持、add-apt命令支持等前置sudo apt update 
sudo apt-get install apt-transport-https ca-certificates curl so]]></description><category></category></item><item><title><![CDATA[Ubuntu配置node开发环境]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78432921</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78432921</guid><author>github_38589282</author><pubDate>Fri, 03 Nov 2017 11:01:54 +0800</pubDate><description><![CDATA[1. 安装nvmcurl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bashexport NVM_DIR="$HOME/.nvm" 
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
  The script clones the nvm repos]]></description><category></category></item><item><title><![CDATA[使用Xshell控制虚拟机linux]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78432685</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78432685</guid><author>github_38589282</author><pubDate>Fri, 03 Nov 2017 10:47:19 +0800</pubDate><description><![CDATA[环境
虚拟机：Vmware workstation 14 Pro
镜像：ubuntu-16.04.3-server-amd64.iso
终端：Xshell 5
步骤
Vmware中安装Ubuntu系统（确认网络模式为默认的NAT模式）
在Ubuntu中安装启动openssh如下： 
sudo apt-get install openssh-server 
sudo /etc/init.d/ssh s]]></description><category></category></item><item><title><![CDATA[新建一个Vue项目需要做的]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/78428404</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/78428404</guid><author>github_38589282</author><pubDate>Thu, 02 Nov 2017 19:28:20 +0800</pubDate><description><![CDATA[1. 建立一个Vue项目vue init webpack appname2. 设置编译结果目录a. 修改/config/index下的exports.build.index值为主html文件的路径。 
b. 修改/config/index下的exports.build.assetsRoot值为资源文件(css/js)的路径。3*. 关闭产品环境下的SourceMap生成修改/config/index]]></description><category></category></item><item><title><![CDATA[虚拟机Debian7.7-amd64-standard安装VMware-tools]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/77945635</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/77945635</guid><author>github_38589282</author><pubDate>Tue, 12 Sep 2017 15:23:45 +0800</pubDate><description><![CDATA[1、挂载镜像
debian的standard（无桌面）版本不会自动挂载装有VMware-tools的iso，需要手动挂载：
```
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom -o ro
```
显示 ```/dev/sr0 is already mounted on /mnt/cdrom```表示成功挂载。
2、拷贝和解压
接下来将安装文]]></description><category></category></item><item><title><![CDATA[Node.js方法错误自动重试的实现]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/77414358</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/77414358</guid><author>github_38589282</author><pubDate>Sat, 19 Aug 2017 17:46:03 +0800</pubDate><description><![CDATA[在使用Node.js实现爬虫、检测等功能时，经常会遇到大量网络请求的情况，这时很容易因为超时而使得请求失败。为令结果正确，我们一般会设置一定的失败重试次数，以避免因网络波动引起的失败。若多次尝试最终失败，才抛出错误。下面上一段代码：/**
 * 包裹方法，使其自动错误重试
 * 只能包裹返回Promise的方法
 * 返回promise，可以获取成功的返回值，或最后失败的err
 * 需要运行环境支]]></description><category></category></item><item><title><![CDATA[利用Mongodb聚合（aggregate）来进行复杂查询的技巧]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/76735688</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/76735688</guid><author>github_38589282</author><pubDate>Sat, 05 Aug 2017 20:59:00 +0800</pubDate><description><![CDATA[1、以多个key作为唯一键，分组查询比如项目和主机地址（ip）有交叉关系，需要按ip和proj都不同的方式分组取出数据。 
利用$group的_id对象分组，可以再用$project重命名。db.Model.aggregate([
  {
    $group:{
      _id: {
        ip: '$ip',
        proj: '$proj' 
      }
    }]]></description><category></category></item><item><title><![CDATA[JS利用apply方法，将数组直接当做参数传给函数]]></title><link>https://blog.youkuaiyun.com/github_38589282/article/details/76735206</link><guid>https://blog.youkuaiyun.com/github_38589282/article/details/76735206</guid><author>github_38589282</author><pubDate>Sat, 05 Aug 2017 20:06:52 +0800</pubDate><description><![CDATA[利用apply()方法。
语法：apply([thisObj[,argArray]]) 
定义：应用某一对象的一个方法，用另一个对象替换当前对象。 
说明： 
如果 argArray 不是一个有效的数组或者不是 arguments 对象，那么将导致一个 TypeError。 


比如求一个数组[1,2,3,4,5]的最大值可以写:
let arr = [1,2,3,4,5];
]]></description><category></category></item></channel></rss>