工欲善其事,必先利其器。
在后续的生信心得分享之前,我想先谈一下开发环境的构建以及网络调试的问题。用直接一点的话说便是---
"你是不是长期上不了Google,查资料倍感烦恼?"
"你是不是发现在下国外的软件速度会越来越慢...刚开始还有100k,后来直接就倒在了进度条上?"
"安装软件十分费劲,存放、编译、设置环境变量等步骤十分繁琐;再考虑到后续更新简直更烦人..."
这篇文章主要就是用来解决这些问题。当然,鉴于这个问题的敏感性,我将主要从网络安全-数据保密的角度阐释相关理论(only)。希望大家能够在目前的特殊网络环境对症下药,根据自己的需要做到有的放矢。
简而言之,主要两种情况:
IP地址在通信管道上被block;
DNS无法正确解析。
如果你不知道什么是DNS,有兴趣请自行百度。在这里为了增加文章的可读性,我们不妨将其理解为在网络交通中指路的交警,功能是实时翻译网址为IP地址。
当然一些无良运营商以及其它有关方出于自身经济利益等因素会对流量进行劫持。例如,你想上一个baidu.com,人家非给你导流到澳门赌场在线发牌,给别人强行做广告牟利。其做法就是利用恶意的DNS解析到错误IP地址,从而使得访问出现以上问题。
对付这种情况当然有对应的策略,我们只需要人工指定某网址对应的IP地址即可。在各个系统中都有这样的名单,叫做hosts。点到为止,具体的位置请自行百度。
当然这种对应关系常常会动态变化---即我今天的指定的google IP往往后面就失效了,而hosts的访问优先级是高于代理工具和外源DNS查询结果的,所以之前取巧的IP地址失效后必须删除,否则就给你带到沟里去了。
有些无良运营商将网络访问IP直接封掉,使得我们看到404。对于这种情况,之前所述的trick都回天泛术,所做的只能绕道而行曲线救国。
无良运营商“没有访问限制”也是相对而言的,否则这条路未免也太简单了点(In fact, all traffic online is censored by the big brother.)。因此这就牵扯到伪装(encrypt)流量的问题。各种proxy工具也就是在这个上面下文章。
当然你可能会想让我推荐一个工具。因此我推荐你们看看生信技能树[2017-11-23]的一篇文章。别人造好的轮子我也不想重复造了。
不过要说明的是,这个方法不一定可行,谷歌现在可精明了...不是你想薅羊毛就可以的。如果有需要,可以去相关网站直接花RMB租服务器进行科学计算吧。多一句,阿里云等就算了。当然也有现网站卖现成做好的梯子,完全够科研用。
以上是我认为一些出于实用目的,所能实现正常上网的最简洁的理论知识了。我相信我能说的已经够多,有心人也知道怎么去做了。
最后再提示小的细节:
清理DNS【flush DNS】 错误的DNS结果是有缓存的,这就意味着常常你需要排毒(否则还会掉到坑里)。对于windows大多使用:
ipconfig/flushdns
Mac OS使用:
sudo dscacheutil -flushcache
对于国外访问十分困难这一情况,其实科研界也有着手应对。其中很重要的一点就是建立镜像,目前在国内主要的镜像源在清华、中科大。兰州大学目前也承担了很多镜像的建立工作。
由于本人常用的编程环境为R以及Python,下面直接贴一下Bioconductor、CRAN、Conda(后面会详细阐述)的镜像指定代码:
对于RStudio的两大软件托管仓库:
chooseBioCmirror()chooseCRANmirror()
我们所要选取无非就是网络环境最为接近的那个镜像,这样可以极大地提高软件下载速度。
在Anaconda中推荐使用清华开源镜像库:
只需要跟着在terminal添加即可:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/
anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/
anaconda/pkgs/free/
conda config --set show_channel_urls yes
很多小白上来就问Conda是什么,能有什么用。在Linux安装软件远比win/mac复杂。一般来说源码的安装需要经过冗杂的编译过程(make - make test - make install),如果编译成功,最后还要将环境变量添加到bashrc中。
Conda大体可以与360软件管家之类的软件进行类比。当然,除了一站式安装软件的功能外,anaconda的用处远比windows上的各类管家软件强大。在此试举几例用途,其他用途大家可以自行学习manual或者参考Cheatsheet进行管理。
安装软件
conda install # -c 参数表示托管地址
软件列表
conda list
环境模拟
有时候由于软件兼容性的原因我们需要构建旧版本的Python或者R等配套环境,利用conda可以轻易实现这一点:
conda create --name py35 python = 3.5 R = 3.3.2
最后给大家贡献一张使用Anaconda的作弊小抄~(点击阅读原文获取)
祝大家新年愉快~
点击以下「关键词」,查看往期内容:
TCGA | 小工具 | 数据库 |组装| 注释 | 基因家族 | Pvalue
基因预测 |bestorf | sci | NAR | 在线工具 | 生存分析 | 热图
生信不死 | 初学者 | circRNA | 一箭画心| 十二生肖 | circos
舞台|基因组 | 黄金测序 | 套路 | 杂谈组装 | 进化 | 测序简史
生信人-2018