2019年7月

阿里云PHP Composer全量镜像正式上线!(附镜下载地址及配置方法)

今天,阿里云正式上线PHP Composer全量镜像,所有PHP开发者都可以通过我们的开发者社区developer.aliyun.com/composer加速Composer安装器。

这款镜像工具的最大优势是快,几乎实现与PHP Packagist官方实时同步,每隔30秒刷新全国CDN缓存。它基于阿里云的对象存储OSS和CDN研发同步系统,通过任务分发,实现同步的快速和稳定。

为什么要开发这款镜像工具?

这其实来自客户和阿里巴巴集团业务的共同诉求。

阿里云上有数万 PHP SDK 用户,提高安装成功率必然要求有最快的镜像同步工具。

此外,有近6万企业的开发者活跃在我们的一站式企业协同研发云——云效平台上,通过云效平台构建 PHP工程,这同样离不开镜像同步工具。

为什么要开放这款工具的下载?

因为我们也是PHP社区的受益者,希望以此回馈。也希望在广泛PHPer的监督下,打磨更好的工具。

过去一周,我们进行了小范围的开发者公测。

非常高兴的是,在没有任何官方推广的情况下,这款工具单日下载量就超过30万次,不少开发者甚至自发宣传推广。在惊喜、感恩的同时,我们也发现了不少问题,不断进行完善和调整。

今天,我们终于可以正式宣布阿里云Composer全量镜像上线,并自信我们有能力服务更广大的PHPer。

我们也在此向Laravel China开发者Summer、禅师致敬:

毫无疑问,我们也是Laravel China的受益者,感谢你们对PHP社区的付出,也非常感谢Summer对我们的认可,阿里云会继续努力,一起让PHP社区变得更好!

- 阅读剩余部分 -

路由器最高速度/性能测试 - Windows 安装 IPerf3

iPerf 简介

Iperf 是一个网络性能测试工具。Iperf 可以测试最大 TCP 和 UDP 带宽性能,具有多种参数和 UDP 特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。

1. 安装 iPerf

1-1. 下载 iPerf

  1. 官方下载链接:https://iperf.fr/iperf-download.php
  2. 蓝奏云下载链接(我上传的版本是:3.1.3):https://www.lanzous.com/b837219

下载对应自己系统的文件:

如果你的是 64位系统,请下载 iperf-*-win64.zip
如果你的是 32位系统,请下载 iperf-*-win32.zip

1-2. 安装 iPerf

将下载好的 iPerf 压缩包解压,然后有两种安装方法,一种是你想要临时使用,一种是长期使用

- 阅读剩余部分 -

最近 NowTool.cn 等域名打不开,原因竟然是...

最近 NowTool.cn 及一些使用 阿里云服务器 的子域名都打不开,一开始我以为是 SSL证书 过期,经过深入的发现,是阿里云 阻断了 非在阿里云备案/接入的域名

域名是腾讯云备案的,之前一直用 腾讯云CDN 绕过阿里云阻断,现在连 HTTPS 都能被阻断了,那我只好借助在阿里云备案的域名腾讯云 CDN 自定义 host头 来解决了,具体操作如下

在宝塔面板,找到 NowTool.cn 站点

绑定一个如 nowtool.cn.nowtime.cc 在 阿里云备案/接入 了的域名,然后腾讯云CDN域名配置那里,自定义 回源host,搞定!如下图所示

Snipaste_2019-07-12_17-50-38.png
Snipaste_2019-07-12_17-51-28.png

效果图

Snipaste_2019-07-12_17-54-08.png

JavaScript 检测数组是否含有重复的值(支持一位及多维数组)

JavaScript 检测数组是否含有重复的值(支持一位及多维数组)

一位数组、二维数组、三维数组我已经测试通过,其它维度组请自行测试
/**
 * 检测数组(支持一位数组/二维数组 及 多维数组)是否有重复的值
 * @author  NowTime<wenzhouchan@gmail.com>
 * @link    https://nowtime.cc/js/655.html
 * @param   arr          需要判断的数组
 * @returns {boolean}    true:含重复的值 false:不含重复的值
 */
function arr_repeat(arr) {
    let hash = {}, index;

    for(index in arr) {
        if(hash[arr[index]]){
            return true;
        }
        hash[arr[index]] = true;
    }

    return false;
}

运行结果

//一维数组
arr_repeat([1,2,1]);
//运行结果:true

arr_repeat([1,2,3]);
//运行结果:false

--------------------------------------

//二维数组
arr_repeat({ss:"1", sss:"1"});
//运行结果:true

arr_repeat({ss:"1", sss:"2"});
//运行结果:true

--------------------------------------

//三维数组
arr_repeat({ss:[1,2,3], sss:[1,2,3]});
//运行结果:true

arr_repeat({ss:[1,2,3], sss:[1,2,3,4]});
//运行结果:false