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

iPhone OS3.0发布会

苹果的iPhone OS 3.0发布会如期进行,瘾科技总部进行了全程直播,不才对大家比较关心的问题进行了摘要,爽一下 ...

SDK新增1000个API,先出场的是主要API部分:

> 允许应用程序调用支付接口: 比如用户玩游戏时,弹出购卖下一关游戏的提示,点击buy可以直接进入支付流程;

> 点对点连接: 允许游戏及其它类型程序查找并连接到附近的其它iphone/ipod touch设备, 进行wifi/bluetooth通讯(应该是调用苹果的bonjour服务);

> 硬件接口直接访问: 比如通过com端口与第三方硬件通讯, 实现血压测量之类的功能, 也可以通过wifi/bluetooth通讯;

> Google地图API开放: 允许开发者将地图嵌入到自己的应用程序中(估计类似maps.google.com的api);

> 推送(push): 允许开发者调用苹果的推送服务,实现无background task的推送, 说是为了省电;

应用功能部分:

> 复制、粘贴: 期待已久的功能终于登场, 输入内容时双击单词, 会自动选中, 并弹出编辑栏, 有CUT/COPY/PASTE按钮, 点击空白编辑区, 编辑栏按钮变为SELECT/SELECT ALL/PASTE, 在Safari里在文字区域长按,则出现选框,选框四周带可拖动的小圆点,看似只支持矩形选框,意味着可以纵向选择,在Safari里支持对html格式的复制,支持undo,特别指出在任何应用程序均可使用,更值得兴奋的是复制粘贴功能对相册里的照片同样适用,cool! 不同的是照片需要勾选,可以直接粘在email正文里;

> MMS支持: 终于出现了,当初可是很多人因为这个放弃iPhone的哦;

> 横向键盘支持: 在Email/SMS/Notes里均可使用横向键盘模式;

> SMS支持转发和直接删除按钮: 这个不用细说了;

> 语音备忘录: 也有很多人期待这个功能,个人没啥感觉;

> 增加对CalDAV协议支持: 应该有不少人对此比较陌生,不太了解这个协议;

> 全局搜索: 类似MAC的Spotlight,可以搜索Contacts/iPod/Notes/SMS/Mail ...,比较特别的是专门创建了一个Home screen来使用这个功能;

> 其它: Stereo Bluetooth(A2DP),Wifi autologin, youtube accounts, notes sync, shake to shuffle, anti-phishing, auto-fill, parental controls,  ...

> 最后: iphone 2g,3g均可以免费升级,ipod touch需要支付$9.95,一代iPhone不支持A2DP和MMS(suck!!!);

 

可以到这里查看英文原文以及全部现场图片。 赞一下瘾科技的专业!!

有用的formatString,支持Actionscript1.0

有用过C#, C/C++, PHP的人都应该知道string.Format或者printf吧! 下面我们让AS也有这样的功能. 什么? 没听说过 ... 拖出去TJJ ...

 
var formatString = function(m)
{
  if (m.indexOf("{")==-1) return m;
  var r="",n="";
  for(var i=0;i<m.length;i++)
  {
    if (m.charAt(i)=="{")
    {
      i++;
      for(n="";m.charAt(i)!="}";i++)
        n+=m.charAt(i);
      if (isNaN(parseInt(n)))
      {
        r+="{";
        i-=n.length+1;
        continue;
      }
      i++;
      r+=arguments[parseInt(n)+1];
    }
    r += m.charAt(i);
  }
  return r;
};
 
/* usage:
var model = "<font size='{2}'><b>{0}</b>+<b>{1}</b>=<b>{0}</b></font>";
var str = formatString(model, 100, 0, 9);
trace(str);
// output: <font size='9'><b>100</b>+<b>0</b>=<b>100</b></font>
*/ 就这么简单, 如果觉得不爽, 你可以继续使用:
var str = "<font size='"+9+"'><b>"+100+"</b>+<b>"+0+"</b>=<b>"+100+"</b></font>";
trace(... 狂呕中 ...
 

顺便说一句: 函数体不用修改, 直接拿到html里当Javascript使, 也可以

瘦版的Delegate,支持Actionscript1.0

 Actionscript 2.0 内置了mx.utils.Delegate的类, 用法就不说了, 自己查查Google, 写了个瘦版的, 经测试可以支持Actionscript 1.0 ...

 
var fns = [];
var delegate = function(o, f)
{
    var i = fns.length;
    var fn = function(){ fns[i].f.apply(fns[i].o, [arguments,this]); };
    fns[i] = {o:o, f:f};
    return fn;
}
 
/* usage:
var onStart = function()
{
    trace(this);
};
 
btn_start.onRelease = delegate(this, onStart); // output: _level0
//btn_start.onRelease = onStart; // output: _level0.btn_start
*/
 

为什么说是廋版的呢, 其实就是编译后的文件小了一些, 看数据:

使用 mx.utils.Delegate, 文件大小会增加841 byte, 使用上面的代码, 文件大小只增加379 byte, 瘦了462 byte, 相当于小了一半多, 如果算上调用语法所占的大小, 应该不只少462 byte.虽然按字节数来说, 瘦得不多, 可是大家都知道积少成多的道理, 环保呀 ...