如果一切顺利,后面应该需要开始使用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 | networksetup -setwebproxy Wi-Fi <IP>:<PORT> |
当然这和你在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现在还有点酸痛,弯腰费劲