Haskell 安装

如果一切顺利,后面应该需要开始使用Haskell 这个函数式编程语言。

今天要解决的问题是Haskell基础环境搭建,即安装问题
当然如果你的网络条件正常,一句话就可以搞定安装:

1
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

本人使用mac os系统,详情是可以从https://www.haskell.org/downloads/ 这里获得

那这么简单的事情有必要写个文章记录一下吗? 有的,很不幸,我所在区域这个网站需要代理才可以访问。
而且我的软路由已经报废(为了省钱和时间,近期不打算再买了),所以我需要尝试通过其它方式解决此问题。

环境描述

  • MacBook Pro 11.5 系统,个人感觉后面描述的方法和具体版本号无关
  • 网络受限,不可以直接访问Haskell官网,看来没啥人用这个语言,或者……
  • 具备一个Http代理可以通过其访问

方法一 网络全局代理

应该是最简单的方法,通过配置全局网络代理实现。我使用Wi-Fi网络,指令如下:

1
2
3
4
5
6
7
8
networksetup -setwebproxy Wi-Fi <IP>:<PORT>
networksetup --setsecurewebproxy Wi-Fi <IP>:<PORT>
# enable
networksetup -setwebproxystate Wi-Fi on
networksetup -setsecurewebproxystate Wi-Fi on
# disable
networksetup -setwebproxystate Wi-Fi off
networksetup -setsecurewebproxystate Wi-Fi off

当然这和你在System Settings > Network > Wi-Fi > Advanced > Proxies > Web Proxy 设置是同理的
当然你还应该需要设置Secure Web Proxy,毕竟安装访问路径是Https的

BUT, 这个方法对于我来说是行不通的,因为我的公司电脑权限受限,没有权限可以在网络中修改代理。

方法二,Terminal中的代理

如前所提到的,大家可以一眼看出安装指令其实是执行一个shell安装脚本
在Terminal中运行,那我们就尝试将Terminal设置代理就好了

本人使用.bash_profile来进行terminal的环境配置,添加如下指令来启动terminal代理

1
export http_proxy="<IP>:<PORT>"

注意这里不携带代理协议,例如http://

只是terminal代理还是不够的,因为安装shell脚本使用的curl进行下载,该指令有自己的代理,还需要创建.curlrc文件来设置curl的代理。文件中内容为:

1
proxy = "<IP>:<PORT>"

也是不包含代理协议,为什么这样做,而不是使用 -x 或者 –proxy 来指明curl的代理呢,原因就是:配置一次curlrc,搞定所有curl指令,简单啊。
现在就可以通过代理安装Haskell了。

此方法同理可以使用到Linux系统中,如果以后遇到了,到时再尝试了
值得注意的是,Linux系统的http_proxy是应该指明代理协议的

其它方法

除了软路由,我还知道另一个方法
那就是通过其它代理工具将Mac系统中http请求都拦截并代理出去。
当然这也需要管理员权限去安装软件和允许一些代理操作,例如更新证书链等
大家可以自行尝试

题外话:网络限制

关于网络限制,个人观点:我是十分理解的,但也深受其”害”,浪费了很多时间,也学到很多知识。
在我们这里,如果你不懂点网络代理相关知识,你都无法成为一名优秀的程序员(呵呵,说笑了)

作为程序员,平时会发现很多技术网站收到限制。我虽然可以保证自己的行为,但是谁可以保证全网人民的行为是得当呢
所以网络限制是可以理解。

没有限制的自由将会是无序

题外话:本周上线小结

本周做了一次系统上线,去修复一个production issue(我之前挖的一个坑),review一下:

  • 这个issue 本可以避免,今后应该注意和其它团队的沟通,不能做Assumption,要Confirm
  • 从发现Issue到解决,速度还是很快的,5天之内,完成修复,走完上线流程,拿到各种approval,并上线成功
  • 关于PT的Dispensation,PT Header的判断虽然带来了一些额外effort,但是也从中学到一些新观点,还好通过个人努力按时解决了,没有耽误上线

下周回归新项目组,开始新的功能实现

P.S. 周五无意间闪到了腰,S**T现在还有点酸痛,弯腰费劲