分类 tech 下的文章

近期到处都可以看到这个被刷屏的微信公众号案例。

https://mp.weixin.qq.com/s/ZYfIqwPNbHVepSyJsLFk-w

我们就来聊一聊怎么实现的,说起来也不复杂,主要就是利用 SVG 的动画效果 + 创意达到了这么酷炫的效果。

涉及到也只有两个动画元素 opacityheight 的变化。

微信图文内容本质上也是一段 HTML 代码,先看一个 demo

这是一篇正常的图片,只不过是全图片排版的。

- 阅读剩余部分 -

这是碰到的一道面试题,记录一下。

问题是:如何 json 数据的所有 key 从下划线改为驼峰

下面是答题过程中的实现方法:

const testData = {
    a_bbb: 123,
    a_g: [1, 2, 3, 4],
    a_d: {
        s: 2,
        s_d: 3
    },
    a_f: [1, 2, 3, {
        a_g: 5
    }],
    a_d_s: 1
}

/**
 * _w 的形式转成 W
 */
function toCame(str) {
    return str.replace(/\_(\w)/g, function(a, b) {
        return b.toUpperCase();
    });
}

/**
 * 将一个json数据的所有key从下划线改为驼峰
 * 
 * @param {object | array} value 待处理对象或数组
 * @returns {object | array} 处理后的对象或数组
 */
function mapKeysToCamelCase(data) {
    if(data instanceof Array) {
        data.forEach(function(v, index) {
            mapKeysToCamelCase(v);
        });
    } else if(data instanceof Object) {
        Object.keys(data).forEach(function(v, index) {
            var newValue = toCame(v);
            console.info(newValue);
            
            // 如果名称一致,说明可能不存在转化情况
            if(newValue != v) {
                data[newValue] = data[v];
                delete data[v];
            }

            // 递归
            mapKeysToCamelCase(data[newValue]);
        });
    }

    return data;
}

console.log(mapKeysToCamelCase(testData))

进一步思考:

  1. 这是直接在原有对象上操作的,如何拷贝一个新的对象呢?
  2. ES 对于 Object 的循环应该有更好的方法,如何利用新特征?

...待续

SFTPGo
Full featured and highly configurable SFTP server software
一个全功能和高度可配置的SFTP服务器软件

这是 Github 上作者对这个软件的介绍,适用下来也名副其实,符合我的需求。但是因为官网上安装引导文档比较含糊,就记录一下自己折腾的过程。

以下的操作过程均基于一个全新安装的 Ubuntu 18.04.2 LTS (Bionic Beaver) 操作系统,按道理 Debian 适用。

因为我自己只想配置一个独立的 SFTP 服务器,利用 SFTPGo 来协助管理账号,所以没有适用 MySQL / PostreSQL 之类的数据库,而选用了 SQLite 3.x.

版本:0.9.0
版本:0.9.4-dev

安装

SFTPGo 需要的系统环境

  1. 需要 Go 1.12 版本以上
  2. 需要一个数据库 ( MySQL / PostreSQL / SQLite )
  3. 如果需要运行 cli 测试脚本,还需要 Python 环境和 Request 库。
  4. Git 命令
$ sudo add-apt-repository ppa:longsleep/golang-backports
$ sudo apt update
$ sudo apt install golang-go sqlite3 python3 python3-pip git

SFTPGo 安装

很简单,只需要执行以下命令:

$ go get -u github.com/drakkan/sftpgo

然后在你的 $GOPATH/bin/ 下找到 sftpgo 命令,如果你不知道你的 $GOPATH 目录,请执行 go env 查看你的环境变量。

这样就算安装完成了,但是具体要使用的话,还需要简单配置一下。




- 阅读剩余部分 -

0. 什么是 Caddy

Caddy服务器是一个开源的,使用 Golang 编写,支持 HTTP/2 的 Web 服务端。它使用Golang 标准库提供HTTP 功能。 Caddy 一个显著的特性是默认启用HTTPS。它是第一个无需额外配置即可提供HTTPS 特性的Web 服务器。

以下是基于 Ubuntu 18.04 的安装说明:

1. 安装

你可以直接从 Download Caddy 这里下载,选择好的你平台和插件就可以直接下载运行了。

当然,我比较推崇第二种方式,就是使用 https://getcaddy.com/ 的脚本安装。
官方不推进使用 root 权限来安装运行 caddy,所以我们直接使用普通用户权限执行以下命令即可。

$ curl https://getcaddy.com | bash -s personal

- 阅读剩余部分 -