0%

常用命令

service vsftpd restart 重启ftp服务

ls——列出文件

ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件
ls a* 列出当前目录下以字母a开头的所有文件
ls -l *.doc 给出当前目录下以.doc结尾的所有文件

cp——复制文件

cp afile afile.bak 把文件复制为新文件afile.bak
cp afile /home/bible/ 把文件afile从当前目录复制到/home/bible/目录下
cp * /tmp 把当前目录下的所有未隐藏文件复制到/tmp/目录下
cp -a docs docs.bak 递归性地把当前目录下的docs目录复制为新目录docs.bak,保持文件属性,并复制所有的文件,包括以句点开头的隐藏文件。为了方便起见,-a选项包含-R选项
cp -i 在覆盖前询问用户
cp -v 告诉用户正在做什么

mv——移动和重命名文件

mv aflie bfile 将afile重命名为bfile
mv afile /tmp 把当前目录下的afile移动到/tmp/目录下

rm——删除文件和目录

rm afile 删除文件afile
rm * 删除当前目录下的所有文件(未隐藏文件)。rm命令不删除目录,除非也指定了-r(递归)参数
rm -rf domed 删除domed目录以及它所包含的所有内容
rm -i a* 删除当前目录下所有以字母a开头的文件,并且在每次删除时,提示用户进行确认

cd——更改目录

cd ~ 切换到主目录
cd /tmp 切换到目录/tmp
cd dir 切换到当前目录下的dir目录
cd / 切换到根目录
cd .. 切换到到上一级目录
cd ../.. 切换到上二级目录
cd ~ 切换到用户目录,比如是root用户,则切换到/root下

阅读全文 »

html代码:

<input type="file" id="excel-file">
<textarea id="js_con" style="width: 800px;height: 800px"></textarea>

JS代码:

$('#excel-file').change(function(e) {
    var files = e.target.files;

    var fileReader = new FileReader();
    fileReader.onload = function(ev) {
        try {
            var data = ev.target.result,
                    workbook = XLSX.read(data, {
                        type: 'binary'
                    }), // 以二进制流方式读取得到整份excel表格对象
                    persons = []; // 存储获取到的数据
        } catch (e) {
            console.log('文件类型不正确');
            return;
        }

        // 表格的表格范围,可用于判断表头是否数量是否正确
        var fromTo = '';
        // 遍历每张表读取
        for (var sheet in workbook.Sheets) {
            if (workbook.Sheets.hasOwnProperty(sheet)) {
                fromTo = workbook.Sheets[sheet]['!ref'];
                console.log(fromTo);
                persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
                // break; // 如果只取第一张表,就取消注释这行
            }
        }
        console.log(persons);
        $('#js_con').text(JSON.stringify(persons))
    };

    // 以二进制方式打开文件
    fileReader.readAsBinaryString(files[0]);
});

插件地址:js-xlsx

设置全屏:

<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content=" black " />
<meta name="apple-mobile-web-app-title" content="应用名称" />
<meta name="full-screen" content="yes">
<meta name="x5-fullscreen" content="true">
<meta name="applicable-device" content="mobile">

添加图标到主屏幕:

<link rel="apple-touch-icon" href="images/app/144x144.png" />
<link rel="apple-touch-icon-precomposed" ref="images/app/144x144.png" />
<link rel="apple-touch-startup-image" ref="images/app/144x144.png" />

添加启动界面:

<link rel="apple-touch-startup-image" href="images/app/750x1294.png" media="(device-width: 375px) and (-webkit-device-pixel-ratio: 2)">
<link rel="apple-touch-startup-image" href="images/app/1242x2148.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3)">
<link rel="apple-touch-startup-image" href="images/app/2048x1496.png" sizes="2048x1496" media="screen and (min-device-width:481px) and (max-device-width:1024px) and (orientation:landscape) and (-webkit-min-device-pixel-ratio: 2)">  
<link rel="apple-touch-startup-image" href="images/app/1536x2008.png" sizes="1536x2008" media="screen and (min-device-width:481px) and (max-device-width:1024px) and (orientation:portrait) and (-webkit-min-device-pixel-ratio: 2)">  

阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页:

<script>
    if(('standalone' in window.navigator)&&window.navigator.standalone){
        var noddy,remotes=false;
        document.addEventListener('click',function(event){
                noddy=event.target;
                while(noddy.nodeName!=='A'&&noddy.nodeName!=='HTML') noddy=noddy.parentNode;
                if('href' in noddy&&noddy.href.indexOf('http')!==-1&&(noddy.href.indexOf(document.location.host)!==-1||remotes)){
                        event.preventDefault();
                        document.location.href=noddy.href;
                }
        },false);
    }
</script>

项目为一级目录

1.在项目里设置vue-router为history模式:

const router = new VueRouter({
    mode: 'history',
    routes: [...]
})

2.服务端配置(nginx 环境):

location / {
    try_files $uri $uri/ /index.html;
}
项目为二级目录 ( subWeb 为对应的二级目录名称)

1.在项目里设置vue-router为history模式:

const router = new VueRouter({
    mode: 'history',
    base:'/subWeb',
    routes: [...]
})

2.在vue.confing.js配置:

module.exports = {
  publicPath:"/subWeb"
}

3.在入口文件中index.html 的head 标签内加入:

<meta base ="/subWeb/">

4.服务端配置(nginx 环境):

location /subWeb {
    try_files $uri $uri/ /subWeb/index.html;
}

找到git 安装目录中bash.bashrc文件

打开文件,在文件最底部加上alias vue=’winpty vue.cmd’

版本升级:

npm 升级最新版本:
npm install npm@latest -g


yarn 升级最新版本:
npm install yarn@latest -g


vue 升级最新版本:
npm uninstall -g @vue/cli
npm install -g @vue/cli

Visual Studio Code 是由微软开发的一款免费、跨平台的文本编辑器。由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱。

1.Auto Close Tag: 标签自动补全

2.Autoprefixer: css3前缀自动补全

3.beautify: 代码格式化(js、css、html)

4.cssrem: px、rem互转

5.minify: 代码压缩,生成.min文件(js、css、html)

6.One Dark Theme: 编辑器皮肤

7.Open in Browser: 在浏览器中打开文件(仅限html文件)

8.Path Intellisense: 路径自动提示

9.vscode-svgviewer: svg图片查看器

10.vscode-fileheader: 文件注释(顶部)

11.vscode-icons: 文件图标

12.html5 boilerplate: html文件模板

13.Path Intellisense:文件路径提示

14.Live Server:配置网络环境

15.Settings Sync:云同步vscode插件配置

正则匹配:空行 – ^\s\n 元素 – ([^”])

如何按照产品要求实现多平台下一致的分享效果,包括分享文案的动态生成,在没有Native的帮助下是比较困难的。下面总结了一套较为完整的分享方案。

阅读全文 »

安装Shdowsocks服务端

#安装pip
yum install python-pip
#使用pip安装shadowsocks
pip install shadowsocks

更新一下pip install –upgrade pip

配置Shdowsocks服务,并启动

用vim /etc/shadowsocks.json 编辑这个文件, 并写入以下内容

1
2
3
4
5
6
7
8
9
10
11
{
"server":"0.0.0.0",
"server_port":443, #这个是你本地的软件填写的端口(服务器代理端口)
"local_address":"127.0.0.1",
"local_port":1080, #这软件代理端口
"password":"", #这个是你的密码
"timeout":300, #超时时间设置
"method":"aes-256-cfb", #经典的加密方式
"fast_open":false,
"workers":5 #启动的进程数量
}

操作命令

#启动
ssserver -c /etc/shadowsocks.json -d start
#关闭
ssserver -c /etc/shadowsocks.json -d stop
#重启
ssserver -c /etc/shadowsocks.json -d restart

使用本机Shdowsocks客户端, 连接服务端上网(配置)

Windows 下载地址

Android 下载地址

安装

解压已上传的mongodb压缩包:

tar zxvf mongodb-linux-x86_64-rhel62-3.4.5.tgz

将解压后的文件夹移动至指定目录:

mv mongodb-linux-x86_64-rhel62-3.4.5/ /usr/local/mongodb

创建数据文件夹、日志文件和mongo配置文件:

mkdir -p  /usr/local/mongodb/data
touch /usr/local/mongodb/mongod.log
touch /usr/local/mongodb/mongodb.conf

修改配置文件:

vim /usr/local/mongodb/mongodb.conf
在配置文件中加入如下代码:
dbpath=/usr/local/mongodb/data
logpath=/usr/local/mongodb/mongod.log
logappend = true 
port = 27017 
fork = true 
auth = true
阅读全文 »

JS打开app应用,如果不存在就去下载应用

var APPCommon = {
    iphoneSchema: 'yr-hotblood://',
    iphoneDownUrl: '',
    androidSchema: 'yr-hotblood://',
    androidDownUrl: '',
    openApp: function () {
        var this_ = this;
        //微信
        if (this_.isWeixin()) {
            if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
                $('.wechat img').attr("src", "images/tips_weixin_ios.png");
            } else {
                $('.wechat img').attr("src", "images/tips_weixin_android.png");
            }
            $(".wechat").css("height", $(window).height());
            $(".wechat").show();
        } else {//非微信浏览器
            var baseUrl = window.location.href.replace(/http:\/\/|https:\/\//, '');
            if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {
                var loadDateTime = new Date();
                window.setTimeout(function () {
                    var timeOutDateTime = new Date();
                    if (timeOutDateTime - loadDateTime < 5000) {
                        window.location = this_.iphoneDownUrl;//ios下载地址
                    } else {
                        window.close();
                    }
                }, 25);
                $('#js_downSrc').attr('href', this_.iphoneDownUrl);
                window.location = this.iphoneSchema + baseUrl;
            } else if (navigator.userAgent.match(/android/i)) {
                try {
                    var appKey=this.androidSchema + baseUrl;
                        openApp(appKey,this.GetQueryString('refresh'));
                } catch (e) {
                }
                $('#js_downSrc').attr('href', this_.androidDownUrl);
            }
        }
    },isWeixin: function () { //判断是否是微信
        var ua = navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == "micromessenger") {
            return true;
        } else {
            return false;
        }
    },GetQueryString(t){
        var n = new RegExp("(^|&)" + t + "=([^&]*)(&|$)", "i"), e = window.location.search.substr(1).match(n);
        return null != e ? decodeURI(e[2]) : null
    }
};
APPCommon.openApp();
function openApp(appKey,refresh) {
    var isRefresh = refresh; // 获得refresh参数
    if(isRefresh == 1) {return}
    window.location = appKey;
    window.setTimeout(function () {
        window.location.href += '?refresh=1' // 附加一个特殊参数,用来标识这次刷新不要再调用myapp:// 了
    }, 500);
}

注:iphoneSchema、androidSchema 需要开发在app中设置;android 应用不能直接打开,只能通过点击事件触发