解决 Homebrew 安装软件下载失败

当我们使用 Homebrew 安装软件时,由于一些特殊原因会出现软件包下载失败的情况。这种还很常见,我们没法改变环境,但却可以取巧的解决,那就是利用 Homebrew 缓存的特性,手动预先下载软件。

方法一: 手动下载软件包到缓存目录

以安装 Dart 为例:

1
2
3
4
5
6
7
8
$ brew install dart
==> Installing dart from dart-lang/dart
==> Downloading https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.1/sdk/dartsdk-macos-x64-release.zip

curl: (56) LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
Error: An exception occurred within a child process:
  DownloadError: Failed to download resource "dart"
Download failed: https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.1/sdk/dartsdk-macos-x64-release.zip

你所不知的 PHP 断言(assert)

PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE。本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao)。

本文基于 PHP Version 7.1.28

什么是断言

编写程序时,常会做出一定的假设,那断言就是用来捕获假设的异常,我们也可以认为断言是异常的一种特殊形式。

断言一般用于程序执行结构的判断,不可让断言处理业务流程。用的最多的场景就是单元测试,一般的单元测试框架都采用了断言。

1
2
3
4
assert(1 == 2);

// 运行结果:
// Warning: assert(): assert(1 == 2) failed in /Users/shocker/Desktop/demo.php on line 25

替换 Docker 或 Laradock 中 Debian 系统镜像源解决软件安装问题

Docker Debian 镜像源替换

因多数默认的 Docker 镜像为国外的,而采用的镜像源也是国外的,故访问很慢,所以我们需要替换为国内的(比如阿里云或163等)。

注意: 不同版本的 Debian 镜像源地址不一样

Debian 7.x (wheezy)

1
2
3
4
5
6
# 更新apt-get源
RUN echo \
    deb http://mirrors.aliyun.com/debian/ wheezy main non-free contrib\
    deb http://mirrors.aliyun.com/debian/ wheezy-proposed-updates main non-free contrib\
    deb-src http://mirrors.aliyun.com/debian/ wheezy main non-free contrib\
    > /etc/apt/sources.list

Shell 命令组合集[2019.04.05更新]

本文档收集了常用的 Shell 命令组合,依然在不定期更新中…

终端命令

日志

统计独立 IP 数量

1
awk '{print $1}' access.log | sort -n | uniq | wc -l

查看某一时间段的 IP 访问量

1
grep "05/Apr/2019:0[1-9]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l

查看访问最频繁的前 100 个 IP

1
awk '{print $1}' access.log | sort -n | uniq -c | sort -rn | head -n 100

PHP 算法 —— 快速排序

算法原理

下列动图来自**@五分钟学算法**,演示了快速排序算法的原理和步骤。

quick

步骤:

  • 从数组中选个基准值
  • 将数组中大于基准值的放同一边、小于基准值的放另一边,基准值位于中间位置
  • 递归的对分列两边的数组再排序

Go 包依赖管理工具 —— govendor

govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具。与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本、以及无相互侵入的开发和管理。

vendor 特性

最开始的时候,Go 并没有提供较为妥当的包管理工具。从 1.5 版本开始提供了 vendor 特性,但需要手动设置环境变量 GO15VENDOREXPERIMENT=1

在执行 go buildgo run 命令时,会按照以下顺序去查找包:

  • 当前包下的 vendor 目录
  • 向上级目录查找,直到找到 src 下的 vendor 目录
  • 在 GOROOT 目录下查找
  • 在 GOPATH 下面查找依赖包

在发布 1.6 版本时,该环境变量的值已经默认设置为 1 了,该值可以使用 go env 命令查看。

在发布 1.7 版本时,已去掉该环境变量,默认开启 vendor 特性。

搞懂 macOS 上的主机名/hostname/ComputerName

主机名/hostname/ComputerName 的含义

主机名、hostname 是一个东西,中英文而已,指的是你本地网络上的电脑可以通过主机名访问你的电脑。这个与 Linux 系统是一致的。

ComputerName,这个是 macOS 才有的东西。跟 Windows 上一样,表示的是电脑名称,给人看的。

可以从下图中看出来(系统偏好设置 > 共享):

-w668

对于 macOS 来说,它会按以下的顺序来确定主机名,直到获取到为止:

  • 从以下文件中读取:/etc/hostconfig
  • 从以下系统配置项读取:/Library/Preferences/SystemConfiguration/preferences.plist 中的 System ▸ System ▸ HostName
  • 由本机 IP 地址的反向 DNS 查询获取
  • 从以下系统配置项读取:/Library/Preferences/SystemConfiguration/preferences.plist 中的 System ▸ Network ▸ HostNames ▸ LocalHostName
  • 如果以上方法都没获取到,就为默认的 localhost

一键解决 go get golang.org/x 包失败

问题描述

当我们使用 go getgo installgo mod 等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况。如下所示:

1
2
3
$ go get -u golang.org/x/sys

go get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

PHP 优秀资源汇集[2022.09.22更新]

以下是我整理好的 PHP 资源,各位看官拿去用,不用再自己找了。 在 GitHub 上稳定更新,觉得不错请点个 Star ❤️ 如转载分享,请保留出处,谢谢 😆 原文地址: https://shockerli.net/post/php-awesome GitHub: https://github.com/shockerli/php-awesome PHP