ubuntu下使用netcdf库
Posted on 三月 26th, 2009 in Linux, Program | No Comments »
netcdf自身带了C++接口,可是按照例子,怎么也连接不了,最后发现是要加参数:
g++ -lnetcdf_c++ -lnetcdf -o test *.cpp
netcdf自身带了C++接口,可是按照例子,怎么也连接不了,最后发现是要加参数:
g++ -lnetcdf_c++ -lnetcdf -o test *.cpp
方法和原来的相似:
tar -zxvf envi_linux.x86.tar.gz
cd envi461linux.x86
sudo mkdir /usr/local/itt
sudo mv idl708 /usr/local/itt/
sudo mv install /usr/local/itt/
sudo mv license /usr/local/itt/
cd /usr/local/itt
sudo ./install
然后拷贝license到/usr/local/itt/license,命名为license.lic,就可以运行envi。
但发现我的机器明明是64位的,怎么是按照32位模式运行的呢?
仔细查找后发现,是由于idl的启动脚本里用到了/bin/arch命令,而这个命令已经被取消了,参考ubuntu的BUG。
若不想修改脚本的话,就可以建一个/bin/arch的脚本:
#!/bin/bash
uname -m
在ubuntu intrepid上,evolution发出的中文附件(指文件名是中文打头),如果另外一端是采用OUTLOOK活Outlook Express,则不能收到中文附件,或附件的文件名是奇怪的名称(att***.dat)。
在下个版本里这一问题已经得到修正,需要等ubuntu jaunty发布才可以。若现在就想修正这个问题,可以把这个PPA加入到源中:
deb http://ppa.launchpad.net/hggdh2/ppa/ubuntu intrepid main
然后升级系统应该就可以了。
参考:
1 ubuntu bug
2 gnome bug
目前,skype还没有专门的64位版本,在UBUNTU intrepid amd64下使用需要进行一些特殊的处理:
首先:下载skype,从medibuntu库中:
skype-common
和skype-static
然后安装:
sudo aptitude install ia32-libs libqtcore4 libqtgui4
wget -N boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb
sudo dpkg -i getlibs-all.deb
sudo getlibs -p bluez-alsa
sudo dpkg -i *.deb
然后要配置skype,在我的机器上(dell optiplex 755),需要在音量控制里选择最后一个:Capture ...Pulse
然后在skype的声音设置里选择:输入声音 hwintel,0,别的都用pulse,这样就可以正常使用skype了。
最全的howto请参考:
HOWTO: Install Skype on 64-bit Ubuntu
在手工导入原始数据后,其中的id项为serial类,由原始数据赋值,会遇到不自动增长的问题。
解决方案参考:http://bbs2.chinaunix.net/thread-1353824-1-1.html
serial key其实是由sequence实现的,当你手动给serial列赋值的时候,sequence是不会自增量变化的,当你插入customer 6的时候看看customer_id sequence是多少?
最好不要给serial手工赋值
SELECT setval('序列名称', max(id)) FROM 表;
select setval('offlineapp_id_seq',max(id)) from offlineapp;
phpbb3自身带的anti-spam系统已经被破解,导致论坛上出现了大量的垃圾帖子和用户。
经搜索,可以暂时使用PHPBBCHINA上的这个方案:
Administration Control Panel -> Users and Groups -> Custom profile fields
[Create new field]: antibot (Field identification: antibot, Field type: Numbers)
Display in user control panel: Yes
Display on registration screen: Yes
Required field: Yes
Field name: Anti-Bot check
Field description: 如果您不是机器人,请输入一个130到139之间的数字:
[Profile type specific options]
Lowest allowed number: 130
Highest allowed number: 139
没有用mod,目前为止好像有效,是俺搞完后做的记录,看不明白的可以问,还有一个办法是使用初始发帖审核,可阻止垃圾帖泛滥,但不能应对注册,设置很简单:
Administration Control Panel -> General -> Post settings
Enable queued posts: Yes
默认的最大帖子数是3,也就是说,只有前3帖通过审核发表后,用户才能自由发帖。
否则你发了他也不显示。。。
注意这个是3.0.0以后版本才有的功能(3.0.0本身木有)
笔记本有一个按键已经坏掉了,之前一直想换个键盘,但觉得不值得。那个向下的键在浏览网页的时候要经常使用,因此就想尝试用软件的办法解决。
首先找到那个替换的键,我是用WINDOWS键来代替DOWN键,必须知道WINIDOWS键的CODE,可以使用xev命令来测试。
xev | grep keycode
然后就可以使用xmodmap命令替换:
xmodmap -e "keycode 135=Down"
若你想替换的键不知道其名称,可以在/usr/include/X11/keysymdef.h里查找。
也可以在当前用户家目录下创建一个~/.Xmodmap文件:
keycode 135=Down
因项目需要,现在想在服务器端动态生成PDF文件,已一个PDF为模板,然后把所需的数据动态填入。
本来在使用zend framework,因此很直接的就使用zend_pdf类来进行测试,代码实现如下:
$pdf = Zend_Pdf::load($this->view->config->offline->template);
$pdf->pages = array_reverse($pdf->pages);
$style = new Zend_Pdf_Style();
$font = Zend_Pdf_Font::fontWithPath($this->view->config->offline->font, ( Zend_Pdf_Font::EMBED_DONT_SUBSET));
$pdf->pages[0]->setFont($font, 10);
$pdf->pages[0]->saveGS();
//datalist
$pdf->pages[0]->drawText(str_replace(";","\n",$datalist), 100, 570,"UTF-8");
//project
$pdf->pages[0]->drawText($formData['project'], 100, 430,"UTF-8");
$pdf->pages[0]->drawText($formData['realname'], 100, 78,"UTF-8");
$pdf->pages[0]->drawText($formData['realname'], 130, 590,"UTF-8");
$pdf->pages[0]->drawText($formData['unit'], 95, 58,"UTF-8");
$pdf->pages[0]->drawText($formData['address'], 285, 58,"UTF-8");
$pdf->pages[0]->drawText($formData['postcode'], 470, 58,"UTF-8");
$pdf->pages[0]->drawText($formData['email'], 95, 40,"UTF-8");
$pdf->pages[0]->drawText($formData['phone'], 295, 40,"UTF-8");
$t=getdate();
$pdf->pages[0]->drawText($t['year'], 465, 40,"UTF-8");
$pdf->pages[0]->drawText($t['mon'], 500, 40,"UTF-8");
$pdf->pages[0]->drawText($t['mday'], 525, 40,"UTF-8");
$pdf->pages[0]->restoreGS();
$fn=$formData['realname'].date('YmdHis').".pdf";
$pdf->save($this->view->config->offline->savepath."/".$fn);
这样,的确能完成要求,但是令人恼火的是,其把中文字体内嵌到PDF文件中去,因此导致PDF文件过大,而且导致PHP所需内存也增大(64M)。
因此,就开始尝试别的办法,开始锁定fpdf,PHP能完美支持,而且也能支持中文(所要单独下载chinese.php和chinese-unicode.php)。
但是,FPDF不支持打开已有的PDF文件作为模板,因此还需要使用fpdi进行模板的支持,还要修改fpdi,使其父类为PDF-UNICODE。
然后就可以这样使用:
$pagecount = $this->setSourceFile($this->template);
$tplidx = $this->importPage(1, '/MediaBox');
$this->addPage();
$this->useTemplate($tplidx);
$this->AddUniGBhwFont('ugb','AdobeSongStd-Light-Acro');$this->SetFont('ugb','',$this->fontsize);
$this->setXY(45,65);
$this->Write($this->fontsize,$this->data['realname']);
其中,字形由默认的AdobeSongStd-Light改成AdobeSongStd-Light-Acro,是为了防止英文字体变宽和变窄,格式才会整齐,英文字不会挤在一起。(参考: http://bbs.erp100.com/thread-18424-1-1.html)
c++的类模板中有一些要注意的地方:
1、除非编译器实现了export关键字,否则将模板成员函数放置在一个独立的实现文件中将无法运行。(在GCC中,就是无法连接,编译可以通过)
因为模板不是函数,它们不能单独编译。模板必须与特定的模板实例化请求一起使用。
2、在类模板的操作符重载的友元函数中,要先声明,如<<操作符,要在函数后添加一对<>符合:
template <class T>
class Matrix;
template <class T>
ostream& operator <<(ostream& os,const Matrix<T>& matrix);template <class T>
class Matrix
{
public:
friend ostream& operator << <>(ostream& os,const Matrix<T>& matrix);
}
而+-*/等操作符的友元重载则需要定义在类声明内部,否则连接会出错。
模拟页面动作,自动下载EOS的免费数据,详细内容请参考文章:
2007年6月第三期,冰川冻土,EOS Data Dumper---EOS免费数据自动下载与重发布系统
代码:
eosdatadump