Elixir - MacOSX深色主题上的Observer爬坑记录

Big Sur 上有些问题,具体解决可以参考 https://www.jianshu.com/p/cf70b835fba5

Elixir/Erlang 有个超赞的开箱即用的运行时信息观察器,这个是其他语言至今都还没有的,得益于Erlang的Actor模型和工作机制,开启这个观测器,完全不会影响和阻碍系统的正常运行。

因此,在即使在生产环境,你也可以毫无心理负担的使用。甚至,更牛叉的是,由于Erlang的天生分布式,你甚至能够在本地,用这个观察器,观察远程生产节点的运行信息。

正常启动, 在iex命令行中输入 :observer.start() 回车

iex(1)> :observer.start()

image.png
image.png
image.png
image.png
image.png

看~ 你的程序的运行时的一切信息,都能被可视化的查看,如同开启上帝视角。

你羡慕吗?想要吗?


然而,自从MacOS多了一个深色主题模式,每次我打开 Observer , 看到的却是成了这个效果

image.png

我也在微信群里询问其他人,其他人又说没问题 ,让我不断怀疑自己这个问题,我便只好忍 再忍 一直忍,困扰了我一年多两年了。

每打开一次,便不爽一次,通过分析, erlang 的 observer 用的GUI是 wxWidgets,然后我在对比,推断问题可能出在 wxWidgets 上,那便动手,

brew upgrade wxmac

到最新版了,还是不行. wxmac 是 wxWidgets 的mac包名.

再看,brew 上 wxmac (wxwidgets)最新是 3.0.x
而 wxwidgets 的源代码已经到了 3.1.4 (也称 wx-3.2) 了

有源代码,这应该是难不倒我了.

下载源码,编译,安装,
一顿操作猛如虎
结果问题原地杵

还是不行,(现在推断起来,应该是 brew install erlang 没有用源码构建方式)

无奈,问题只好再继续挂起。
再后来,Phoenixframework 1.4.x 出了LiveView, 并用LiveView实现了LiveDashboard, 直接在浏览器上就可以看了,内容虽然少了点,但也差不多够用了。 对 observer 的这个问题,也就没那么纠结了,但始终不爽~

image.png

再次赞叹,Elixir的世界,就是这么屌。


今天,偶然有打开了 observer, 再忍不住,网络上搜索信息,看到,确实,wxWidgets是到了 3.1.3 版本才正式支持了深色模式,看到源码库,最新稳定版本已经是 3.1.4 , 而且,有人在 erlang-22上搞定了,便重新整理了一下思路。有可能是之前,安装erlang时,没有重新用源码编译,erlang的预编译包用的还是 3.0.5 , 而系统上是 3.1.4 ,直接挂了。

再次动手

# 卸载
brew uninstall elixir
brew uninstall erlang
brew uninstall wxmac

# 修改 wxmac 配置,强行指定 wxwidgets 3.1.4
brew edit wxmac

# 把 第4 、第5 行,url and sha265 替换为下面信息,然后保存
  url "https://github.com/wxWidgets/wxWidgets/releases/download/v3.1.4/wxWidgets-3.1.4.tar.bz2"
  sha256 "3ca3a19a14b407d0cdda507a7930c2e84ae1c8e74f946e0144d2fa7d881f1a94"

# 在 50 行左右的 "--with-zlib" 前,插入
      "--enable-compat28",

#保存
image.png
image.png

# 源码方式安装 wxmac
brew install --build-from-source wxmac
brew link --overwrite wxmac

brew install fop

brew 安装 erlang 和 elixir

brew install --build-from-source erlang
brew install elixir

或者 asdf 安装erlang 和 elixir (推荐)

asdf plugin add erlang
asdf install erlang 23.1.1
asdf global erlang 23.1.1

asdf plugin add elixir
asdf install elixir 1.11.1-otp-23
asdf global elixir 1.11.1-otp-23

再次进入 iex , 启动observer

iex
iex(1)> :observer.start()

正常的页面回来了, 欧耶~

image.png

分享这个过程,是想说明:

问题总有解决办法,
当前没能解决,是因为我们的 知识 经验 能力 还有不足

那就努力提升 知识 经验 能力,多去思考 探索

蓝莲花传送门

image.png

你可能感兴趣的:(Elixir - MacOSX深色主题上的Observer爬坑记录)