在 Mac 上用一个命令使用 SSH 做代理科学上网

作为一个开发人员,翻墙是必备本领。
一些常用的参考代码和开发文档官方网站,要么很慢,要么被墙,你懂的,这需要科学上网。
你只要有一个墙外的 Linux 服务器,就能在 Mac 上用一个命令使用 ssh 做代理科学上网。

创建 SSH 秘钥

先创建名称为 pxy_rsa 的本地秘钥(你也可以使用已有的秘钥,怎样创建 ssh 秘钥如果不会自行网上搜索)。

服务器端添加账号

服务器端 ssh 禁用密码登录,配置 key 登录,
添加用户名为 pxy 的账号,只允许作为代理,不允许做其它操作。

使用 root 权限操作,执行以下命令

阅读更多

将 hexo 博客从 Github 搬迁到 Vercel,提高访问速度,效果非常满意

我的「全栈程序员伊爸」博客用 hexo 构建,之前用 GitHub Pages 托管,绑上了自己的 coderpan.com 域名,国内访问极慢,很多时候都不可用,因此搬迁到到 Vercel。搬迁耗时极少,如果熟练的话,几分钟就能完成。

Vercel 提供网站托管服务,个人或非商业站点免费,可以从 github/gitlab/bitbucket 自动部署站点。
就比如我的博客用 hexo 构建,把 hexo 站点源码保存在 GitHub 的一个私有仓库,我用 Vercel 来托管网站,Github 仓库源码每次提交,Vercel 就会自发布博客网站。
原理是 Vercel 同步 GitHub 仓库,通过 package.json 安装依赖包,执行 package.json 里的 scripts 命令来生成静态内容,保存静态内容的目录作为网站根目录提供给网络访问。其中安装依赖包、生成静态内容的命令和静态内容目录都是可以自定义的。

Vercel 托管 hexo 博客比用 GitHub Pages 托管更方便。

  • GitHub Pages: 博客源码存一个代码库,发布的静态内容存一个代码库。用 hexo 发布插件把生成的静态内容提交到 Github 仓库,实现发布博客。
  • Vercel: 只需要一个保存博客源码的 GitHub 代码库,博客源码变更提交后,Vercel 就会自动发布网站。

实操流程:

step 1、把 hexo 应用提交到一个 GitHub repository

源码内容为我们用 hexo 创建的应用的源。
GitHub repository 私有公有都可以。

step 2、把代码库授权给 Vercel

打开 https://vercel.com/new

用 github 账号授权登录后,点击 “Import Git Repository” 下拉菜单,点击 ”Add Github Account“ ,选择你的 hexo 博客代码仓库后,按提示操作就可以。如下图

添加代码库

step 3、绑定域名

在域名管理里面添加自己的域名,然后按提示到你的域名管理后台添加 A/CNAME 记录就可以。

注: Vercel 给你分配的 xxx.vercel.app 子域名被墙,需翻墙后才能访问,绑上你自己的独立域名后,用你的域名浏览不需翻墙。

step 4、Production Deployment

点击 Production Deployment 按钮把项目发布后,他人可访问你的网站。

这样 hexo 博客部署到 Vercel 就完成了,每次博客内容修改,把代码 pushGitHub 仓库后,Vercel 就会自动生成静态页面。

测试用 Octane 加速 Laravel10,并发达到4倍左右,同时对比Hyperf3压力测试

Laravel 开发爽,但性能完全无法忍受。刚完成一个项目,有点时间,试试看用 octane 加持后是否能摆脱 Laravel 的性能魔咒。
Laravel 应用基本可可无缝迁移到 Hyperf,因此同时测试 Hyperf,看看 Swoole 协程异步加持的 Hyperf 是不是比 Laravel 快很多。

测试环境

1
2
3
4
5
6
7
8
9
服务器: 阿里轻量云服务器
CPU: 2核
内存: 2G
OS: CentOS 8.5
PHP: 8.2.5
MySQL: 8.0
Swoole: 5.0.3
Laravel: 10.8
Hyperf: 3.0
阅读更多

Gradle 笔记

Android Studio 运行单元测试类的一个方法

public 方法上加入 @Test 文档标记,该行代码左侧就会出现一个绿色三角形,点击该三角形就能运行该方法。

Android Studio 使用 Socks5 代理

打开 ~/.gradle/gradle.properties,加入设置:

1
2
systemProp.socks.proxyHost=127.0.0.1 
systemProp.socks.proxyPort=1080

注意, Android Studio 的设置 Appearance & Behavior > System Settings > Http Proxy 设置的代理服务器并不是 gradle 用的代理。 gradle 代理配置在 ~/.gradle/gradle.properties 文件中,也可以是项目根目录下的 gradle.properties 中。 gradle 必须使用,并且必须正确配置代理,否则一些包没法安装。

怎样让 Android Studio 单独运行一个类

在类例加入 main 方法,Android Studio 默认是不能执行的,会报错。需要改配置才行。

打开 .idea/gradle.xml,在 GradleProjectSettings 标签下加入 <option name="delegatedBuild" value="false" />

Laravel Eloquent 日期系列化

Laravel Eloquent 日期系列化成 json,默认系列化格式为:2023-03-08T08:16:02.000000Z
原因是 Laravel 模型基类的 serializeDate() 时间系列化方法调用 Carbon\Traits\Converter::toJSON() 方法,返回的是 ISO-8601 格式的日期。

引起问题的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
// Illuminate\Database\Eloquent\Concerns\HasAttributes
protected function serializeDate(DateTimeInterface $date)
{
return $date instanceof DateTimeImmutable ?
CarbonImmutable::instance($date)->toJSON() :
Carbon::instance($date)->toJSON();
}

// class Carbon\Traits\Converter
public function toJSON()
{
return $this->toISOString();
}
阅读更多

Laravel Eloquent 模型属性参数详解

@TODO

$table

模型绑定表名,默认是模型类名 kebab-case 带下划线小写的复数形式。

$primaryKey = ‘id’

$keyType = ‘integer’

fillable

attributes

hidden

casts

数字、字符串类型不需要转换。

appends

$timestamps = true

$dateFormat = ‘Y-m-d H:i:s’

brew 无法执行命令,总出现 Downloading https://.../api/formula.json

每次 brew 命令都出现 Downloading https://formulae.brew.sh/api/formula.json,而且特别慢,总是超时,翻墙了也不管用…
brew 源已经设为阿里云的了,还出现这东西。原因是 brew 4 默认从 HOMEBREW_API_DOMAIN 安装应,每次都下载 formula.json

有两个方式能解决这个问题。

方式1:把 HOMEBREW_API_DOMAIN 设置到国内源,这样每次虽然都会下载 formula.json,但是就几秒的事。

1
2
echo 'export HOMEBREW_API_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles/api' >> ~/.bash_profile
source ~/.zshrc

方式2:禁止从 API 安装应用,不会每次执行命令就跑出这东西,但要手动升级应用。

export HOMEBREW_NO_INSTALL_FROM_API=1 加入 ~/.bash_profile

1
2
echo 'export HOMEBREW_NO_INSTALL_FROM_API=1' >> ~/.bash_profile
source ~/.zshrc

Mac 下用 brew 安装多版本 php

以前用 window 系统的时候,经常去 php 官网下载不同版本的 php 来使用,改一下系统 path 就可以更换默认 php 版本,其它版本用完整路径也可以使用。Mac 上就更省事一点,用 brew 命令就可以安装不同版本的 php,再用 brew-php-switcher 切换默认 php 版本,而且用 pecl 命令就可以安装 pecl 扩展。

查询 php 安装包版本

1
brew search php

执行命令后,你会看到不同版本的 php, 最新版的是不带版本号直接是 php,旧版本带版本号,如:php@8.1php@7.4

安装 php

1
2
brew install php #不带版本号是最新版
brew install php@8.1 # 带版本号

切换 php 版本

阅读更多

Homebrew 设置为阿里源

brew 源极慢,有必要把 Homebrew 源改为成国内源。

Homebrew 源主要有四个部分组成:

名称 说明
brew Homebrew 源代码仓库
homebrew-core Homebrew 核心软件仓库
homebrew-bottles Homebrew 预编译二进制软件包
homebrew-cask 提供 macOS 应用和大型二进制文件

安装 brew

如果还没安装 homebrew,则需要先安装。

用官网推荐安装方式:

1
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果安装很慢,可使用清华源安装

1
2
3
git clone --depth=1 https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install.git brew-install
/bin/bash brew-install/install.sh
rm -rf brew-install

查看当前源

1
2
3
4
5
6
7
8
9
$ cd "$(brew --repo)" && git remote -v
origin https://github.com/Homebrew/brew.git (fetch)
origin https://github.com/Homebrew/brew.git (push)

# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin https://github.com/Homebrew/homebrew-core.git (fetch)
origin https://github.com/Homebrew/homebrew-core.git (push)

改为阿里源

阅读更多