作者归档:misster-kaiji

vs code php intelliSense插件的设置问题

该插件用于php类文件的跳转,方法定义,引用等跳转。
需要配置 可执行文件php.exe的路径,这个路径 可以是 phpstudy 内置的php.exe路径,也可以是 某某编辑器的插件
比如我安装了 zend studio,它会内置php.exe,那么我只需要 把php.exe的路径 放入 配置文件
如下:重启vscode 插件就会生效了
“php.validate.executablePath”: “E:\\zend studio\\plugins\\com.zend.php.executables.windows_7.1.3.201703171134\\resources\\php.exe”,
“php.executablePath”: “E:\\zend studio\\plugins\\com.zend.php.executables.windows_7.1.3.201703171134\\resources\\php.exe”

TortoiseGit密钥的配置

TortoiseGit使用扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥。也就是说使用ssh-keygen -t rsa -C “yourname@yourcompany.com”产生的密钥在TortoiseGit中不能用。而基于github的开发必须要用到rsa密钥,因此需要用到TortoiseGit的putty key generator工具来生成既适用于github的rsa密钥也适用于TortoiseGit的ppk密钥,配置步骤如下:

1、运行TortoiseGit开始菜单中的Puttygen程序

2、点击“Generate”按钮,鼠标在上图的空白地方来回移动直到进度条完毕,就会自动生一个随机的key

3、为密钥设置对应的访问密码,在“Key passphrase”和“Confirm passphrase”的后面的输入框中输入密码

4、将多行文本框中以“ssh-rsa”开头的内容全选、复制,并粘贴到github的 Account Settings -> SSH Keys -> Add SSH key -> Key字段中,这就是适用于github的公钥

5、点击“Save private key”按钮,将生成的key保存为适用于TortoiseGit的私钥(扩展名为.ppk)

6、运行TortoiseGit开始菜单中的Pageant程序,程序启动后将自动停靠在任务栏中,双击该图标,弹出key管理列表

7、点击“Add Key”按钮,将第5步保存的ppk私钥添加进来,关闭对话框即可

经上述配置后,你就可以使用TortoiseGit进行push、pull操作了

原文地址:https://github.com/ysc/APDPlat/wiki/TortoiseGit%E5%AF%86%E9%92%A5%E7%9A%84%E9%85%8D%E7%BD%AE

svg过渡动画

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>svg-circle</title>
    <style>
        .route{
            width:26px;
            height:26px;
            -webkit-animation: route 3s linear infinite;
            animation: route 3s linear infinite;
        }
        .spinner{
            -webkit-animation: rotator 2s linear infinite;
            animation: rotator 2s linear infinite;
        }
        .path {
            stroke-dasharray: 187;
            stroke-dashoffset: 50;
            -webkit-transform-origin: center;
            transform-origin: center;
            stroke: #4285F4;
            -webkit-animation: dash 2s ease-in-out infinite;
            animation: dash 2s ease-in-out infinite;
        }
        @keyframes rotator {
            0% {
                -webkit-transform: rotate(0deg);
                transform: rotate(0deg)
            }

            100% {
                -webkit-transform: rotate(270deg);
                transform: rotate(270deg);
                -ms-transform: rotate(360deg)
            }
        }
        @keyframes route {
            0% {
                -webkit-transform: rotate(0deg);
                transform: rotate(0deg)
            }

            100% {
                -webkit-transform: rotate(360deg);
                transform: rotate(360deg);
                -ms-transform: rotate(360deg)
            }
        }
        @keyframes dash {
            0% {
                stroke-dashoffset: 187;
            }
           
            50% {
                stroke-dashoffset: 46.75;
                -webkit-transform: rotate(135deg);
                transform: rotate(135deg);
            }
           
            100% {
                stroke-dashoffset: 187;
                -webkit-transform: rotate(450deg);
                transform: rotate(450deg);
            }
        }
    </style>
</head>
<body>
    <div class="route">
        <svg class="spinner" width="26px" height="26px" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
            <circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30" style="stroke:#4288ed"></circle>
        </svg>
    </div>
</body>
</html>

demo:http://kaiji.obyee.com/demo/svg_circle.html

有趣的canvas时间展示动画

该项目在 github上一毛一样的代码太多,已经找不到原作者
贴一下代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
    <canvas id="canvas"></canvas>
    <script>
        (function () {

                var digit =
                    [
                        [
                            [0, 0, 1, 1, 1, 0, 0],
                            [0, 1, 1, 0, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 0, 1, 1, 0],
                            [0, 0, 1, 1, 1, 0, 0]
                        ],//0
                        [
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 1, 1, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [1, 1, 1, 1, 1, 1, 1]
                        ],//1
                        [
                            [0, 1, 1, 1, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 1, 1, 0, 0, 0],
                            [0, 1, 1, 0, 0, 0, 0],
                            [1, 1, 0, 0, 0, 0, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 1, 1, 1, 1, 1]
                        ],//2
                        [
                            [1, 1, 1, 1, 1, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 1, 1, 1, 0, 0],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 1, 1, 0]
                        ],//3
                        [
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 1, 0],
                            [0, 0, 1, 1, 1, 1, 0],
                            [0, 1, 1, 0, 1, 1, 0],
                            [1, 1, 0, 0, 1, 1, 0],
                            [1, 1, 1, 1, 1, 1, 1],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 1, 1]
                        ],//4
                        [
                            [1, 1, 1, 1, 1, 1, 1],
                            [1, 1, 0, 0, 0, 0, 0],
                            [1, 1, 0, 0, 0, 0, 0],
                            [1, 1, 1, 1, 1, 1, 0],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 1, 1, 0]
                        ],//5
                        [
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 1, 1, 0, 0, 0],
                            [0, 1, 1, 0, 0, 0, 0],
                            [1, 1, 0, 0, 0, 0, 0],
                            [1, 1, 0, 1, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 1, 1, 0]
                        ],//6
                        [
                            [1, 1, 1, 1, 1, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 0, 1, 1, 0, 0, 0],
                            [0, 0, 1, 1, 0, 0, 0],
                            [0, 0, 1, 1, 0, 0, 0],
                            [0, 0, 1, 1, 0, 0, 0]
                        ],//7
                        [
                            [0, 1, 1, 1, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 1, 1, 0]
                        ],//8
                        [
                            [0, 1, 1, 1, 1, 1, 0],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [1, 1, 0, 0, 0, 1, 1],
                            [0, 1, 1, 1, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 0, 1, 1],
                            [0, 0, 0, 0, 1, 1, 0],
                            [0, 0, 0, 1, 1, 0, 0],
                            [0, 1, 1, 0, 0, 0, 0]
                        ],//9
                        [
                            [0, 0, 0, 0, 0, 0, 0],
                            [0, 0, 0, 1, 0, 0, 0],
                            [0, 0, 1, 1, 1, 0, 0],
                            [0, 0, 0, 1, 0, 0, 0],
                            [0, 0, 0, 0, 0, 0, 0],
                            [0, 0, 0, 0, 0, 0, 0],
                            [0, 0, 0, 1,0, 0, 0],
                            [0, 0, 1, 1, 1, 0, 0],
                            [0, 0, 0, 1, 0, 0, 0],
                            [0, 0, 0, 0, 0, 0, 0]
                        ]//:
                    ];

                var canvas = document.getElementById('canvas');

                if (canvas.getContext) {
                    var cxt = canvas.getContext('2d');
                    //声明canvas的宽高
                    var H = 100, W = 700;
                    canvas.height = H;
                    canvas.width = W;
                    cxt.fillStyle = '#f00';
                    cxt.fillRect(10, 10, 50, 50);

                    //存储时间数据
                    var data = [];
                    //存储运动的小球
                    var balls = [];
                    //设置粒子半径
                    var R = canvas.height / 20 - 1;
                    (function () {
                        var temp = /(\d)(\d):(\d)(\d):(\d)(\d)/.exec(new Date());
                        //存储时间数字,由十位小时、个位小时、冒号、十位分钟、个位分钟、冒号、十位秒钟、个位秒钟这7个数字组成
                        data.push(temp[1], temp[2], 10, temp[3], temp[4], 10, temp[5], temp[6]);
                    })();

                    /*生成点阵数字*/
                    function renderDigit(index, num) {
                        for (var i = 0; i < digit[num].length; i++) {
                            for (var j = 0; j < digit[num][i].length; j++) {
                                if (digit[num][i][j] == 1) {
                                    cxt.beginPath();
                                    cxt.arc(14 * (R + 2) * index + j * 2 * (R + 1) + (R + 1), i * 2 * (R + 1) + (R + 1), R, 0, 2 * Math.PI);
                                    cxt.closePath();
                                    cxt.fill();
                                }
                            }
                        }
                    }

                    /*更新时钟*/
                    function updateDigitTime() {
                        var changeNumArray = [];
                        var temp = /(\d)(\d):(\d)(\d):(\d)(\d)/.exec(new Date());
                        var NewData = [];
                        NewData.push(temp[1], temp[2], 10, temp[3], temp[4], 10, temp[5], temp[6]);
                        for (var i = data.length - 1; i >= 0; i--) {
                            //时间发生变化
                            if (NewData[i] !== data[i]) {
                                //将变化的数字值和在data数组中的索引存储在changeNumArray数组中
                                changeNumArray.push(i + '_' + (Number(data[i]) + 1) % 10);
                            }
                        }
                        //增加小球
                        for (var i = 0; i < changeNumArray.length; i++) {
                            addBalls.apply(this, changeNumArray[i].split('_'));
                        }
                        data = NewData.concat();
                    }

                    /*更新小球状态*/
                    function updateBalls() {
                        for (var i = 0; i < balls.length; i++) {
                            balls[i].stepY += balls[i].disY;
                            balls[i].x += balls[i].stepX;
                            balls[i].y += balls[i].stepY;
                            if (balls[i].x > W + R || balls[i].y > H + R) {
                                balls.splice(i, 1);
                                i--;
                            }
                        }
                    }

                    /*增加要运动的小球*/
                    function addBalls(index, num) {
                        var numArray = [1, 2, 3];
                        var colorArray = ["#3BE", "#09C", "#A6C", "#93C", "#9C0", "#690", "#FB3", "#F80", "#F44", "#C00"];
                        for (var i = 0; i < digit[num].length; i++) {
                            for (var j = 0; j < digit[num][i].length; j++) {
                                if (digit[num][i][j] == 1) {
                                    var ball = {
                                        x: 14 * (R + 2) * index + j * 2 * (R + 1) + (R + 1),
                                        y: i * 2 * (R + 1) + (R + 1),
                                        stepX: Math.floor(Math.random() * 4 - 2),
                                        stepY: -2 * numArray[Math.floor(Math.random() * numArray.length)],
                                        color: colorArray[Math.floor(Math.random() * colorArray.length)],
                                        disY: 1
                                    };
                                    balls.push(ball);
                                }
                            }
                        }
                    }

                    /*渲染*/
                    function render() {
                        //重置画布宽度,达到清空画布的效果
                        canvas.height = 100;
                        //渲染时钟
                        for (var i = 0; i < data.length; i++) {
                            renderDigit(i, data[i]);
                        }
                        //渲染小球
                        for (var i = 0; i < balls.length; i++) {
                            cxt.beginPath();
                            cxt.arc(balls[i].x, balls[i].y, R, 0, 2 * Math.PI);
                            cxt.fillStyle = balls[i].color;
                            cxt.closePath();
                            cxt.fill();
                        }
                    }

                    clearInterval(oTimer);
                    var oTimer = setInterval(function () {
                        //更新时钟
                        updateDigitTime();
                        //更新小球状态
                        updateBalls();
                        //渲染
                        render();
                    }, 50);
                }

            })();
        </script>
</body>
</html>

github : https://github.com/search?p=1&q=updateDigitTime&type=Code&utf8=%E2%9C%93
查看demo:http://kaiji.obyee.com/demo/canvasTime.html