noHup - open source
type: channel
link: http://www.nohup.cc/tag/open-source/
items: 将台式机上的NDNSIM1.0(包含实验脚本和转发策略代码)移植到Mac上的问题
items: Typecho文章评论时评论者头像引发的性能问题
items: Typecho博客的速度优化
items: DISOPRED的安装和使用
items: BLAST的一些坑
items: SCRATCH的安装和使用
items: PSIPRED的安装和使用

将台式机上的NDNSIM1.0(包含实验脚本和转发策略代码)移植到Mac上的问题
type: item
date: 2015-10-03T05:06:00+00:00
description: Overviewg++编译选项-Werror的问题自己编写的模块编译问题 Overview 这篇文章是我很久之前移植NDNSIM1.0时的笔记，最早想从台式机的Ubuntu 12.04上移植到别的机器的Ubuntu上，都会出现各种编译问题，一直没能成功，之后想在Mac上做实验，所以下决心把台式机中的NDNSIM 1.0的源代码移植到Mac上，主要遇到了以下问题，做了一下记录，以备以后查看。这个移植应该不只是移植到Mac上的方法，而是适用所有Ubuntu系统的。 g++编译选项-Werror的问题 将源代码编译之后，运行./waf报以下错： ../src/ndnSIM/model/wire/ccnb/ccnb-parser/syntax-tree/block.cc:43:15: error: unused variable 'CCN_MAX_TINY' [-Werror,-Wunused-const-variable] 如下图： 这个问题经常出现在NDNSIM移植的过程中。主要是由于NS3中编译时，自动加了-Werror选项，该选项会把编译中遇到的警告全部当错误处理，因此会报错。 解决方法: 使用以下编译命令: CXXFLAGS="-O0 -g" ./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples 代替原来的： ./waf configure --with-python=/opt/local/bin/python2.7 --enable-examples 显式去除-Werror选项即可。 自己编写的模块编译问题 由于我在NS3中，添加了一个叫做ndnPlaneFow的模块，用于做实验，发现编译之后，使用./waf运行，会报以下错误： ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 详细错误如下图： 可见，ndnPlaneFow模块里的源文件在链接上找不到ndnSIM模块的依赖文件。 解决方案： 在ndnPlaneFow模块的wscript文件的编译依赖中，添加ndnSIM： module = bld.create_ns3_module('ndnPlaneFow', ['internet', 'propagation', 'antenna', 'applications','ndnSIM']) 现在就可以在Mac成功编译和运行了NDNSIM了。

Typecho文章评论时评论者头像引发的性能问题
type: item
date: 2015-10-02T16:06:00+00:00
description: Overview评论者头像提供服务怎么找到Common.php小结 Overview 最近在阅读博客中的文章时发现一个奇怪的现象，就是有评论的文章加载速度特别慢，代码块的颜色渲染也要等很久才能显示出来。这让我很困惑，因为我将代码块高亮渲染的代码也放在了本地。最初我以为是代码块中的代码太多，导致渲染时间久。后来发现只有有评论的文章才会出现这种情况，使用了Chrome发现，有评论的页面会出现http://www.gravatar.com/avatar/#####链接请求失败。#####是我省略的一串不可读字符串，后面会说这些字符串是什么。 因为http://www.gravatar.com/avatar这个服务不可用，所以导致页面一直在等待这个网址的回复，直到超出响应时间，才会运行接下来的动作，比如渲染代码块高亮颜色。 评论者头像提供服务 其实blog在显示评论者图片时，并不是显示本地的图片或者评论者自己设定的图像，而是用用头像提供网站服务给评论者一个特定的头像，想知道具体细节，就需要查看下面的文件。 打开blog/var/Typecho/文件夹中的Common.php文件，找到下面的代码： $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; $url .= '/avatar/'; 这里定义了取头像的地址，即https://secure.gravatar.com/avatar或者https://gravatar.com/avatar。 总不能所有的评论者都用一样的图片吧，继续查看紧接着下面的代码： if (!empty($mail)) { $url .= md5(strtolower(trim($mail))); } 原来Typecho根据评论者提供的邮箱，进行md5转化，形成一串字符串，就可以形成一个新的请求链接：http://www.gravatar.com/avatar/#####，这里的#####就是这个md5编码之后的字符串。但是这个请求不只有邮箱md5之后这一个字符串，还有下面几个参数： $url .= '?s=' . $size; $url .= '&r=' . $rating; $url .= '&d=' . $default; 这三个参数从在后台的设置->评论中的选项中读取数据，比如$rating取的数据就是 启用Gravatar头像服务, 最高显示评级为## 的头像，这里的##有一下选项： G - 普通 PG - 十三岁以上 R - 十七岁以上成人 X - 限制级 知道了这些以后，我们要做的就很简单了，只需要修改头像服务提供站点就可以了。将Common.php中的 $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; $url .= '/avatar/'; 替换为 $url = 'http://cdn.v2ex.com/gravatar/'; 我们这里使用的是国内很好的一个程序员社区V2EX提供的CDN服务，速度很快。 如果你想在评论时显示一个自定义头像，去 www.gravatar.com 注册一个账号，并上传一张自己喜欢的头像，就可以了。如果你没设置过，这个网站也会给你返回一个默认头像。 现在评论之后，就可以出现评论者的头像了，而且速度非常快。 怎么找到Common.php 可能有人会好奇，我怎么恰好知道在Common.php里面修改呢。这其实是个通用的方法： 在我用Chrome查看完页面之后，就知道http://www.gravatar.com的网站服务提供方出现了问题，既然后台没办法设置这个，那一定是在代码中哪个地方设置的。 在blog的根目录，使用下面的linux命令查找所有包含gravatar.com的文件： grep -nr gravatar.com . 输出下面的结果： ./admin/profile.php:14: <a href="http://gravatar.com/emails/" title="<?php _e('在 Gravatar 上修改头像'); ?>"><?php echo ' mail, 220, 'X', 'mm', $request->isSecure()) . '" alt="' . $user->screenName . '" />'; ?> ./var/Typecho/Common.php:939: $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; ./va…

Typecho博客的速度优化
type: item
date: 2015-10-02T15:21:00+00:00
description: OverviewMathJax公式插件下载MathJax开源库上传到服务器修改代码font-awesome下载font-awesome.min.css上传到服务器修改代码下载font-awesome资源文件 Overview 由于在写笔记的时候会用到公式，因此使用了一个插件MathJax，可以很漂亮显示公式，但是发现用了这个插件之后，有公式显示的页面加载特别慢，使用Chrome查看了链接请求，发现了问题所在：这个插件会请求 cdn.mathjax.com 上的js代码，而 cdn.mathjax.com 的服务器非常不稳定，因此经常需要等待很久，网页才能正常显示。 好在因为Chrome会缓存js，css，图片等信息，因此通常这种情况会发生在用户第一次访问或者定期清理了缓存之后。 为了有更好的用户体验和加载速度，我把插件MathJax插件用到的库放到了我们自己的服务器上。 修改之后，发现还有外链，干脆直接一起给放到服务器上了。 MathJax公式插件 下载MathJax开源库 这里的MathJax库是指插件用到的开源库，可以在github上下载到：https://github.com/mathjax/MathJax attention here 2024年12月10号更新 最新版本的MathJax已经改变了目录结构，根目录中已经不再有我们下面会用到的MathJax.js文件了，所以这里提供一个以前的历史版本下载：https://github.com/mathjax/MathJax/releases/tag/2.6.0。从这个页面的末尾点击Source code链接下载。 上传到服务器 下载之后解压缩，重命名为MathJax，我放在了blog的一个目录下：blog/usr/uploads/js。 修改代码 在blog/usr/plugins中找到MathJax.php，MathJax.php就是插件MathJax的所有文件，编辑MathJax.php，找到下面这行代码： echo ' '; 可以看到src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"，修改为src="http://####/blog/usr/uploads/js/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"就可以了。 这里的http://####/blog就是我们博客的地址，可以看得出来，我们修改插件，让他指向了放在服务器上的MathJax库。attention here 2024年12月10号更新 如果下载的是最新版本的，会发现目录更改了，已经没有MathJax.js了，需要引用新的文件MathJax/es5/tex-mml-chtml.js，可以相应地修改为src="http://####/blog/usr/uploads/js/MathJax/es5/tex-mml-chtml.js?config=TeX-AMS-MML_HTMLorMML"就可以了（欢迎反馈）。 现在重新打开网站涉及公式的文章，瞬间响应。 font-awesome 修改了MathJax插件之后，发现还是有外链存在，借助Chrome看了下博客的外链请求，发现下面的外链指向：http://apps.bdimg.com/libs/fontawesome/4.2.0/css/font-awesome.min.css，想了下还是放在自己的服务器上吧，一来是可以加速访问，二来可以防止哪天别人不提供服务了，我们就没办法加载这个css文件了。 下载font-awesome.min.css 直接从http://apps.bdimg.com/libs/fontawesome/4.2.0/css/font-awesome.min.css就可以打开这个css，右键另存就可以了。 上传到服务器 我们把自己保存的font-awesome.min.css上传到blog所在的文件夹下blog/usr/themes/jianshu/css，因为我们使用了jianshu主题，为了方便，我直接放在了jianshu的css文件夹中。 修改代码 找到 ，将下面这句代码： 修改为 <link rel="stylesheet" href="<?php $this->options->themeUrl('css/font-awesome.min.css'); ?>"> 就可以访问到我们服务器上的font-awesome.min.css了。 下载font-awesome资源文件 重新加载网页，发现网站上的小图标都没了！我开始去了解下font-awesome是什么，找到下面的解…

DISOPRED的安装和使用
type: item
date: 2015-09-25T01:25:00+00:00
description: Overview1.DISOPRED的下载2.DISOPRED的安装2.1 常规的安装步骤2.2 MAC下的不兼容3.DISOPRED的配置4.DISOPRED的使用 Overview DISOPRED是一个蛋白质内部非结构区域的预测软件，使用DISOPRED，我们可以很方便地得到一个蛋白质序列的非结构区域信息，能够为蛋白质特征分析提供更多的信息。 1.DISOPRED的下载 去http://bioinfadmin.cs.ucl.ac.uk/downloads/DISOPRED/这里就可以下载各个版本的DISOPRED，这里我们下载最新版本的DISOPRED3.16.tar.gz。 2.DISOPRED的安装 因为DISOPRED也是以源码包的形式提供下载，因此也需要下载之后自己编译。先将下载好的 解压解压之后的文件夹为DISOPRED，进入DISOPRED目录，按照README文件的步骤安装。 2.1 常规的安装步骤 进入DISOPRED目录，使用下面的三行命令安装： make clean make make install 如果是linux的话通常就可以正常使用了。 2.2 MAC下的不兼容 如果是MAC系统，会有两个地方需要修改。 在执行make这一步的时候会报以下错误： disord_pred.c:246:43: error: use of undeclared identifier 'CLKRATE' runtime += (double) abs(temp - last_t) / CLKRATE; ^ disord_pred.c:248:59: error: use of undeclared identifier 'CLKRATE' runtime += (double) (0x7fffffff - last_t + (temp + 1)) / CLKRATE; 查看disord_pred.c，我们发现下面的几行代码： #ifdef unix #define CLKRATE 1000000 #endif 这个宏在unix系统下才定义了CLKRATE变量，因此在MAC下编译时就会报CLKRATE未声明的错误，我们在disord_pred.c中上面这几句代码后面添加如下代码： #ifdef __MACH__ #define CLKRATE 1000000 #endif 这样在MAC系统下一样会执行#define语句，重新执行make命令，这次就可以顺利通过了。 在执行make install的时候会报以下错误： mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict mv: illegal option -- t usage: mv [-f | -i | -n] [-v] source target mv [-f | -i | -n] [-v] source ... directory make: *** [install] Error 64 查看Makefile文件，发现下面的代码： install: mkdir ../bin/ mv -t ../bin disopred2 diso_neu_net diso_neighb combine svm-predict 可以看出来，make install步骤就是在DISOPRED目录下建立一个bin文件夹，并将make步骤中生成的可执行程序都复制到bin文件夹下，只是在使用mv命令时用了-t参数，MAC下不支持这个参数，所以我们用下面的mv命令替换上面的mv -t命令，修改后如下： install: mkdir ../bin/ mv disopred2 diso_neu_net diso_neighb combine svm-predict ../bin/ 注意，修改完之后，需要重新执行make clean和make步骤，再执行make install就可以了。 3.DISOPRED的配置 安装成功之后，我们就可以通过DISOPRED目录下的run_disopred.pl脚本使用DISOPRED程序了。 但在使用之前，我们还需要配置一下run_disopred.pl脚本，打开这个脚本，找到下面的代码： ## IMPORTANT: Set the paths to folder with the NCBI executables and to the ## sequence database my $NCBI_DIR = "/home/bin/blast-2.2.26/bin/"; my $SEQ_DB = "/home/uniref/uniref90"; 在有了SCRATCH和PSIPRED…

BLAST的一些坑
type: item
date: 2015-09-21T05:30:00+00:00
description: Overview1.BLAST的下载和安装2.关于BLAST可执行程序的配置2.1 PSIPRED中对BLAST程序的调用2.2 SCRATCH中对BLAST程序的调用3.关于BLAST本地数据库的配置3.1 SCRATCH中对BLAST数据库的使用方式最容易出错的就是-d数据库路径的指定。3.2 PSIPRED中对BLAST数据库的使用方式 Overview 因为在使用PSIPRED和SCRATCH都使用到了BLAST，安装和使用的过程中遇到了一些问题，这里主要记录下BLAST安装和使用过程中遇到的一些问题，并没有详细记录完整的BLAST安装和使用说明，毕竟还没有直接使用BLAST，等用到的时候再详细记录。 BLAST，全称Basic Local Alignment Search Tool，即“基于局部比对算法的搜索工具”，能够实现比较两段核酸或者蛋白质序列之间的同源性的功能，具有较快的比对速度和较高的比对精度，适用于多种序列比对的情况，在常规双序列比对分析中应用最广泛。 1.BLAST的下载和安装 其实在PSIPRED的安装和使用中，我们已经详细介绍了BLAST的安装过程，可以先看看这篇文章了解完整的安装过程，这里更多的是剖析PSIPRED和SCRATCH对BLAST的使用。 我们依然假定从ftp://ftp.ncbi.nih.gov/blast/executables/release/2.2.26/下载了2.2.26版本的BLAST，因为BLAST提供下载的不是源码包，而是编译之后的可执行程序，因此是平台相关的，要注意选择与你当前系统匹配的版本（操作系统类型&操作系统位数）。 2.关于BLAST可执行程序的配置 因为下载的BLAST已经是可执行程序，因此不需要编译，可以直接运行，将下载下来的程序解压之后就会得到blast-2.2.26文件夹，打开blast-2.2.26/bin文件夹，就会看到BLAST所有的可执行程序： bl2seq blastclust copymat formatdb impala megablast seedtop blastall blastpgp fastacmd formatrpsdb makemat rpsblast 其中blastpgp就是最常被其他软件使用的BLAST程序。 将BLAST完整的程序执行路径添加到$PATH路径之后，在任何地方都可以直接使用程序名运行程序，而不必使用完整的路径名，以blastpgp为例，可以直接只用blastpgp + 参数而不是使用完整路径/blastpgp + 参数来运行blastpgp。 2.1 PSIPRED中对BLAST程序的调用 事实上，上面虽然配置好了BLAST可执行程序路径，使得我们可以在任何地方方便地运行程序，但是当我们使用runpsipred脚本运行PSIPRED时依然会报blastpgp not found的错误，查看runpsipred脚本，发现以下代码： # Where the NCBI programs have been installed set ncbidir = /usr/local/bin ... $ncbidir/blastpgp -b 0 -j 3 -h 0.001 -d $dbname -i $tmproot.fasta -C $tmproot.chk >& $tmproot.blast ... $ncbidir/makemat -P $tmproot runpsipred脚本使用的/usr/local/bin/blastpgp访问blastpgp，因此找不到blastpgp，改为下面的代码，直接调用blastpgp和makemat。 # Where the NCBI programs have been installed set ncbidir = /usr/local/bin ... # modified blastpgp -b 0 -j 3 -h 0.001 -d $dbname -i $tmproot.fasta -C $tmproot.chk >& $tmproot.blast ... # modified makemat -P $tmproot 2.2 SCRATCH中对BLAST程序的调用 如果不是在执行SCRATCH程序时报了blastpgp的错误，你很难感觉到SCRATCH中BLAST的存在，因为SCRATCH的README中没要求你安装和配置BLAST. 这是因为SCRATCH自带了一个32位的linux安装包，不能在Mac或者64位的linux系统上执行。 按照 SCRATCH的安装和使用 中的方法下一个正确的版本解压之后覆盖原来cd Bioinformatics/Softwares/SC…

SCRATCH的安装和使用
type: item
date: 2015-09-17T08:32:00+00:00
description: Overview1.下载SCRATCH-1D2.安装SCRATCH-1D3.验证SCRATCH-1D4.使用SCRATCH-1D Overview 在对氨基酸序列进行机器学习建模时，需要对氨基酸序列做特征提取，越丰富的特征通常可以带来越精准的预测结果，因此可以由原始的氨基酸序列预测出蛋白质的2级结构，水溶性等，丰富特征提取时的特征。 SCRATCH作为UCI开发的一个套件包，提供了多种不同的蛋白质预测功能，这些预测器被打包成一个集成的套件安装包SCRATCH-1D (SCRATCH Suite of One-Dimensional Predictors)。 SSpro Release 5.2 Protein secondary structure prediction (3-class) SSpro8 Release 5.2 Protein secondary structure prediction (8-class) ACCpro Release 5.2 Protein relative solvent accessibility prediction (at the 25% threshold) ACCpro20 Release 5.2 Protein relative solvent accessibility prediction (thresholds 0% to 95%) PROFILpro Release 1.1 Protein evolutionary information / sequence profiles for 1D predictors HOMOLpro Release 1.1 Homology-based secondary structure & solvent accessibility prediction 1D-BRNN Release 3.3 One-dimensional bidirectional recurrent neural networks 上面文档对于这些软件的说明非常清晰明了，这里就不再一一解释。 实际上，SCRATCH-1D还包含了一个BLAST包(BLAST也是PSIPRED运行所需要的安装包，同样由UCI开发)，版本号为blast-2.2.26，32位。官方的文档中也对这个包进行了说明： The linux 32 bit version of blast is delivered by default in the 'pkg' sub-folder of the package for a better compatibility with most operating systems. If this version of blast is not compatible with your operating system or for improved performances on 64 bit systems, please download the blast version matching your operating system at: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/release/LATEST/ and replace the version provided in the package by the downloaded one without changing the installation folder name (even the release number). 如果自带的这个BLAST包不兼容或者需要64位的版本，可以自行去上面的网站上下载。 1.下载SCRATCH-1D 可以通过访问UCI的官方下载页面 http://download.igb.uci.edu/，找到 SCRATCH-1D release 1.1(linux version, 2.7 GB)去下载，后面的 installation instructions和 documentation就是本文参考的官方说明和安装文档。 2.安装SCRATCH-1D 参照installation instructions上面的步骤，可以很容易地安装。 将下载的SCRATCH-1D_1.1.tar.gz压缩包解压，解压后文件夹为SCRATCH-1D_1.1。 tar -xvzf SCRATCH-1D_1.1.tar.gz 进入SCRATCH-1D_1.1。 cd SCRATCH-1D_1.1 运行SCRATCH-1D_1.1目录下的安装脚本install.pl。 perl install.pl 这时命令行输出会提示安装成…

PSIPRED的安装和使用
type: item
date: 2015-09-17T03:00:00+00:00
description: Overview1.下载PSIPRED2.安装PSIPRED3.安装BLAST3.1 下载BLAST3.2 安装BLAST3.3 配置BLAST可执行程序当我们运行blastpgp + 参数时，系统在哪里查找blastpgp程序呢3.4 配置BLAST本地数据库注意：blast文件夹中就是uniref50.**等数据库文件了，而不是文件夹uniref50!!注意：官方的说明文档是将下列内容写入.ncbirc，结果BLAST的程序找不到指定位置的数据库。3.5 测试BLAST程序如果数据库没正确配置，程序没能找到数据库的话，上面的命令会没有任何输出，也不会提供错误或者警告信息，非常坑。4.使用PSIPRED4.1 psipred目录说明4.1 运行runpsipred_single4.2 运行runpsipred通常情况下来说，这里会报错。 Overview 在对氨基酸序列进行机器学习建模时，需要对氨基酸序列做特征提取，越丰富的特征通常可以带来越精准的预测结果，因此可以由原始的氨基酸序列预测出蛋白质的2级结构，水溶性等，丰富特征提取时的特征。 PSIPRED作为一个常用的蛋白质二级结构预测工具，常见于各种蛋白质序列的预测论文中，这里主要记录一下PSIPRED的安装和使用。 其实PSIPRED官方的README文档已经很清楚了，按步骤可以很顺利的安装，只是因为PSIPRED本身运行需要一些额外的软件安装，因此在这里一并记录下来。 1.下载PSIPRED 通过http://bioinfadmin.cs.ucl.ac.uk/downloads/psipred/，可以找到PSIPRED的下载页面，最新的版本为3.5，下载psipred3.5.tar.gz即可。如果有特别的需要，可以去old文件夹里下载对应的版本。 2.安装PSIPRED 下载的psipred3.5.tar.gz是一个源代码包，因此需要自己编译安装一下，步骤如下： 解压压缩文件，得到psipred文件夹。 tar -xvzf psipred3.5.tar.gz 进入psipred文件夹，代码和编译代码的脚本在其中的src文件夹中，继续进入src文件夹 cd psipred cd src 使用make命令编译源代码 make make install 编译通过之后，会生成该软件的可执行程序，在psipred/bin中，查看这个文件夹，就会发现其中的可执行文件psipred。同时，在psipred目录下，还得到了一个运行psipred的脚本文件runpsipred，这个脚本文件设置了运行psipred的一些默认参数，使用runpsipred可以很方便地运行psipred，命令如下： ./runpsipred example.fasta 这里的example.fasta就是需要预测的蛋白质序列文件，确保你的电脑安装了tcsh解释器，因为runpsipred是一个tcsh脚本，mac下已经默认安装，ubuntu下使用： sudo apt-get install tcsh 就可以安装tcsh解释器。 如果你想先测试下psipred，可以使用psipred/example文件夹中的测试文件，这个文件夹下共有三个文件：example.fasta，example.horiz，example.ss和example.ss2。其中example.fasta为输入示例文件，example.horiz，example.ss和example.ss2为输出结果。 有了运行脚本和示例输入，看起来可以试一下了，运行一下命令 ./runpsipred example/example.fasta 发现报了以下错误： /usr/local/bin/blastpgp: Command not found. FATAL: Error whilst running blastpgp - script terminated! 错误提示找不到blastpgp，因此我们需要先安装这个程序。 3.安装BLAST 我们先看一下README中的说明： You must also install the PSI-BLAST and Impala software from the NCBI toolkit, and also install appropriate sequence data banks. The NCBI toolkit can be obtained from URL ftp://ftp.ncbi.nih.gov PSI-BLAST executables can be obtained from ftp://ftp.ncbi.nih.gov/blast 尽管在运行./runpsipred example/ex…