Fluid idea for Life

随笔,杂记

我也开始drupal了

最近在作一个类似sns的站点,考虑到效率问题,决定选择一个开源平台,选择标准很简单,希望能够比较方便的二次开发,且效率和性能都不错,选来看去,最后选择了drupal。drupal和wordpress在某些方面有些相似,它们并没有走纯正的MVC线路,而使用的是动态型脚本语言特有的Hook(钩子)方式。

我之前使用过一段时间的codeigniter框架,觉得很不错,效率和性能很好,但如果用来开发较大的应用,感觉有点别扭,反倒是用简单实用的Hook,写起来反倒觉得很自然。

在数据库设计上,drupal似乎还有提高的地方,仅仅是安装必须的核心模块,加上blog和forum,数据库中的表就有近50个,而安装完一些所谓的常用模块,表的数量刷的就增到近70个,有点吓人,最好的方法还是自己写模块。

让你轻松使用pv3d

今天看到了一个另人想象不到的东西:vizualpv3d,看上去像一个复杂无比的软件,让我们可以轻松创建3d对象,所有的操作都是可视化的,像操作组件那样,添加光照,调节Camera...我想只有老外才有这样的精力和魄力做出这样的东西来。

试用了下,感觉不错,参数太多,还还玩透。目前可以将场景导出为xml,但没看到对应的解析播放器,期待下一个版本。

Tags: pv3d

播放mp3的另一种方法

as3中,ByteArray的出现使得很多应用成为了可能,URLLoader支持以二进制流加载数据,Loader的loadBytes方法可以让我们实现数据和可视对象的转换,到现在为止,已经有牛人写出了一堆的文件分析库,包括swf、png、jpg、gif、zip、ico、psd、bmp、wav...,相信还会越来越多。

不过,as3至今不支持动态载入声音数据,比如mp3数据,但牛人总有牛方法,这不:http://www.flexiblefactory.co.uk/flexible/?p=46,这位实现了以二进制方式播放mp3文件。

分析了一下原理,大概是:首先利用Flash Player 10的新功能,FileReference新增的load方法,获取mp3文件的数据,(这里可以改写为URLLoader加载),然后动态构造一个SWF文件,向其中写入mp3文件数据,从而得到一个包含该声音的swf文件,最后用Loader对象loadBytes,获取其中的SoundClass对象(SoundClass类在popforge中也有出现,有关这个类我还会作深入研究),然后播放。

这个过程不可谓不曲折,经测试,对采样率不是44khz的mp3好象不奏效,原因可能就是上一帖中说的那个啥。

ps,as pdfbox项目已经搁置有段时间了,最近准备再拾起来

Tags: loadBytes

难道一个完美的SOUND真的很难?

很久就听说AS3的Sound有些诡异,一直没有亲见,这次终于碰上了。 下面是段简单的代码:

var sound:Sound = new Sound();
sound.addEventListener(Event.COMPLETE,onLoaded);
var soundChannel:SoundChannel;
sound.load( new URLRequest("test.mp3") );
function onLoaded(e:Event):void
{	
	soundChannel = sound.play();
	soundChannel.addEventListener(Event.SOUND_COMPLETE, onSoundOver);
}</p>
<p>function onSoundOver(e:Event):void
{	
	trace("over:"+sound.length+":"+soundChannel.position);
}

播放完毕,会发现SOUND_COMPLETE事件触发时,position总会小于length,实际测试时,mp3文件不同的采样率导致不同的误差,大的有好几秒,小的有几百毫秒。在一般情况下,这个误差可以忽略,但如果需要对声音时间进行精确控制,问题就大了。最近做的项目中恰好需要对声音进行精确控制,精确到200毫秒左右,在经过反复检测后发现了这个问题。 Google下,发现很多人都遇到了同类问题,比较权威的解释是:Flash Player可以处理比特率在16-320kbps范围内的mp3,且总以44.1khz的采样率来进行播放,这意味着如果原采样率是22khz,则以两倍速度进行播放,于是产生了误差。 有个老外写了一个精确获取position的方法,通过采样率来校正误差,地址一时找不到了,但还是没能彻底解决这个问题,只有等Adobe来做了。

Tags: SOUND_COMPLETE

看过团长,写点什么

经过一段时间的努力,终于看完了《我的团长我的团》,回味了两天,感触很多。 总的说来,太大气,太震撼,太真实,太伤感,太残酷,太感动,太喜欢!但又不忍心看第二遍,因为已经知道结局。 和《士兵突击》相比,我觉得《团长》上升了好几个层次。和其它的军事题材的电视剧相比(其实我没怎么看其它的),我想团长无疑是最特殊的一部,以前没有,我很奇怪这样一部满是象征意味有点先锋的电视剧居然通过了审查,肯定是某个一肚肥肠的家伙实在熬不下去,中途睡着了。 剧中的每个人,都跳出了传统的“好”和“坏”,“正角”和“反角”,开篇正气领然的虞啸卿,在关键时刻却失去了那股血性,变成了一个有些世故的“上峰”,炮灰团的人渣们,打了一场最荡气回肠的硬仗,这不由得让人抓狂,但却异常真实。这样类似的情节,我想在生活中时刻在上演,你可以说成是领导的艺术,或者生存的技巧。 习惯了港台制造的肥皂剧,〈团长〉的台词着实让人要用力地想才能明白。“小太爷”孟烦了的口舌实在厉害,讽刺挖苦尖酸刻薄,偶尔吐一两句警世名言,总是一付得过且过的随心模样,对着心爱的姑娘却说不出来半句想说的话,他最后还是成全了别人,让自己去面对做逃兵留下的自责;死啦死啦是一个复合体,他身上的缺点和优点一样多,但却可爱的紧。不管怎样,他在关键时刻总是坚持自己的原则,不抛弃,不放弃;迷龙,让人又爱又恨,豆饼跳进雷区的那一刻,我真是希望他马上死去,但这又不能怪他;“不辣”,王八盖子的,这样类似的人在生活中好象总是有,很亲切,就像在身边;还有老头,一个好心的帮不上什么忙的医生,也许他更多的是一种精神上的象征,让这些年轻人有个依靠。 这些主角每个都个性十足,但都不算高大全的正面相形,却格外真实,这才是生活。 〈团长〉表达的内涵太多,很容易引发思考,唯一遗憾的是出于商业考虑,节奏过于拖沓,影响了整体的连续性。

Tags: 团长

很强大的AS3库

libspark是一群日本开发者维护的ActionScript开源站点,其中包括了数量繁多的库,其中的很大一部分都很实用,比如swfassist,一个解析SWF文件的库,支持Flash player 9,可以用as动态生成swf文件,还有FLARToolKit,一个as版的虚拟实现库;解析psd文件、ico文件、bmp文件..... 地址:http://www.libspark.org/wiki/WikiStart/en

Tags: libspark

用python写手机小程序

目前在手机上Flash lite的扩展比较火,有KuneriLiteJanusFlyer,刚看到的Flash lite server,还有S60平台的sis打包工具,将swf转为sis可安装文件。 这些扩展软件的原理都相同,其中,KuneriLite和Janus的功能应该算相当强劲的,前者支持s60第三版系统,后者侧重wm系统,Flyer相对简单些,不过Flyer是用python写的,而且开源,扩展性很强。 python出来有很多年了,听闻很强大,但没有亲见。听说在手机上也能跑,很激动。试了下,我的7610居然也能装,s60第二版的系统。写代码确实很简单,功能也很多,发短信、打电话、调用摄像头,几行代码就够了,这是个截屏的代码: import graphics img = graphics.screenshot() img.save(u"e:\\Images\\screenshot.png") 在手机上跑,图片效果: screenshot python也能在wm系统上跑,听说在iphone、google android也都可以,在图形化界面上,效果也都很不错,不过用户需要安装解释器,而且目前的手机一般都没有预装,如果推广了,相信比flash lite更具前景。

Tags: python

Flash lite - ActionScript Stuck排错记

随着3G的到来,手机应用好象又开始升温了,不过总体上看,flash在手机应用上还处于起步阶段,把技术转换为简单实用的产品和服务,这中间还有很多路要走。 最近做的东西很杂,包括一个在手机上跑的Demo。环境是flash lite 2.0,在模拟器上跑Demo,一起正常,结果搬到真机上跑,出现了 Problem with content 4运行时错误,程序挂了。翻阅手册,发现是颇经典的“ActionScript Stuck”错误,肯定是哪块代码写的有问题,于是开始优化程序,所有不用的变量全部delete掉,仔细检查所有的循环,把for循环全部改为while循环,数组定长等等,不过错误依旧。

» 阅读全文

Tags: flash lite

AS pdfBox 0.1

今天花了些时间把前面的代码整理出来,有兴趣的朋友可以下载看看。 http://code.google.com/p/as3-pdfreader/downloads/list

抽取文字的部分还在开发中,遇到一些问题,一直没有太多时间来研究。 09年,只能先把眼前最重要的事情做完,再来做自己感兴趣的东西。祝朋友们身体健康,新年有好心情!

Tags: as3 pdfReader

as3 pdf Reader

as3 pdf Reader,这是我最近在专注开发的一个开源工具库。目前Air支持动态加载pdf,但需要软件支持,使用flash是否可以加载pdf?从理论上说,使用as3解析pdf文件是可行的,不外乎分析二进制流,只不过pdf的结构要复杂一些。我有这个念头已经有一段时间了,打算花几个月的时间,实现一个类似Adobe Reader(当然功能要简单的多)的浏览器。

pdf文件的结构是一个环环相扣的树型结构,对于第一次研究文件结构的我来说,开始真被弄得很昏,好不容易才理清了中间的关系。查找资料的过程中,发现中文的资料比较少。Java、C#等有对应的开源库,看那些源代码真是件头疼的事。目前是照办了PDFBox的代码,从java搬到as,工程量很大,决非简单的重写。

解析pdf和生成pdf这件事逻辑上是可逆的,但实现起来难度却很大,我觉得读比写要困难,AlivePDF的代码对我的帮助有限。PDF文件格式标准到现在已经有多个版本,这无疑增加了解析的难度,其中文本、数据的编码方式也有很多。

不管怎样,作为自己开发的第一个有意义的开源工具库,希望能坚持下去。

开发进度: 目前已经完成了文件的二进制流解析部分,中间的过程不可谓不艰辛,但接下来的才是关键,也就是解析页面信息,分离出文字。再接下来,向更高难度挑战,包括解析图片、字体等等,道路还很曲折。

这是第一个Demo,读取了文件的基本信息:

[kml_flashembed movie="http://www.fluidea.cn/lab/pdfReader/Demo_Text.swf" height="380" width="480" /]

ps:pdf中,对文本一般采用flate编码方式压缩,刚好as3支持,省了一大笔事!!ByteArray的compress和uncompress默认使用的是zlib压缩方式,这个功能原来这么有用!最后,来一段压缩过的新年祝福: 78 DA 7B 36 6D C3 D3 9D 5B 9E EE 5F FD 64 E7 04 45 00 44 76 09 1C

var s:String = "78 DA 7B 36 6D C3 D3 9D 5B 9E EE 5F FD 64 E7 04 45 00 44 76 09 1C";
var stream:ByteArray= new ByteArray();
var arr:Array = s.split(" ");
for (var i:int = 0; i < arr.length; i++)
{
	stream.writeByte ( parseInt(arr[i], 16) );
}			
stream.uncompress();
trace(stream);

由于flash player的安全限制,可以将swf文件下载到本地运行。

Tags: as3 pdfReader

Total: 128Page 4 of 13‹ Prev1234567Next ›Last »