latex使用遇到的一些问题

用texlive编译中,遇到一些问题,在此记录一下。

1 不要使用smartdraw的eps导出,发现sd导出的eps效果非常差,不如直接用png导出,尺寸为200%,然后使用latexlive的bmeps命令,参数为-c png文件 eps文件,-c是表示转换为彩色的eps文件。

2 用eps的时候,不要用pdflatex,后者不支持eps

3 引用参考文献上标可以建立新命令upcite,然后用upcite{}替换即可

newcommand{upcite}[1]{textsuperscript{cite{#1}}}

移植成功

搞定了从wordpress导入到blogger中的工作。

实验室貌似把机器弄down了,估计东西都没了。拜wp的插件所赐,我还有blog的备份(看了一下,整个2009-2010好像都没写……)。

wp到blogger的转换工具支持的是wp的导出文件,而非备份的sql文件,所以还需要搭建一个本地的wp站点。弄完了发现老是乱码,后来才发现,原来备份的sql文件中的数据库建立选择的编码是latin1!

改成utf8之后没有乱码了,但是查看post是一片空白,不管了,好歹export功能可以用,于是导出生出整个wp.xml文件。但是用google-blog-converters-appengine转换老是说sax解析有问题,而且异常指向的位置莫名其妙。后来用firefox查看,原来当初ip查询的日志中存在一些二进制字符(怪不得用dos2unix的时候提示是二进制文件,无法转换),于是对着firefox的错误显示一个改完,转换成功。再次鄙视一下python的sax,异常指示的行列绝对有问题。

然后将google-blog-converters-appengine的输出重定向到一个bg.xml文件中,然后在blogger中上传,结果说存在一个错误,失败。不解,分析一下bl.xml文件,发现前半部分和wp.xml完全一样,后半部分才是blogger的xml格式,看来是我在分析的时候多加了一句echo?

当然去掉之后就好了,导入成功。

GDI+下的闪烁问题

画多个点运动的时候,窗体会闪烁,查了一下网上的文章,说是OptimizedDoubleBuffer可以减少闪烁。但是我添加了效果更差,整个窗口经常白色的。搜了所有文章,基本上没有有用的。

后来经过多次试验,才了解了Graphics gc需要用e.Graphics获得,而不能用this.CreateGraphics获得。

代码如下:

private void initToolStripMenuItem_Click(object sender, EventArgs e)
{
Init();
this.Invalidate();

}

protected override void OnPaint(PaintEventArgs e)
{
Graphics gc = e.Graphics;
gc.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;
gc.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed;
gc.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.ResizeRedraw, true);

base.OnPaint(e);

}

CJK support for texlive 2009

第一个blogger日志,呵呵。

我要在windows和linux下共享tex文档,所以中文支持使用“begin{CJK}{song}”这种形式。

win和linux下都是用texlive 2009(ctex添加cjk字体没搞定,放弃了)。

linux用了debian源中的texlive,觉得不好,因为经常更新,占用带宽,而且cjk的支持我一直没搞定。于是使用texlive的官方iso安装。

安装完了之后,cjk的支持主要做下列几件事情:

  • 安装宏:

tlmgr install zhmetrics, ctex, xeCJK

  • 用gbkfont生成pk文件:

cd ~/.texlive2009/texmf-var/
gbkfont ~/.fonts/simsun.ttc song

  • 建立链接

cd ~/.texlive2009/texmf-var/fonts
mkdir truetype
cd truetype
ln -s ~/.fonts/simsun.ttc

然后就可以编写cjk的tex文件,用pdflatex编译即可。pdflatex会自动调用ttf2ps等命令生成latex的字体的。

windows下大体上也差不多:

  • 先使用gbkfont(http://ftp.ctex.org/pub/tex/ctex/gbkfonts/gbkfonts.zip)生成:

gbkfonts.exe -c -gbk c:WINDOWSFontsMSYH.T

  • 然后将生成的所有文件和目录复制到d:texlivetexmf-local中
  • 用tlmgr -gui启动,选择“配置”->“操作”->“重新初始化文件名数据库”。
  • 之后运行updmap-sys –enable Map=cjk.map
  • 搞定

放慢模拟节奏

昨天的模拟开始很好,后来改了一些参数之后速度巨大,发指啊……

后来调试了半天,发现一个问题:

if (destTime > now )
{
speed = sqrt((node->X_ – x)*(node->X_ – x) + (node->Y_ – y)*(node->Y_ – y)) / (destTime – now);
其中destTime和now都是double类型,当两者相等(但存储上可能不同),例如destTime = 5.0001,now= 5.000001,这个时候if条件满足,然后进去执行,speed变成一个天文数字……,看来浮点数的运算始终要加以个值啊。
将 if (destTime > now)改为 if (destTime > now + DELTA),再加上#define DELTA 0.001。这样就可以了。

还有一个问题是,我每隔0.1秒执行查询节点状态,居然发现0.x秒时候节点位置不变,这样0.1-0.9秒速度均为0,而到1.0的时候才变化。后来想了半天,估计是sumo单步模拟只能逐秒进行。我后来问了邮件列表,果然如此。启用0.1秒模拟需要重新编译,加上参数–enable-subsecond,但是作者原话是“Please note that this is not yet completed – it works, but the vehicle behaviour at intersections is very bad.”

算了,还是我自己弄一个近似模拟吧,想想看比赛的慢动作,距离不变,时间变长的话,那么速度就变慢了。这样想就清除了:

1 地图的大小不变
2 时间模拟理论上会增加10倍,那么这样1秒就相当于0.1秒了,速度直接除以10即可,而加速度需要除以100.
3 需要设置的地方是,tcl中的模拟时间大约要增加到10倍,edge.xml中的道路速度除以10,route.xml文件中的vtype中的车辆accel和decel除以100,maxspeed除以10。

基本上这样就可以了。可以看出最后的模拟时间变长为10倍,而速度变成原来的十分之一。两者略有差异,原因就是,模拟的颗粒越细,结果自然越精确了。

ns2 segment fault

完成了一个发送beacon的程序,但是出现segment fault了,调试到最后发现是channel.cc中在更新节点的时候链表出问题了。再仔细一看,发现是原来的逻辑是需要链表是有序的,结果几次调用之后居然无序了,有一些节点的值进行变化,但是节点链表中的顺序始终不变,导致问题出现了。
再深入看一下,原来是TransV1.2中竟然手动设置节点的位置,而不是调用set_destination函数:
// set node exactly to old destination
node->X_ = node->destX_;
node->Y_ = node->destY_;
// move node to position
// velocity = space / time
if (destTime > now)
{
speed = sqrt((node->X_ – x)*(node->X_ – x) + (node->Y_ – y)*(node->Y_ – y)) / (destTime – now);
// set_destination returns 0 on success
if ( node->set_destination(x, y, speed) )

奇怪的是作者一边手动赋值,一边又调用函数,真得不知道怎么想的,sigh

给我的感觉是ns2跟其他的扩展结合的太紧密了,很容易就出错啊……

如何发布firefox扩展的更新

1 编写好更新的扩展
2 如果第一次更新,则用mccoy创建key,注意保存;如果不是第一次更新,则使用现有的key,install项目中的install.rdf,也可以直接创建一个updateKey的子项,其值为mccoy的“Copy Public Key ”的值。
3 将连install.rdf在内的项目打包,如lilac.xpi,计算lilac.xpi的sha1值,写入update.rdf的updateHash元素
4 用mccoy sigh update.rdf
5 将3中的lilac.xpi和4中的update.rdf上传到相应位置即可。

its攻击

攻击有几类

第一类是,攻击者是非法用户,用户企图获得认证权限,冒充是合法用户,这类可以使用PKI及其相关认证技术进行预防

第二类是,攻击者是合法用户,这类用户危害更大,攻击手段有

1 发布虚假信息,例如路面拥塞信息,诱导其他车辆避让,使其能够在宽敞的路面行驶

2 拒绝服务攻击

我认为,系统应该有一个入侵检测系统,检测此类信息,如果检测到合法用户,则将其封禁,类似BBS,根据用户的行为作出不同程度的处罚。

看论文很ft

今天看一篇论文“智能交通系统中Dijkstra算法的高效实现”,一篇参考文献是:GIS 领域最短路径搜索算法的高效实现[J]. 中国图像图形学报, 2003, 8A(8): 951-956

结果搜了好几个数据库,没有该文,找《中国图像图形学报》期刊,未果,居然有期刊找不到的情况!

后来好像放狗了,才发现原来不是《中国图像图形学报》,而是《中国图象图形学报》,sougou拼音打不出来,但是确实图象这个词不常用,我开始也以为是错别字,汗一个。

下面就好办了,按照期刊的年份月份找,终于找到了,但是发现名字居然是“GIS领域最短路径搜索问题的一种高效实现”,怪不得搜不到。

原作者,你能不能不把文章名和期刊名同时写错??