Fluid idea for Life

随笔,杂记

AIR2.0中的SecureSocket

前不久发布的AIR 2.0 测试版,又带来了很多新的功能。在网络通讯方面,AIR的功能得到了很大提升,比如支持UDP连接、安全套接字,还可以作为Socket Server。

在《Flex第一步》中,有个关于邮件查看的例子,使用Socket连接POP邮件服务器,比如网易126,但对于Gmail等要求安全连接的服务器,则没办法了。不过在AIR 2.0中,这个问题得到解决。新增的flash.net.securesocket类,可以实现这个功能。

在labs.adobe.com上,有一个AIR2.0版本的Email Notification的小例子程序,功能和Google的Gmail Notification非常相似。使用这个程序,设置好邮件帐号,就可以及时获取新邮件通知,不管是Gmail还是Hotmail,只要邮件服务器允许第三方客户端,都可以支持。

http://labs.adobe.com/technologies/air2/samples/可以找到该程序的安装文件以及源代码。另外还有多个有用的例子程序,是学习AIR的好去处。

Tags: air, securesocket

说《复仇》兼谈许巍

昨天看了《复仇》,但还没看完结局。和前一段时间看到《意外》相比,感觉还是杜琪峰更加有特点。

影片从温馨开始,罗大佑的音乐很舒缓,这让忽然响起的枪声格外震耳。其实现在不管是看银河印象的哪个电影,都有似曾相似的感觉,这一部也不例外。多了一个法国老人,让黄秋生和林雪说一些E文,但你不能说就是国际化了?

其实重复也无所谓,只要里面有一些新的感觉就可以,因此,这部片子还是很不错的。脸上皱纹密布的法国老人做饭起来很慈祥,在饭桌边玩枪帅的是稀里哗啦啊,四个人无比拉风地走,和《放逐》里相比,差别就是吴镇宇换成了老头,张耀扬换成了林家栋,但走的路线还是一样的。树林枪战部分,可以和《枪火》《放逐》对照,略有出无。

不得不说的是林雪,无比可爱,断断续续说E文的样子简直是人见人爱啊。

至于情节,反倒不怎么关心了。

------------------------------------------------------

这个周末许巍将在杭州举办演唱会,距离我上班的地方很近,走过去也就10分钟不到。大约6、7年前,很喜欢他。现在已经没有那么热情了。

自从在武汉的Vox听了一次周云蓬的演出,我觉得小众的弹唱会才像在听歌,很享受。

Tags: 复仇, 许巍

as3 pdfReader的进展

最近一段时间,用所有可用的时间,投入到as3 pdfReader的开发中,取得了一定的进展。

相对于0.1版本,修正了若干Bug和错误。对PDF 1.4版本的文件进行了测试,基本上没发现问题,由于1.5以后有新的变化,比如object stream,这些还需要分析解决。

在提取文本上,没有进行编码的文本已经没问题了(这好像是废话,没有被压缩就是纯文本),对于压缩过的,由于压缩算法有几种,现在在写移植解码算法,比如 ASCII85、LZW。

另外,对于中文的提取,还有很多疑问,希望在这方面有经验的同志,能够加入。最新代码可以通过 SVN获取。

Tags: pdfreader

别太 OOP了

忽然发现,我有点out了。在一个技术讨论会上,作为旁听者,听着一伙人在热烈地讨论一些很OO的东西,比如选择哪个框架,是Cairngorm,还是PureMCV,还是类IOC之类的,有人说Cairngorm有...缺点,也有人说PureMVC不好,Mate比较好,但又有哪些不好。

类似的问题还有:选择哪个单元测试工具?选择哪个压力测试工具?选择哪套UI组件?....在论坛上,这类问题数不胜数。

但讨论了半天,却很少讨论项目需求。

--------------------------------------------------------------------------------------------------

有一个驾驶热气球的人发现他迷路了。他降低了飞行的高度,并认出了地面上的一个人。他继续下降高度并对着那个人大叫,“打扰一下,你能告诉我我在哪吗?”
下面那个人说:“是的。你在热气球里啊,盘旋在30英尺的空中”。

热气球上的人说:“你一定是在IT部门做技术工作”。

“没错”,地面上的人说到,“你是怎么知道的?”

“呵呵”,热气球上的人说,“你告诉我的每件事在技术上都是对的,但都没有用”。

地面上的人说,“你一定是管理层的人”。

“没错”,热气球上的人说,“可是你是怎么知道的?”

“呵呵”,地面上的那人说到,“你不知道你在哪里,你也不知道你要去哪,你总希望我能帮你。你现在和我们刚见面时还在原来那个地方,但现在却是我错了”。

--------------------------------------------------------------------------------------------------

程序员往往容易从自己的角度出发去思考问题,却很少从现实的角度考虑做法的实际意义。

有Java程序员发现在Flex Builder中无法自动生成getter/setter(现在好像可以了)或Cairngorm模板,一时冲动要编写一个插件要实现这个功能。我不知道自动生成代码这个功能到底能提高多少工作效率,但我想即使是手动敲,也就是一分钟的事。在编写程序的过程中,很多想法往往是在敲击键盘的过程中诞生出来的。编写代码,如果不用键盘,似乎丧失了很多乐趣。

这是一个注重用户体验的时代,甭管什么技术,用户满意就是最大的成功。技术并不存在什么优劣,关键是怎么用,什么人在用。

Tags: 随想

nginx + php FastCGI安装

最近一直在捣鼓Nginx,在接手一台新的服务器时,我萌生了向Nginx移植的想法,并且很快开始实施了。中间遇到了若干问题,特记录,以备以后查找。

首先搭建了一台Centos 5的虚机练手,当然,Nginx的安装简单的很,即便是编译安装,也就是眨眼间的事,关键是php的安装。在网上看到很多人选择用lighttpd中附带的spawn-fcgi来启动php-cgi,不过再三权衡,还是选择了php-fpm,它相当于一个php的补丁插件,可以做到无缝连接,而且很有可能,以后会包含在php发行版中。php-fpm还有很多特性,这点在其官网上有介绍。

php-fpm的安装有两种方式,一种是以补丁方式嵌入到php中,整合后编译安装,适合于php的全新安装;如果php已经安装好了,又不想再重新编译,则可以选择第2种,独立安装php-fpm。

这里说说第一种方式,帮助文档中很详细:

export PHP_VER=5.2.10
wget "http://launchpad.net/php-fpm/master/0.6/+download/php-fpm-0.6-$PHP_VER.tar.gz"
tar -zxvf "php-fpm-0.6-$PHP_VER.tar.gz"
"php-fpm-0.6-$PHP_VER/generate-fpm-patch"

上面一条命令就是生成补丁文件,然后下载php文件,解压。

wget "http://us.php.net/get/php-$PHP_VER.tar.gz/from/us.php.net/mirror"
tar xvfz "php-$PHP_VER.tar.gz"
cd "php-$PHP_VER"

打补丁,然后编译:
patch -p1 < ../fpm.patch
./buildconf --force
 mkdir fpm-build && cd fpm-build
../configure --with-fpm --with-libevent="$LIBEVENT_SEARCH_PATH" && make

实际安装中,我选择的是php 5.2.11版本,服务器的系统为centos 4.x,运行buildconf命令更新配置文件时,提示autoconf的版本太高。Google的结果是php的开发者偏好autoconf 2.13这一颇古老版本,于是降级autoconf,执行成功。

执行configure时,还要根据选择,把常用的库带上,比如gd,curl,sockets,mysql,zip,mbstring等等。当然,前提是相关软件比如gd,libpng,jpeg,zip,zlib,mhash,mysql等等都已装好,以下是我的:

../configure --with-fpm  --prefix=/usr/local/php --with-jpeg-dir=/usr/local/jpeg --with-png-dir=/usr/lib --with-freetype-dir --with-gd=/usr/local/gd2 --enable-gd-native-ttf --with-mysql --enable-sockets --enable-force-cgi-redirect  --enable-mbstring --enable-ftp --with-mcrypt --with-mhash --with-curl --with-openssl --with-curlwrappers --enable-soap --enable-inline-optimization --with-zip --with-zlib-dir CFLAGS=-liconv

第一次安装时,没有带上gd库,后来想通过模块方式单独编译gd库,结果倒是可以用,但死活不支持jpg,直接编译,却成功了,个中原因,尚待分析。

强烈建议在编译时加上--prefix选项,这样方便以后卸载、升级。另CFLAGS=-liconv,是为了防止出现liconv致之类的错误, php官网上很多人指出这个长久以来的bug,但一直没有修复,总之不加就是编译不过去。

最后就是 make && make install了,编译结束后给出了一串提示。php相关文件都被装到/usr/local/php下了,同时,还自动生成了php-fpm的启动脚本,/etc/init.d/php-fpm,用法:

service php-fpm start|stop|restart ....

再配合nginx,就完工了。

Tags: nginx php-fpm

Tor翻墙利器

以前,在 Google资料或查看Blog时,如果发现页面打不开,我选择用 Firefox的Gladder插件,喜欢那句口号“被封已成往事”,但一段时间以后,发现简单的代理已经不能解决问题了,现在GFW已经很强大了。于是开始用Tor。

发现公司的网管非常不人性化,所有向外的HTTP请求,只要是非80端口的,都给封了,不过现在已经不是问题了。

GFW现在在四处封锁Tor,唉~

Tags: 翻墙

Haxe的File Format库

Haxe和两三年前相比,现在已经很成熟了,很多人都说它的编译器比Flex的还要好,在性能优化、语法上有很多改进。不过并不冲突,可以取长补短。

Haxe的库现在是越来越多,各种引擎、框架、扩展。File Format是一个文件相关的库,用来解析或生成各种文件格式,比如swf、ABC(swf中的字节码)、Flv、Pbj(PixelBender的二进制格式)等等,在作者的TODO列表上,还有一串跟着。

我比较感兴趣的是pdf,编译了一个小小的例子试了下,在解析pdf时碰到了运行时错误。使用反编译器看了下代码,比较多比较乱,看的头昏,希望作者在后续可以完善这个库。

另外,radpdf,haxe版的生成pdf的库,从php的FPDF移植过来的。

Tags: haxe

技术文章收藏

豆瓣网技术架构发展历程

接触php有好几年了,但一直没有真正从事过大中型站点的开发和设计,最近正面临这个压力,找了很多这方面的资料看,收获不小。

web编程的路还很长,需要学的东西还很多。

Flex mobile开发:openplug 二

写了一个HelloWorld级别的程序,用openplug编译了一把,成功生成 Windows Mobile下的安装文件cab,拿到LP的HTC3232上跑,一切正常。

Flex代码超简单:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="240" height="320">
	<mx:Label x="26" y="37" text="Flex中文" fontSize="12"/>
 
</mx:WindowedApplication>

这么一个小程序,生成的cab有2M多,还是有点大。 openplug据说本月底会出一个Iphone版,而Adobe的slider也快发出来了。

Tags: openplug, slider

Flex mobile开发:slider 和 openplug

今天看到一条新闻, Janus Symbian开源了。swfpack、SWFxME以及Janus,这些做Flash Lite第三方扩展的公司,现在应该与时俱进了,Flash Lite只适合在硬件环境极差的环境下使用,Adobe已经慢慢放手了。

现在,在移动设备上直接跑AS3成为了时下的热点。在labs.adobe.com上,公布了名为“slider”的开发框架,基本可以看作是Flex的移动版。有趣的是,一家法国公司正在做类似的事情,openplug的 ELIPS Studio已经开始商用,公司主页为:http://www.openplug.com/。Develop mobile applications in Flex Builder,这就是他们的广告语!看上去还是很有诱惑力的。目前产品还在开发中,需要邀请才能获取测试版。我刚通过了邀请,现在正在下载中,随后放出使用心得。

另外,在网上溜达时,看到一句评论,大意是说,Adobe放在苹果商店的极其简单的游戏(使用Flash cs5开发的),一个的大小居然有7M多。我想是不是因为要模拟Flash API的缘故,发布时要带上一堆的库?

Tags: openplug, slider

Total: 141Page 3 of 15‹ Prev1234567Next ›Last »