Share,learn,discuss and spread software in professional astronomy

Marginalization vs. Conditioning


buggy的软件要配流氓脚本

近来要被Fermi Science Tools折磨疯了。

 其中有一个无比玄妙的bug,就是自己装在64位服务器上的版本,有的时候正常,有的时候只占cpu不做事。这时就要把它kill掉,然后重新提交,或许它又正常了。真贱啊。

多方测试无果,只好写了个流氓脚本,自动监督命令的执行,每隔30秒检查一下命令是否在正确输出,如果没有就杀了它重新运行。

 auto_rerun.sh :

函数原型很重要

这种东西,不出错时完全不重要;一旦出错让人完全找不着北。

如果被调函数在单独的文件中定义,比如

function.c:

void myfun(int i)
{
//do something with i
}

然后主函数文件中声明

main.c:

extern void myfun(int i);
int main()
{
myfun(-1); 
return 0;
}

这个程序完全没问题。

后续开发过程中,对myfun做了点改动,

void myfunL(long long i)
{
}

如何让Makefile自动强制更新指定的目标

一个简单的例子,两个主程序(prog_x.c和prog_y.c)依赖同一个库文件(myfuns.c),但编译时需要对myfuns.c使用不同的条件编译。比如,编译myfuns.c给prog_x.c用时,需要定义一个宏 FLAG_FOR_X,而编译myfuns.c给prog_y.c用时不需要这个宏。即两个函数所需的编译方式分别是:

cc  myfuns.c -DFLAG_FOR_X  -c
cc  myfuns.c -c

IDL 7.0 Linux版的安装及路径设置

32位linux下的安装很少出什么问题。64位linux下,需要兼容的32位库才行,此外还有可能有selinux以及java的问题。参考如下两篇:

Fedora 64bit:

http://www.ittvis.com/services/techtip.asp?ttid=4448

Ubuntu 64bit:

http://www.ittvis.com/services/techtip.asp?ttid=4425

最主要的是32位兼容库的问题。可能导致idl无法运行或者idlde无法运行。比如fedora 10下,安装下面这些库

本地tex参考手册

如果你的linux系统用的是texlive,那么很可能你可以使用如下命令

texdoc

或者带图形界面的

texdoctk

如果不能用,试着把texlive-doc相关的软件包装上。 在你不方便上网google,或者想比较系统的学习一下某些命令,texdoc命令可以帮你打开本机上安装的相应文档。

命令行运行matlab

  • matlab可以不启动图形界面运行,比如

matlab -nodesktop -nosplash

或者

matlab -nodisplay

或者

matlab -nojvm -nosplash

 

  • matlab程序也可以在命令行里直接运行,只需要使用 -r 选项。比如运行当前目录下的example.m

matlab  -nodesktop -nosplash -r example

或者

matlab  -nojvm -nosplash -r example

或者

使用matlab绘制用于论文的漂亮图形

如下代码将绘制一幅y=sin(x)的图片,

%adjust default figure properties to improve quality
figure;
set(gcf,...
    'DefaultLineLineWidth',1,'DefaultAxesLineWidth',.5,...
    'DefaultAxesFontName','Helvetica',...
    'DefaultAxesFontSize',20,...
    'DefaultAxesTickLength',[0.02,0.02],... 
    'DefaultAxesXMinorTick','on','DefaultAxesYMinorTick','on');
set(gcf,'DefaultLineMarkerSize',8);
 
% plot your data here
x=0:0.3:2*pi;
y=sin(x);
plot(x,y,'o-','displayname','$y=\sin (x)$');
xlabel('$x$','interpreter','latex');
ylabel('$y$','interpreter','latex');

ubuntu 10.04的几处败笔

1.语言界面

界面是中文的了,家目录下的几个文件夹也是中文。试图通过切换登录语言改成英文,无用。只要你使用英文外的其它语言,那么你的系统界面不可能是英文了;因为在语言配置那里英文必须排在最后,就是说要么完全没有中文,要有就必须中文界面,真无语。我在命令行切换目录还得切换输入法打中文先,把人憋得不行

cd ~/文档/...

聚合内容