星期日, 二月 22, 2009

09年2月编程语言排行榜


大家都认识多少?




星期六, 二月 21, 2009

Qtiplot 0.9.7.4在Windows下的编译

Qtiplot发布了新版本0.9.7.4,变动不小,编译过程也相应的需要发生一些变化。


首先是第三方库的编译:


qwtplot3d已经整合到主程序的编译过程中去了,所以不需要单独编译了,只需要保留官方包里面默认的即可;


gsl,muparser,qwt,zlib还是和先前版本一样,参见前帖《编译Win版本Qtiplot》。其中,gsl直接使用msys编译安装,安装到3rdparty下的gsl目录;muparser使用build目录下自带的makefile.mingw来编译;qwt使用Qt工具直接qmake make编译成静态库;zlib就直接下载zlib123-dll.zip放到zlib123去就可以了。


新使用的boost,首先下载boost_1_38_0.tar.bz2,解压缩出来,然后下载boost-jam-3.1.17-1-ntx86.zip,将其中的工具bjam.exe放到boost的根目录下,然后在命令行中(环境变量中要有mingw的bin目录)使用命令"bjam "toolset=gcc" install",经过漫长的等待就可以在C:\boost目录下看到编译好的boost了,拷到3rdparty备用。


还有就是libpng的编译,这个库本身有配置好的make文件scripts\makefile.mingw,但是需要zlib的支持,所以还需要跟libpng一级的目录下放上zlib的源代码zlib-1.2.3.tar.gz,目录即为zlib,zlib还要预先在msys下用./configure make编译好。


编译好第三方库之后,再修改qtiplot.pro,准备编译主程序。主要的一个就是3rd PARTY HEADER FILES SECTION里面的路径和3rd PARTY LIBRARIES SECTION下的win32:XXX的路径,根据实际情况进行修改。还有一个是# Comment the next line, if you dont have libpng on your windows system段下面的libpng路径的修改,如果按照官方做法来,几乎不需要调整,我这里只有boost的headers需要改变。目录结构参见文章结尾。


另一个重要的修改就是python的屏蔽,因为python的支持需要特定的版本的python pyqt sip的支持,所以一般都不使用。首先是要把qtiplot.pro里面的第三行# SCRIPTING_LANGS += Python屏蔽好,但是新版本中仅仅这样还不够,还会在连接的时候出现ScriptEdit.cpp中对PythonSyntaxHighlighter的undefined reference。我折腾了几个礼拜,终于在网上找到了qtiplot的patch——qtiplot-0.9.7.4-no-python.patch,原来是要修改一下这个文件。把qtiplot-0.9.7.4\qtiplot\src\scripting\ScriptEdit.cpp单独拿出来跟qtiplot-0.9.7.4-no-python.patch放在一起,然后在msys下使用命令patch –i qtiplot-0.9.7.4-no-python.patch,再把修改好的ScriptEdit.cpp放回去,这样就可以真正屏蔽python了。


经过这样的准备工作之后,就是qmake make了,然后就可以得到编译好的主程序。如果需要多语言支持,可以在qmake之前把qtiplot.pro中的
#system(lupdate -verbose qtiplot.pro)
#system(lrelease -verbose qtiplot.pro)
两句话解除屏蔽,就可以得到语言文件。


目录:


qtiplot-0.9.7.4
—3rdparty
——boost
——gsl
——liborigin
——libpng
——muparser
——qwt
——qwtplot3d
——zlib(libpng用的)
——zlib123

Qt4.43与MinGW5.14的使用问题

        使用最新版本的Qt和MinGW编译,会出现错误,Qt 目录下的 "\src\corelib\arch\qatomic_windows.h" 与 MinGW 目录下的 "\include\winbase.h" 中有部分函数发生了原型冲突(prototype conflict;也就是相同的函数被重复定义了两次。这是在w32api-3.12之后版本就与Qt产生的冲突,解决方案如下:
打开Qt目录下的qatomic_windows.h,找到
extern "C" {
    __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
    __declspec(dllimport) long __stdcall InterlockedIncrement(long *);
    __declspec(dllimport) long __stdcall InterlockedDecrement(long *);
    __declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
    __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}
替换成
#ifndef __INTERLOCKED_DECLARED
#define __INTERLOCKED_DECLARED
extern "C" {
    __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
    __declspec(dllimport) long __stdcall InterlockedIncrement(long *);
    __declspec(dllimport) long __stdcall InterlockedDecrement(long *);
    __declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
    __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}
#endif
这样修改过后就不会再有问题了。

星期日, 四月 20, 2008

Windows下的免费软件

 

开发系统:

Cygwin

Windows下的UNIX环境模拟

MinGW

Windows下的gcc port,原生,包含msys小工具集

Dev-cpp

Windows下的c/c++IDE,使用MinGW

Eclipse

集成开发环境,主要是Java,插件支持众多语言

Netbeans

SUN的集成开发环境,支持语言不如Eclipse

Visual Studio Express

MS的免费编译器,不支持MFC,可以用.Net

Qt

图形库,使用MinGW,原生

JAVA

本为跨平台而生

KDE for Windows

KDEWindows port,为KDE程序提供支持

动态语言:

Python

脚本语言,有众多的模块,可能用到的如下:
enthought_python ffmpeg matplotlib MayaVi numpy PIL pyfits PythonMagick PyX scipy VPython VTK wxPython

Perl

ActivePerl,有庞大的CTAN

Tcl/TK

命令行、图形交互界面的简单实现

科学软件:

Octave

Matlab的开源版本,语法几乎兼容

SciLab

类似Matlab的语言,语法接近,并不完全兼容

Maxima

Lisp语言写的,计算机符号计算的鼻祖,包含wxMaximaXMaxima图形前端

QtiPlot

相当于简化版开源Origin,需要自己编译,MinGW+QT

GNUPlot

命令行模式的Plot工具

R

命令行统计软件

Visit

三维可视化

文档编辑:

Texlive

Tex/latex实现,xelatex/xetex实现系统字体支持

OpenOffice

典型的Office替代软件,期待3.0的表现,希望OXML的开放能促成兼容性的提高

Vim

viwindows portvi流的最爱

NtEmacs

emacswindows port

Npp

台湾人写的一个开源编辑器,适于用other编译器的人

Pspad

长的很像ultraedit

BullZip
FreePrimo
PDFCreator

PDF虚拟打印机,可以从任何程序输出PDF

LyX

Tex辅助编辑器

Kile

Tex辅助编辑器,需要KDE支持

图形图像:

Picasa

Google的免费图片查看器,一定得图片编辑能力

Live Photo Gallery

Vista的人就不用看了

Paint.Net

号称免费的PS,当然不及PS

Gimp

Linux下著名的PS替代,当然也有Windows版本

VirtualDub

开源视频编辑器,很强大

系统软件:

CDBurnerXP

刻录软件

7zip

开源的压缩软件,也有自己的压缩算法

StarDict

开源辞典

antivir

俗称小红伞,个人版免费,杀毒,就是更新的时候有专业版广告

Avast

最早支持vista的一批杀毒软件,Home免费

DaemonTools

Lite版本免费,虚拟光驱软件

FileZilla

开源的ftp客户端和服务端,不过似乎只支持Unicode

VirtualBox

开源的虚拟机,现隶属于SUN

Vmware player
Vmware Server

虚拟机,这两个版本免费

TightVNC

远程桌面

星期三, 四月 16, 2008

编译Win版本Qtiplot

以前我有篇叙述如何编译Linux版本的Qtiplot的文章,现在介绍一下Win下面编译的过程,仅供参考,Linux下已经直接提供了可运行得免费版本了。需要注意,系统应安装好了Qt和MinGW,并且所有操作在Qt Command Prompt下执行(环境变量包含Qt和MinGW的bin目录)。所有编译的库为静态库版本。

  1. 下载qtiplot qwtplot3d gsl muparser源码包
  2. 解压缩所有文件夹,把库文件都放到qtiplot的3rdparty目录下,并去掉版本号,加上自带版本,目录如下:
    gsl、liborigin、muparser、qwt、qwtplot3d、zlib123
  3. 编译Qwt:自带的Qwt已经把qwtconfig.pri中的CONFIG += QwtDll注释了,所以不需要修改,直接在qtw目录执行qmake和make命令。如果是自己下载的,需要注释这么一句,编译成静态;
    同时设置CONFIG           += release,表明编译为release版本
  4. 编译qwtplot3d:注释掉qwtplot3d.pro中的win32:TEMPLATE    = vclib,因为我们使用的是MinGW,如果使用msvc就需要注释了;
    CONFIG           += qt warn_on opengl thread zlib debug,把最后一个参数debug改为release,编译release版本,debug版本有37M,release才600K不到;
    按照linux下面的编译说明,需要编译为静态的,但是切记在win下不需要,否则会出现opengl库未定义的情况,为此我郁闷了好久,无意中弄好的。然后仍然是qmake和make;
  5. 编译muparser:进入muparser\build目录,运行mingw32-make -fmakefile.mingw,默认编译静态release版本库,需要更好则修改makefile.mingw;
  6. 编译gsl:首先要保证安装了msys和msysDTK,这是MinGW平台的工具集,主要提供bash及开发所需要的工具。然后使用这个环境编译gsl,./configure --prefix=存放目录,make,因为默认同时编译静态库和动态库,所以不需要更改什么,直接把存放目录命名为gsl放到3rdparty下面就可以了,目录里面需要包括include和lib文件夹;
  7. 下载zlib123预编译版本,放到原有的zlib123目录下,minigzip.c和zdll.lib都需要有;
  8. 编辑qtiplot目录下的qtiplot.pro: 屏蔽SCRIPTING_LANGS += Python,取消Python语言支持,因为总是需要特定版本的Python和SIP才能用,暂时不需要这个功能。然后qmake,make

经过漫长的等待,就可以看到qtiplot.exe啦。运行需要把qwtplot3d.dll拷过来,当然还需要一大堆的Qt库,在自己机器上,就只要把Qt的bin目录加到PATH环境变量里面去。需要注意,Matlab2008也带有一个不同版本的Qt库,所以要把Qt库放到可能有Qt库的路径前面,要不然会出现找不到入口的错误。

然后……你就有一个origin的替代品了,如果用得好,可以考虑捐助一下,哈哈

星期六, 四月 12, 2008

Eclipse

莫名其妙的跟别人谈起来用Android平台做开发,然后就想着是不是自己也看看,虽然Android SDK早就下过了,但是还是只用过那个模拟器,都没看过SDK怎么玩的。索性上网找了开发环境,就是Eclipse加Android插件就可以了,既然如此,不如玩玩Eclipse。

Eclipse是IBM的开源IDE,有无数的插件,能支持n种开发语言,新的IDL7.0就是基于Eclipse的,所以也不算太陌生。相传,这是IBM为了在气势上压倒SUN,所以选择了Eclipse(日食),哈~~

下载了Eclipse 3.3.2 J2EE版,没有中文语言包(3.2.x倒是有很完善的,包括帮助,不过对于喜欢新版本的我来说,还是选择了新的)。在默认的Update站更新安装CDT支持C/C++语言,我很早就装过Cygwin,CDT可以使用Cygwin版本的gcc。然后是安装其他各种我需要的语言插件,安装还算简单,一般情况就是在Help->Software Updates->Find and Install->Search for new features to install,添加给出的升级地址,然后选择自动安装就可以,有点类似yum apt之类的东西,下面是我安装的一些插件:
Android       https://dl-ssl.google.com/android/eclipse/   Google手机OS开发环境
PDT           http://download.eclipse.org/tools/pdt/updates/   PHP开发
pydev        http://pydev.sf.net/updates/   Python集成开发环境
Texlipse      http://texlipse.sourceforge.net/  TeX/LaTeX支持
然后是Fortran,这个稍微有点麻烦,因为没有更新站点,先在http://www.eclipse.org/photran/download.php下载Photran Feature包,然后解压缩至eclipse下的随便一个目录,例如photran-4.0-beta3-incubation,然后在该目录下新建目录eclipse,把原先的两个目录features和plugins移动到eclipse目录里面,同时在eclipse的目录下新建空文件.eclipseextension(要到命令行下面),之后Help->Software Updates->Manage Configuration->Add an Extension Location,选择刚才的photran-4.0-beta3-incubation目录,然后会要求重启,这样就把Photran装好了。
QT。在http://trolltech.com/developer/downloads/qt/windows下载opensource版本的QT for Windows,在http://trolltech.com/developer/downloads/qt/eclipse-integration-download下载Qt Eclipse Integration。先要安装MinGW,因为Windows版本的QT使用的是MinGW gcc,然后安装QT,选择MinGW的时候会提示需要正确win32api.h,不用理会,是QT安装程序识别不出新版本的MinGW,装好之后记得把MinGW的bin目录添加到环境变量PATH中,这样再安装Qt Eclipse Integration,就不需要使用它的开始菜单中的Start Eclipse with MinGW了,因为这个总是会修改eclipse的工作目录到默认路径,很不爽。
顺便唠叨一句,cygwin和MinGW的不同,我在看了仅有的一些讨论,觉得,Cygwin是为了提供一个Unix模拟环境,MinGW是把gcc port到了windows;使用上来说,Cygwin的程序要带有cygwin1.dll,就跟DS9一样,但是MinGW使用的是MSVCRT,就不依赖自己的运行库,同时也是原生的Windows程序;目的上,要在Windows下开发Linux程序选择Cygwin,要在Windows下找个开源编译器写程序就还是MinGW。

Eclipse还有perl lua等脚本开发插件,也还可以将sqlite mysql oracle等数据库连接上去。总之,eclipse插件实在太多了,不过我可不想状态多以至于启动速度比VS2005还慢,不过eclipse有个好处,不需要安装,所以也可以选择安装多个版本的eclipse,冲突的可能少一点,启动速度快一点,牺牲一点硬盘空间。

星期四, 四月 10, 2008

Joomla 1.5 native

Joomla 1.5发布之后,很快就出了两个bugfix版本,现在已经到1.5.2了。新框架带来的麻烦就是插件需要重写,这是一个庞大的工程,但是就目前的状况来看,发展速度超过了当初的预期——很大一个原因就是开发者发现,力图让老的系统安全跑在legacy模式下比新开发一个还要麻烦。

Remository很早就出了原生的J1.5版本,因为legacy模式和原生模式的插件不能共存,所以还是需要找其他的原生插件,期望它们升级,当然也因为新的框架出现了很多新生的插件。CB,最近还处于1.2Beta,原因就是他们提早进入了原生1.5的环境,大概是beta4以后决定要原生的,所以还要等一段时间,不过应该不会太漫长。1.0下面用fireboard习惯了,觉得这个比整合论坛要好,如果不是要求做一个大型论坛的话,灵活性很强,也不会出现整合论坛的那些麻烦;不过现在似乎都没有什么动静更新到原生1.5的版本,Firemessage也是coming soon状态很久了。还有曾经用的zoom,连网站都关掉了,看样子是很困难了。

重新在joomla extension网站搜索了一番,把所有1.5 native的组件都看了一遍,倒是找到几个不错的东西:
Joomla Advanced Message,不错的站内信件系统,支持不错,那个messaging太过简陋了,忽略之;
JFusion,还在alpha,是个多平台整合工具,现在主要是各种论坛,但是其可扩展性说明还有很大的发展空间;
Joomfish到2.0Beta了,1.5的多语言环境有保障了;
Jootags,多少可以弥补一下只有双层目录的遗憾(想不明白到1.5了怎么还在用section+category的分类模式),tag也是google很喜欢的模式;
ChronoForms,生成表单,还不会用,理解上可以作为会议注册的工具;
expose,flash照片库,习惯了zoom,其实这个要更好一点,当然弹出全尺寸照片的时候要有lightbox的效果会更好;
JEvents,反正这类东西都差不多,一个日历,可以记事,没什么特别的,只是支持原生模式;
joobb,这个很有意思,高度修改和内嵌的Bulletin Board,基本实现了Fireboard的模式,只是外观啊什么的没有配套上来,也还只是测试版本,不好做production;
swmenufree,这个居然也很快更新了,虽然用的不多;
JACLplus,hack方法的权限管理,但是我还是希望Joomla能内置这个功能,毕竟hack出来的稳定性要差一点。

这些就是我草草测试了一下的组件,基本网站功能可以实现,现在还是差CB,Joobb和Fireboard都还是需要更新的。

星期日, 四月 06, 2008

IDL Volume Rendering效果

看了好多天,重新学习了一下IDL的对象图形系统。因为直接图形系统没有volume rendering能力,又不喜欢用ivolume或者xvolume这样的工具,不方便制作动画,所以还是选择了用IDLgrVolume来画图。数据是gracos模拟的结果,转换成体密度分布,上个效果图吧,好歹是几天的成果。

fin

星期三, 三月 26, 2008

IMAX

最近猛下了几部IMAX的影片,很大,下起来很慢,播放时间很短~~~不过很值,70mm的胶片也1500美元/8分钟呢
效果和内容都没得说,当然还是缺根DVI to HDMI线,打算自己去买根好了,便宜的一两百,贵的诸如Belkin之流,就不好说了,反正二手的好几千,更贵的就不看了;如果有IMAX影院的话,效果就……
Amazing.Caves,一直就很喜欢探洞,大概就是从凡尔纳的小说《地心游记》开始的吧,里面的生态系统让人着迷,太奇特了;不过我自己是没有机会也不敢去的,不过号称那个很适合做救生员的人是98磅,看来我也许有点潜质
Blue.Planet,场面宏大的介绍地球,跟NASA合作,把IMAX设备拿到太空去玩
Coralreef,要去海边就得去这样的地方,大堡礁、斐济、塔希提……
Australia,大概也是凡尔纳的小说《格兰特船长的儿女》,这个古老的曾经和南极连接的大陆,虽然生存环境不算好,但却有着古老而奇特的生态系统,很有趣
Antarctica,看看下个站建在南极是否合适
The Serengeti,东非三国的森林公园,原来只是很喜欢南非的克鲁格,还不知道东非这个呢,都不错
NATURES_JOURNEY这个不是IMAX系列,只有画面和音乐没有解说
还在下热带雨林、热带雨林昆虫、暴风、深海等几个,好慢啊~~

看了这些之后,突然觉得广角比长焦的震撼力要大得多。IMAX的纪录片,广角、鱼眼用的非常多,鱼眼那接近180度的视角,拍大场景太舒服了。原来一直比较喜欢长焦,可以反映细节但是表现力就显然不如广角,而且广角比长焦更不易得。看来35mm定焦微距之后我应该先上10-17的,可惜就是没有全幅K1D,170-500以后再说,哈哈

星期五, 三月 07, 2008

镜头搭配

想来总是这样,在有什么东西之前,无论怎么看也总是看不出什么来,直到拥有了用过了,才能逐渐体会出些东西来。电脑就是这样,买之前我是一点兴趣也没有,一点也不想看关于电脑的东西;买完之后很长一段时间,关于计算机的任何东西都看,然后大呼上当,买了TCL这么个垃圾,哈哈。

如DSLR之前,只用过胶片傻瓜,对相机几乎一无所知。上网看了半天,大多数集中在机身上,而且看评论很多。对比参数,却不知道如何取舍(有钱自然买好的,但是无奈囊中羞涩)。镜头就草草了选了套头+70-300。完全是配焦段,那个时候只用过小机器的我,显然对长焦很有兴趣,直接上了300,其实当时相同价位可以选择直接18-200。

用了一段时间发觉,最常用的焦段被分割成两段,其实外拍很不爽,总要换来换去,非常频繁。有时候懒就干脆不拍了。而70-300号称的Macro,用了段时间,觉得还不如套头方便实在。要增加镜头也不知道如何加。

如果本着焦段和循序渐进的角度来看,现在我可能会换一种方式:

第一,Sigma 18-200mm F3.5-F6.3 DC或者Pentax DA 18-250mm F3.5-6.3 ED,¥2250/¥3750。前者比较狗,后者稍微好一点,差价也还有不少,完全看要求。这是第一支,就是一镜走天下的,练练手,画质要求不算太高的时候拍拍,旅游的时候挂机,都还不错,长短兼顾,200手持一般无问题,就这一支也不会出现太大的焦段差距,可以用好一段时间。

第二,Pentax DA 35mm F2.8 Macro Limited,¥3380。这个头素质不错,标微。平时的人像,风景,静物都可以,标头用处还是很大的;然后1:1的微距也很好,拍花花草草小虫子什么的。这个头可是号称专为“创作杰出的视觉效果”而设计的。

第三,等到很有必要或者有money的时候,可以上个Sigma APO 170-500mm F5-6.3 DG打鸟/¥4900。500mm的长焦在这个价位已经很猛了,特殊需求的时候才带。500mm本来手持就困难,肯定是随脚架走,特殊场合才用,也不会带来太多的麻烦。

第四,熟练了摄影之后,也许会考虑广角乃至fisheye,Pentax DA Fish-Eye 10-17mm F3.5-4.5 ED或者Sigma 10-20mm F4-5.6 EX DC HSM,¥3700/¥3750。倾向于前者,超广角也是一种创作风格10-17刚好和18-200衔接。拍摄大市场星空和空旷地带很有味道,属于锦上添花型的镜头。当然如果没有需求,弄个0.45X的广角镜偶尔玩玩也不错,才200块不到。

而且到了第三步的时候已经比较熟悉的话,可以考虑淘二手头,会便宜不少,相对划算。一般有前两个就差不多了~~所有考虑基于Pentax机身假设,1.5的系数加上机身防抖,有些头如果镜头防抖就该翻番了,哈哈。Macro之后可以考虑上闪光灯,环闪有就更好。