Archive for the '技术' Category

整理一下lighttpd+php在iPhone上的安装的方法

> Win32使用putty,linux和mac osx使用ssh连接到iPhone;

> 安装php和lighttpd;

apt-get update; apt-get install php; apt-get install lighttpd

> 创建布署目录;

mkdir -p /var/www/htdocs

> 修改lighttpd配置;

vi /usr/local/etc/lighttpd.conf

修改:

server.document-root = "/var/www/htdocs"
server.modules = ( "mod_fastcgi" )
server.tag = "lighttpd 1.4.18/PHP 5.2.8 (cgi-fcgi)"   #此处可以随意填写
server.pid-file = "/var/run/lighttpd.pid"
index-file.names = ( "index.php", "index.py", "index.html", "index.htm" ) #根据自己需要填写
static-file.exclude-extensions = ( ".php", ".fcgi", ".cgi", ".py" )
fastcgi.map-extensions = ( ".php3"=>".php" )
fastcgi.server = (
    ".php"=>((
        "host"=>"127.0.0.1",
        "port"=>9000,
        "broken-scriptfilename"=>"enable",
        "fix-root-scriptname"=>"enable"
    ))
)

cgi.assign = (
     ".py" => "/usr/bin/python"  # 如果安装python的话,可以考虑添加这行
)

#其它保持不变
memetype.assign ...

> 运行;

php-cgi -b 127.0.0.1:9000 &

lighttpd -f /usr/local/etc/lighttpd.conf &

> 测试;

echo "<?php phpinfo(); ?>" > /var/www/htdocs/info.php

打开safari,输入地址 http://localhost/info.php

 

以上操作必备条件,jb过的iPhone,已经安装unix subsystem,mobile terminal,cydia,openssl,openssh。

Flash毒药收集

第一剂:

new Matrix3D().append(null);

杀伤力: 4星
辐射面: flash cs4, flashplayer 10.*, as3
症状: flash cs4 意外退出,flashplayer 10.*直接crash
来源: D.S

第二剂:

var a=<a><n/></a>
a.@* = a.@*;
a.toString();

杀伤力: 5星
辐射面: flash cs3/4, flashplayer 9/10, as3
症状: flash cs3, 4 crash,flashplayer9以上播放swf时直接crash
来源: Ticore's Blog

第三剂:

Object['isPrototypeOf']();
Object['hasOwnPrototype']();
Object['propertyIsEnumerable']();
Object['setPropertyIsEnumerable']();

//(以上任意一行)

杀伤力: 5星
辐射面: flash cs3/4, flashplayer 9/10, as3
症状: flash cs3, 4 crash,flashplayer9以上播放swf时直接crash
来源: Ticore's Blog

你怎么用iPhone?

iPhone的操作系统是mac os x,越狱的iPhone通常都会带上unix subsystem,也就意味着iPhone已经不再是手机那么简单,反正在我的眼里它就是一台可以随身携带的迷你unix server,不过要借助ssh客户端软件,比如putty。

列一下我在iPhone上最常用的命令行工具:

> svn:用于从开源社区,如Google Code获取源码;

> wget:命令行下载工具;

> apt:基于命令行的软件管理工具,可以完成cydia所能做的事;

> links:基于命令行的浏览器,超屌,应用场景嘛,自己想想,类似的工具还有lynx,可以用apt-get安装;

> top:类似windows任务管理器,不过不能直接关掉进程,需要使用kill/killall来关闭;

> killall:关闭指定程序名称的所有进程,killall SpringBoard;

> vim:用来代替subsystem自带的vi,我是直接用apt-get install vim安装的,支持大部分语法高亮,我另外安装了actionscript 1.0 - 3.0的语法包;

> httpd:http服务器,可以装php5,当开发用的server来跑;

> sqlite:命令行下访问通讯录等数据库;

> google appengine sdk:开发使用google ape服务python应用;

> 3proxy:在iPhone上架设代理服务器,特殊情形下,用于笔记本利用wifi通过iPhone GPRS上网,包含socks/http(s)/imap;

> iphone sdk:可以在iPhone上开发iPhone使用的xcode代码(有点绕),需要安装gcc for iphone;

还有不少东东就没有写,总而言之,你还真“别拿iPhone不当电脑” ,如果你愿意,可以把iPhone当网站服务器用,嘿嘿...

这些东东已经小用了数月,也小有体会,如果有同样需求要的同学,可以留言,一起发掘iPhone的潜力,下面上几张小图。

iphone_putty_sqlite3

sqlite

links for iPhone

links

 

actionscript syntax

actionscript syntax

google ape

google ape

 

python

python

AS3处理GB2312数据的严重BUG

BUG描述:

flash as3使用URLLoader & URLRequest加载gb2312文本时,字符串内存边界判断有误,导致读出的数据结尾有随机乱码或者数据读取不完整。

捉虫全记录:

> 使用as3加载解析XML时,发现偶尔会抛出XML格式错误的异常,运气不好的话出现频率非常之高;

> 用trace显示数据内容时,发现文件有时加载不全、有时尾部有随机乱码;

> 使用抓包软件发现数据完全正常,所以肯定是flash搞的鬼;

> 开始怀疑文本编码导致的问题,将文件存为utf-8后,完全没问题;

> 试了多次,随机内容有时完全是无关的东东,偶尔还有其它进程里的一些数据;

> 到此为止,可以肯定是内存字符串结束符处理问题;

影响面:

flashplayer 9, 10

解决方案:

方案一: 尽量不要使用gb2312数据源,如果非用不可,可参考《方案二》;

方案二: 建立socket连接,自已发送http header,接收数据进行解析,如果遇到跨域问题则看《方案三》;

方案三: 在数据尾部加入特殊的结束符(比如:),数据加载完成后把结束符后的内容全部去掉,如果遇到加载不完整的情况,则重试加载(记得要限制次数),不能100%保证,经过测试重试后成功率99.9%;

附件:

BUG演示程序

 

根据allen的处理方法,进一步追查了原因,可以确切的定位出是ByteArray.toString方法的BUG所致:

> URLLoader.data 是 ByteArray 类型,所以只要把 e.target.data as String 改为 e.target.data.readMultiByte(e.target.data.length, "gb2312") 即可以解决问题;

> e.target.data as String 实际上是执行了 ByteArray 的 toString 方法,那么很可能BUG是出在 ByteArray.toString 方法;

> ByteArray相当于是向量数组,length值应该是根据写入数据长度来改变,所以length值无论如何都是正确的,所以按上面 readMultiByte 方法读取,不会读出多余的数据,而 ByteArray.toString 方法并不能使用属性length来获取数据长度,需要根据编码类型来动态计算,正常来说是不会有错的,错就错在处理部分编码类型时使用了strlen或sizeof去获取数据长度,而ByteArray是可以存任何二进制数据的,当然不会有\0结束,这样的情形下strlen和sizeof是绝对不可信赖的;

> 只有这样才能解释 toString 的BUG。
 
结论是:
不要尝试使用 ByteArray.toString 的方法来获取 gb 编码的数据,最好是根据目标编码,使用 readMultiByte 读取。

老树开新花-T42安装Leopard

最近经常看到Leopard的漂亮界面,难免有些心动,可怜的T42本本又要被我折磨了... Read more »

使用Secure修复Grub

我的本本是Windows+Suse双系统, 使用Grub引导, 在windows下用磁盘工具改变分区后, Grub提示Error: 15, 手头上有Windows和Suse的光盘... Read more »

让WordPress的Dashboard干净起来

在WordPress管理面板Dashboard页面, 有WordPress Development Blog和Other WordPress News两个栏目, 不知道你有没有看我, 反正我是觉着碍眼, 下面我们就来干掉它... Read more »