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 来管理。

解决 iOS 微信发送 GIF 图片不能直接预览的问题

上一篇文章 小于 25M 的视频竟然微信还要压缩,那怎么办? - 干志雄的博客 有讲到使用 LICEcap 录制 GIF,但是录制的 GIF 在 iOS 微信聊天窗口不能直接预览,必须要下载到相册后才能预览,这多麻烦啊!

我也不想再折腾了,因此用 LICEcap 快速录制了一个 GIF,但是在聊天窗口不会显示预览,点击进去也只是显示的 GIF 的第一帧,一个静态图而已。需要保存到相册才能预览 GIF。差评差评差评啊 😱😱😱。

极客的我也找到了解决方法。

小于 25M 的视频竟然微信还要压缩,那怎么办?

录制了一个 9.8M 桌面视频想发给朋友看下,竟然不超过 25M 的视频微信还要压缩,结果朋友那里看到的视频就是模糊的,由于视频以文字为主,可想而知根本没法看。

听说微信限制不能发送超过 25M 的图片或视频,可是这个文件不超过 25M 啊 🤔🤔🤔。