Category Archives: 计算机与 Internet

kile和ps2pdf,evince在一起用的小bug

这个问题已经出现很久了,一直没办法搞定。去水木问了也没人知道。终于决心解决它,于是……经过google的帮助,解决了。 问题是这样的:我用kile生成的pdf文件,用evince或者okular看都会出现某些奇怪的字符错乱,比如\Delta变成了\Phi,\sum变成了\cdot。但是同样的pdf文件,用xpdf和acroread都没问题。于是我一直怀疑是evince或者okular用的某个渲染库有问题。然而我重装了poppller,gsfonts,libdjvu,ghostscript… 问题依旧。 最后我通过错误信息找到了一个凑合的解决办法,原文在这个网页。在kile的选项设置里面,给ps2pdf添加一个参数-dPDFX,终于生成的pdf所有程序都能看了。

发表在 计算机与 Internet | 发表评论

我的程序员能力矩阵

评价标准出自http://static.icybear.net/%5BCN%5DProgrammer%20competency%20matrix.htm 每个项目分4级,Level 0-3,0最低,3最高。 计算机科学:  数据结构 L2  算法 L2  编程体系 L2 软件工程:  源码版本控制 L1  自动化编译 L1  自动化测试 L0 程序设计:  问题分解 L3  系统分解 L2  交流 L2  同一文件中代码组织 L2  跨文件代码组织 L2  源码树组织 L2  代码可读性 L2  防御性编码 L0  错误处理 L1  IDE L3  API L1  … 繼續閱讀

发表在 计算机与 Internet | 发表评论

用C调用Mathematica函数(续)

其实昨天所有的QT程序都挂掉了。检查了一天,今天早上突然想到问题是在Mathematica上面。因为我修改了公用库的路径export LD_LIBRARY_PATH=/opt/mathematica/SystemFiles/Libraries/Linux-x86-64:$LD_LIBRARY_PATH Mathematica的库里面很可能包含着某个版本的QT库,和现在我用的QT 4.6.2不兼容。把它改成export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/mathematica/SystemFiles/Libraries/Linux-x86-64 就好了。

发表在 计算机与 Internet | 发表评论

用C调用Mathematica函数

我要做这样一件事情:给定一个长方形内N个随机点,求每个点所能“控制”的面积。具体的说,“控制”的部分就对应相应的Voronoi图的Cell。 本来C语言也是可以调用CGAL库来完成这个功能的,但CGAL的数据结构确实还是比较复杂,而且计算面积似乎并不简单。在2D的情况下,我发现Mathematica里面有现成的函数可以计算这个问题,而且使用非常方便。那么问题就是怎样从C里面调用Mathematica完成这一工作。 首先是C调用Mathematica的程序编译和链接问题。按照Mathematica的帮助文件,需要设置好相应的路径。比如我的Mathematica安装在/opt/mathematica,那么在.bashrc里面加入 export LD_LIBRARY_PATH=/opt/mathematica/SystemFiles/Libraries/Linux-x86-64:$LD_LIBRARY_PATH 我用CMake来编译。对应的CMakeLists.txt文件里面加上 include_directories(/opt/mathematica/SystemFiles/Links/MathLink/DeveloperKit/Linux-x86-64/CompilerAdditions) LINK_DIRECTORIES(/opt/mathematica/SystemFiles/Libraries/Linux-x86-64) LINK_LIBRARIES(ML64i3 m pthread rt stdc++)  当然在程序里面要引用头文件 #include "mathlink.h" 这样编译就没问题了。执行的时候用./a.out -linkmode launch -linkname ‘math -mathlink’ 下一个问题是怎样调用Mathematica运行程序。用MLPutFunction, MLPutRealArray之类的函数,一个一个传递参数,完毕后MLEndPacket发送包,就可以 还有一个问题是,Voronoi函数是在计算几何包里面,在Mathematica中需要调用计算几何包,即需要运行 << ComputationalGeometry` 但这句话没法从C里面调用(反正我没试成功)。我的做法是修改 ~/.Mathematica/Kernel/init.m 在里面加入这句话。这样Mathematica环境启动时自动加载计算几何包。

发表在 计算机与 Internet | 发表评论

数值精度问题……

第一次真正碰到了数值精度问题。调试了我整整一个下午加一个晚上加半个上午…… integer, parameter :: NTOT3=1024*1024*1024real :: meanreal, allocatable :: U(:)integer I allocate (U(NTOT3)) !… 读取U的部分 mean = 0.0Do I = 1, NTOT3  mean = mean + U(I)EnddoWrite (*,*) mean/Real(NTOT3) 这样的做法是错误的。在叠加进行到一部分的时候,mean的值已经远远大于U(I),以至于U(I)比mean的最小分辨还小,因此后面的叠加操作全部都没法执行了。 解决办法:对mean定义成real*8,最好是real*16类型

发表在 计算机与 Internet | 发表评论

做了个logo

就是右上角那个@@

发表在 计算机与 Internet | 3条评论

(zz)假如编程语言是私家车

转自http://www.sxnsx.com/if-programming-languages-were-cars/ 这是一个关于把计算机语言比作车的一系列老笑话的升级版. 我为这个列表加入了一些现代的语言. 欢迎你对此提出建议. (作者还罗罗嗦嗦地讲了一些他对编程语言的一些见解和别人对他文章的看法….) Ada 是辆坦克,一辆其貌不扬永不抛锚的坦克。如果你告诉别人你驾驶Ada,他们会禁不住大笑。不过话说回来,你会在战场上开跑车吗?[from Amit Dubey] Assembly Language 只是个光秃秃的汽车引擎. 你得自己造车并且在他开起来的时候还得手工给他灌油,但是你要是小心照料他, 他的速度能快到像加了润滑油的闪电. 还有一种解释:Assembly Language:   你就是车.[From "Subterfug" off digg.com:] Basic 是辆简单的车, 开着它去附近购物会很方便. 在菜鸟中曾经很流行, 它最近被裁减成一个shell并由一个龙头企业复刻, 新版Basic被设计成适应长途旅行, 和它最初的样子已经相差甚远. [from Przemyslaw Wrzos] C 是一辆能开到难以置信的速度的跑车, 但每50英里就会抛锚一次. Cobol 被认为是辆车.但是只有没自尊的驾驶员才会承认自己开过它. C# 一种相当有竞争力的家用小货车. 只要你用了它, 那么你就再也不允许用它的竞争对手的产品了. C++ … 繼續閱讀

发表在 计算机与 Internet | 发表评论

arch下搞定声卡

折腾了很久,原来是默认加载的模块太多了,以致把dsp,audio,mixer都分配给了pc喇叭,而真正的声卡只有用dsp1,audio1,mixer1…… 解决方法:在rc.conf里面去掉不必要的snd模块 比如MODULES=(8139cp 8139too mii ath_pci zd1211rw snd-mixer-oss snd-pcm-oss !snd-hwdep !snd-page-alloc snd-pcm !snd-timer snd !snd-pcsp snd-hda-intel soundcore)

发表在 计算机与 Internet | 发表评论

arch下搞定两个无线网卡

一个PCMCIA网卡: Atheros AR5001X+ Wireless Network Adapter (用sudo hwd -s可以看到型号)默认用了ath5k模块,我把它改成了使用madwifi。1)  sudo pacman -S madwifi2) 在rc.conf的MODULES里面添加ath_pci3) 在modprobe.d/blacklist里面禁用ath5k:   blacklist ath5k 一个是ASUS A9Rp自带的无线网卡,用lsusb可以看到:  Bus 001 Device 003: ID 0b05:171b ASUSTek Computer, Inc. A9T wireless但dmesg发现很多错误信息,在网上找了很多发现是没装zd1211-firmware,安装之,即可 另:netcfg挺好的,我把wicd卸了

发表在 计算机与 Internet | 发表评论

在arch下安装tecplot 360 2008

原来在ubuntu下好好的tecplot 360 2008,搬到arch下面就会报错:Hostid doesn’t match license。 根据安装目录下的myhostids.txt,可以找到HOSTNAME=vesta这样的一行,其中vesta是机器名。但在arch的/etc/hosts里面并没有vesta的记录,于是加上 127.0.1.1 vesta 即可

发表在 计算机与 Internet | 发表评论