frp 实现内网穿透将内网 WebService 接口绑定自定义域名供外网访问

要将内网的 WebService 接口提供给外网访问,最简单又免费的方式就是通过 inconshreveable/ngrok: Introspected tunnels to localhost,ngrok 通过一条命令就可以实现内网穿透,并且不需要服务器。但是它有如下缺点:

  • 免费版本不支持自定义域名,每次执行命令后域名都是随机分配的。
  • 目前官方的已经升级到了2.x,已经不开源了。1.x 版本是开源的,但不再更新,目前最新的开源版本是 1.7.1。
  • ngrok 1.x 版本作者也说了有严重的内存、文件描述符泄漏等问题,国内的那些服务用的都是这个版本的客户端,稳定性很差。

我主要是是因为 ngrok 不能自定义域名,每次重启后重新执行命令生成的域名又变了,这样联调时对方又得更换接口地址,很尴尬的。

于是我找到一款和 ngrok 类似的软件 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.,它能满足我的需求,但是使用它没有服务器似乎不行(当然我也不清楚作者有没有提供仅使用客户端的平台化服务),当然自己待建服务端个性化更强也更安全。

Read more

iOS 项目 Build 时报错 Library not found for -lstdc++.6.0.9

Xcode 升级到 Xcode 10.0 后,由于去掉陈旧的 libstdc++ 库替换为 libc++,libstdc++.6.0.9就被删除了。
libc++ 相对是苹果最新版的 C++ 库,经过优化并全面支持 C++ 11。

如何解决我就不重复写了,直接看 Kila2/libstdc-.6.0.9.tbd: libstdc++.6.0.9.tbd,写得很清楚了。

怎么修改 Xcode Run Script 使用 RVM 管理的 Ruby 版本?

Xcode Run Script 使用的 Ruby 版本是 macOS 自带的 Ruby,如果你用 RVM 切换了别的 Ruby 版本,Xcode 使用的 Ruby 还是系统自带的,不会有变化。
那么这会造成什么影响呢?

比如你用 RVM 管理的 Ruby 通过 gem 安装了在 Xcode Run Script 中需要使用的 Sass,那么在 Xcode 中 Sass 命令将执行失败,你会得到 command not found: sass 或如下错误:

1
2
3
4
5
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem sass (>= 0.a) with executable sass (Gem::GemNotFoundException)
from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
from /usr/local/bin/sass:23:in `<main>'
from /usr/local/bin/ruby_executable_hooks:22:in `eval'
from /usr/local/bin/ruby_executable_hooks:22:in `<main>'

如果你不清楚这些,你就很难搞清楚你明明安装了 Sass,而且在终端可以执行,却为什么在 Xcode 中却不行。

Read more

解决安装 RVM 遇到的问题

Ruby 版本管理器 (RVM)
RVM 是一个命令行工具,可让您轻松安装、管理和使用从解释器到 gems 的多个 ruby 环境。

我基本上不做 Ruby 开发,但是很多开发都依赖 Ruby 开发的工具或包,比如 Cocoapods、Sass 等。RubyGems 是 Ruby 的包管理器,我们可以通过它安装这些工具或包。

CocoaPods 是 Swift 和 Objective-C Cocoa 项目的依赖管理器。它拥有超过 87,000 个库,并在超过 300 万个应用程序中使用。CocoaPods 可以帮助您优雅地扩展您的项目。

Sass 是世界上最成熟、最稳定、最强大的专业级 CSS扩展语言。

我写的这篇文章 Error installing cocoapods: cocoapods-core requires Ruby version >= 2.6. The current ruby version is 2.5.8.224. - 干志雄的博客,就是因为 Ruby 版本过低导致不能安装最新的 Cocoapods,因此我需要更新 Ruby,macOS 自带的 Ruby 可以通过 Brew 来更新,如果你想管理多个版本的 Ruby,就可以通过 RVM。因为我担心直接更新系统自带的 Ruby 会影响到现有环境,所以我用 RVM 来管理。

我为什么决定不再使用 macOS Mojave

我的主力 MBP 2018 目前使用的是还是 macOS Mojave。

1
2
3
4
$ sw_vers 
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G9028

Mojave 是 2018 年 6 月 4 日在 Apple 的全球开发者大会上宣布,并于 2018 年 9 月 24 日向公众发布。虽然 10.14.6 的最后一个 BuilVersion 18G9323 发布日期为 2021 年 7 月 21 日,但是从第一个版本至今已有 3 年多了,且目前最新的 macOS 版本都 12.1。

macOS 最新版本
macOS Monterey 12.1
macOS Big Sur 11.6.2
macOS Catalina 10.15.7
macOS Mojave 10.14.6

那我为什么这么久还不更新,又为什么突然决定不再使用 macOS Mojave,决定更新到 macOS Monterey 最新版本呢?

Read more

注意了 Typora 的软换行在 GitHub 中是无效的

在 Typora 中按下 Shift + Enter 是软换行,按下此组合键后,可以看到换了一行,但是推送到 GitHub 上后,你会发现换行是无效的。

要解决这问题,你就要搞清楚空格、软换行、硬换行、换段的在 Typora 中的概念。

如何重新或全新安装 Windows 11?

重新或全新的意思就是安装前系统盘的所有数据都将被删除,然后安装新的系统。
如果你想保留现有系统盘中的数据,将系统升级到 Windows 11,请移步至 Windows 11 Installation Assistant

随着微软制作了安装 Windows 的程序,那些不懂电脑的人不再需要像以前需要找电脑店或他人付费安装系统了。
使用 Windows 官方的安装程序只需要安装程序提示进行安装即可,安装过程很简单。

配置 Visual Studio 的 IIS Express 运行的站点局域网访问

Visual Studio 启动的站点,默认运行在 IIS Express 中,而 IIS Express 默认配置是只支持 localhost 访问的,因此不支持局域网访问,如果在局域网中另一台电脑通过 IP 来访问,会提示如下:

1
2
Bad Request - Invalid Hostname
HTTP Error 400. The request hostname is invalid.

MBP 16 2021 和 MBP 15 2018 性能比较

朋友买了一台 M1 PRO 的 MBP 16 2021,那就比较下这个新款和我的 2.2 GHz Intel Core i7 的 MBP 15 2018 的性能吧。

总体来说,性能高 2 倍多,且性价比高出太多,如果没有 MBP 的非常值得购买。但是我已经有了,所以我还是等明年春季的 Mac mini 吧,期待能上 M2。

Read more