Category Archives: 3P Language

上传pdf,word,ppt文档转化为在线阅读的flash文档【一】

一个朋友提出的需求, 想让我帮忙看看,所以自己就简单分析了下, 就是实现类似豆丁和百度文库的功能, 问了下 laruence ,讨论了下 大概有了个思路,方案是: 1 pdf在linux下有命令行的工具可以转化为flash 2 word ,ppt 通过openoffice的服务模式可以在命令行下转化为pdf , 再使用步骤1 就可以了,这里有一个文档介绍: http://www.artofsolving.com/opensource/pyodconverter 这样, 可以写一个脚本程序来串联整个流程(如果做成工具的话,就不能再图形界面环境下实现这个)。 里面比较麻烦的是word ,ppt to pdf的步骤,我简单在我的vps上尝试一下: sudo yum install python-openoffice.noarch openoffice.org-writer.x86_64 openoffice.org-langpack-zh_CN.x86_64  openoffice.org-pyuno openoffice.org-impress.x86_64 运行 soffice -accept=”socket,port=8100;urp;” 输出: javaldx: Could not find a Java Runtime Environment! /usr/lib64/openoffice.org3/program/soffice.bin X11 error: Can‘t open display:    Set DISPLAY environment variable, use [...]

在C/C++中嵌入Perl解释器

前段时间做了一个项目,项目是封装我们公司现有的一个用c++实现的一个消息中间件,使其可以让perl程序员使用,这个消息中间件是一个用TCP和共享内存实现实现的一个异步消息传输的中间件,分为两个部分,其中客户端可以调用某函数发送消息,服务器端会自动监听并且调用一个callback函数来处理这个请求, 其中客户端的封装美国部门已经用 perlxs实现了, 服务器端的程序是我来写的, 这里用到了perlembed的技术,因为服务器端程序和客户端不同,不是perl去调用c/c++的函数,二十c++去调用perl,所以我们需要将c++中嵌入perl的解释器。关于那个项目具体的情况我就不说了,这里我主要写一下c/c++中嵌入perl解释器和调用perl函数的方法…(给自己做一个备忘) 其实,大部分的内容可以从相关的perldoc中找到.. perldoc perlembed 首先是编译的参数,在这里,如果需要嵌入perl,我们可以通过perl的ExtUtils::Embed模块来生成连接的参数 编译参数 perl -MExtUtils::Embed -e ccopts 连接参数 perl -MExtUtils::Embed -e ldopts ok..下面介绍一嵌入perl的解释器 很简单,看看perlembed提供的例子 #include <extern.h>               /* from the Perl distribution     */ #include <perl.h>                 /* from the Perl distribution     [...]

PHP版的Jscript.encode 的Decoder

其实之前做Solor的时候有用过这个,但是不是PHP版本的..而是直接调用MrBrownstone的C语言版本,后来还做成了PHP extension ,但后来由于服务器到期的原因,换了服务器,新的服务器我没有root或sudo的权限,不能直接在服务器上放置应用程序,安装自己的PHP extension了,所以也导致solor关闭了,当然了,solor暂时关闭也与当时公司实在比较忙有关系,昨天晚上睡觉前突然想到要重新整理一下以前的代码,突然想到这里,就想自己用PHP实现一个Script Decoder .所以就按照之前MrBrownstone的C语言版本重新编写了一个PHP的版本,呵呵,没想到改写起来还真是挺容易的,毕竟语法比较相似,我保留了之前版本的变量和函数命名。 这个是函数页面的连接 : http://rainx1982.googlepages.com/decoderformicrosoftscriptencoder%28phpversion%29 也可以直接下载代码: jsdecoder.php 当然了,如果你有特殊的需要,希望得到PHP extension的版本的代码(运行速度上会快些),也可以和我联系(不是free的,哈哈)….

xunit和profiling

继上一次准备了PHPunit的培训之后,这两天有研究了xunit系列里的其他几个 ,如cppunit ,和 junit,发现虽然这些xunit都是声称port自junit,但各有各的特点, 相对来说phpunit和junit比较像,都有相应的命令行工具来执行, 但是cppunit就比较麻烦..还要自己写main程序,并编译执行,而且assertXxxx系列的函数在cppunit里变成了一大堆的宏,感觉怪怪的,并且cppunit里的TestSuite和其他两个同行的范围貌似也有些区别,好像一个TestSuite更像是phpunit里的一个TestCase,然后一个Runner可以同时可以执行多个TestSuite……. 除了xunit,之后还看了一些相关语言的profiling 工具, 包括php的apd,perl的 Dprof,c 的gprof,呵呵,发现相比之下php的profiling还是比其他的语言麻烦的,需要手工的修改程序加上 apd_set_pprof_trace(); ,而其他的profiling工具只是在编译或者运行是加一个参数就可以了..不知道以后php会不会出现更加方便的profiling工具。

制作Unihan数据库..

Unihan是unicode.org下的一个子项目,它本身是一套非常完备的基于unicode标准的CJK文字字符集的参考手册,里面包含了非常丰富的汉字元信息,如发音,释意,编码,笔划等信息.. ,其中unicode项目将这些信息存储在一个非常大的文本数据库中(在他的网站上可以下载到)… ,格式为 U+[CodePoint] [tab] key [tab] value 当然,还有很多行为注释(注释是以#开头的) 这样虽然简单明了,但是不如放到关系型数据库中检索方面,于是做了简单的perl脚本来解析导入数据库… 数据库sqlite sqlite> CREATE TABLE hanzi( zi char(3) , k char(100), v text, PRIMARY KEY(zi,k)); 注意这理我有一个失误,其实在开始的时候没有必要建立主键,可以在导入之后统一建立,因为数据库的索引的确很影响insert的速度. perl脚本 #!/usr/bin/perl -w use strict; use DBI; use constant UNIHAN_DB      => "unihan.db"; use constant UNIHAN_FILE    => "Unihan.txt"; # db handler my $dbh = DBI->connect("dbi:SQLite2:dbname=" . UNIHAN_DB . [...]

PHPUnit2的介绍

过些日子要给同事介绍PHPUnit,so,今天晚上忙到现在(快凌晨4点了)写了一篇关于PHPUnit的Presentation , 算是一个初稿吧,是用Openoffice 的 presentation写的,转换成ppt格式,不知道在windows下看效果怎么样 想看看的可以到这里下载: http://rainx.cn/documents/phpunit/PHPUnit.ppt

关于Bt(Bit torrent) 协议

对Bt感兴趣好一阵子了, 不过一直都没有好好分析一下bt所应用的协议, 今天 上了一下bt的官方网站, 研究了一下 bt 的协议 (http://www.bittorrent.org/protocol.html) , 费尽千辛万苦才读了大约2/3的内容,发现英文的读起来不爽(虽然比较简单),所以搜了搜中文的网站,发现早就有人翻译过这篇协议说明了, 在这里: http://callof.net/Site/pView.Asp?id=614 还有比较好的一篇就是姚同学的 Ctorrent 程序源码分析 http://yaoxuchen.googlepages.com/ctorrent 虽然已经有了精彩的文章,我还是把我分析时所画的图扔上来吧,呵呵 A 我自己分析的Bt客户端下载的流程 B 分析tracker信息时用ethereal的截图

Elephants Dream 开源的CG

知道Blender3D已经是N年前的事情了,那个时候还在火星上混,苦练Rhino3D的Nurbs曲线建模(主要用于工业和产品造型),由于3D软件是很昂贵的东东,所以那段时间做了一个对各个主流3D建模,动画软件的价格进行了对比,主要包括3dmax , softimage xsi, lightwave 3d, cinema4d(当然还有很多,但是都不太流行) , 那个时候得出的结论是Lightwave是最流行,使用人数最多的一个(当然是在国外,不是中国), cinema4d的性价比最高,softimage xsi的功能强大,价格也超高,Maya的价格没有想象中吓人,3d max的定价偏高(对比他的功能来说),便宜的cinema4d和lightwave至少也要几千到上万人民币, 3d max居然也要几万一套(他在中国的流行完全靠盗版了,呵呵)。当时很难想象这么暴利的3d动画行业也会有开源的软件存在,幸好在cgtalk 了解到有blender3d的存在,但是上了它的网站之后却有些失望,blender那个时候显得有点简陋,那官方网站上提供的图库也是水平远远低于其他商业的3d动画软件,那个时候认为Blender不过是个玩具罢了。 N年过去了,现在我已经很少看关于CG的东东了,很少上Cgtalk了,但是某天还是在cgsociety.org上了解到Elephants Dream这部由Blender3d , Gimp等开源软件制作的open movie 。 之后就下载看了这部片子,真的很不错,很难想象这部片子是由以前我认为是玩具的blender作出来的,看ED有种看美国商业CG片的感觉,场景很旋,光影和人物造型也非常棒,真的很佩服现在的这些艺术家。也很佩服Blender和他的开发者们。 ps: 1 . blender 3d采用的脚本语言是python 2 . 渲染Elephants Dream这部11分钟的片子,花了240个双核Xserve集群125天的时间 3 . 影片的开发是由N个国家的多个艺术家,导演,软件开发者合作完成的 4 . 开发者主要是用的操作系统之一就是ubuntu linux

Php ext的编写步骤

很久很久很久没有更新Blog了,呵呵,前段时间自己的笔记本坏了(而且最惨的是硬盘坏了,数据都~~~~~),拿去送修…本来很简单的换块硬盘的工作,结果居然叫HP维修中心拖了半个月的时间(说是中国库房没货了~~~~~).. 哎,害的回家的时候只能打Dreamcast来消遣… 。 不过现在终于修好了,回来之后我在上面安装了一套ubuntu系统.. 呵呵,现在用的就是了…. 这里post一个我前段时间在公司些内部培训的教程时用freemind画的一张php extension编写步骤的教程,呵呵(在原图基础上做了一点点修改),里面步骤很详细,我就不多解释了。 呵呵, 对了,忘了提了..我的flickr转为pro的了 .. hiahia

Cache_lite的hashedDirectoryLevel选项

对于solor提取和一些中间步骤的数据,我采用的是cache_lite这种文件型cache来进行缓存,但当时设计时由于考虑到是文件型的cache,就没有顾及cache数据的大小的问题,所以cache了大量的无用和冗余数据,而且ttl设的超长。前段时间solor经常出现类似too much files open failed 之类的错误,估计于这个有关(不是打开的文件太多,而是/tmp这个dir下的file列表太长了),5月初的时候才清了一下所有的cache,不过今天再一看cache的目录,也已经堆积了1.7G的数据 [rainx@web01 /tmp]$ sudo du -h -s 1.7G . 而我对其目录进行 ls 操作时显示 [rainx@web01 /tmp]$ ls * bash: /bin/ls: Argument list too long 所以只能用find命令对文件进行批量操作,比如获取文件的数量 [rainx@web01 /tmp]$ sudo find . -type f |wc -l 26761 突然想到当初翻译cache_lite 中文手册时, 曾经注意过这个参数 :hashedDirectoryLevel,它的作用是 [since 1.4.0beta1] 设置hash目录结构分层. 0 代表 “没有hash目录结构”, 1 代表 “使用一层目录\\”, 2 代表 “两层”… 只有在有很多的cache文件时。这个选项才可以加速cache_lite。只有进行具体的测试才可以帮助你找到适合的值. [...]