pxl格式的iphone程序包,可以直接通过91手机助手安装到真机,很方便,介绍一下制作方法。

1. 新建一个目录 $appname

2. 在$appname目录下,新建文件夹 PkgScript和文件PxlPkg.plist

3. 将包XXX.app文件夹内容复制到$appname目录下,我一般连上真机,winscp下载 (/var/mobile/applications下)

4. 步骤2中的PxlPkg.plist 文件格式见附录。

5. chmod -R 755 *    后再 zip ../weibolu.pxl -r ./*

修改$appname目录下所有文件的属性,并打zip包 。(这一步在mac下做,或者在windows的cygwin下做)

6. 完毕。如果装了91 iphone助手,双击pxl包就能安装

 

附录: PxlPkg.plist 文件格式

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“[]>
<plist version=”1.0″>
    <dict>
        <key>CFBundleIdentifier</key>
        <string>Reweibo.Weibolu</string>
        <key>RDPxlPackageFiles</key>
        <array>
            <dict>
                <key>destination</key>
                <string>/Applications/weibolu.app</string>
                <key>overwrite</key>
                <true />
                <key>permanent</key>
                <false />
                <key>source</key>
                <string>weibolu.app</string>
            </dict>
        </array>
        <key>RDPxlPackagePostflight</key>
        <array>
            <array>
                <string>chown</string>
                <string>-R</string>
                <string>root</string>
                <string>/Applications/weibolu.app</string>
            </array>
            <array>
                <string>chmod</string>
                <string>-R</string>
                <string>775</string>
                <string>/Applications/weibolu.app</string>
            </array>
        </array>
        <key>RDPxlPackageDesc</key>
        <string>微波炉</string>
        <key>RDPxlPackageFormat</key>
        <string>1</string>
        <key>RDPxlPackageName</key>
        <string>Weibolu</string>
        <key>RDPxlPackageVersion</key>
        <string>0.1</string>
        <key>RDPxlPackageIcon</key>
        <string>weibolu.app/icon.png</string>
        <key>RDPxlPackageFireware</key>
        <string>3.0,3.1</string>
    </dict>
</plist>

Posted in 未分类 at 10月 12th, 2009. No Comments.

1. 新建一个目录 $appname

2. 新建文件夹 Payload和文件iTunesArtwork (注意大小写,iTunesArtwork由图标文件改名得到)

3. 包XXX.app文件夹内容放到Payload下,我一般连上真机,winscp下载 (/var/mobile/applications下)

4. 修改XXX.app下的Info.plist,现在的Info.plist一般都是二进制文件了。可以用专门的工具(叫做pledit)修改。其实自己建一个文本格式的文件也能正常工作。格式见附录。

5. 将$appname里的内容,用winrar压缩,选择zip格式,后缀名直接改为.ipa即可。

6. 可以用iTunes同步到真机了。注意真机必须做一下同步非appstore ipa的破解。

附:Info.plist格式

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd“>
<plist version=”1.0″>
<dict>
 <key></key>
 <string></string>
 <key>CFBundleDevelopmentRegion</key>
 <string>English</string>
 <key>CFBundleDisplayName</key>
 <string>Weibolu</string>
 <key>CFBundleExecutable</key>
 <string>Weibolu</string>
 <key>CFBundleIdentifier</key>
 <string>com.yourcompany.Weibolu</string>
 <key>CFBundleInfoDictionaryVersion</key>
 <string>6.0</string>
 <key>CFBundleName</key>
 <string>Weibolu</string>
 <key>CFBundlePackageType</key>
 <string>APPL</string>
 <key>CFBundleResourceSpecification</key>
 <string>ResourceRules.plist</string>
 <key>CFBundleSignature</key>
 <string>????</string>
 <key>CFBundleVersion</key>
 <string>1.0.1</string>
 <key>DTPlatformName</key>
 <string>iphoneos</string>
 <key>DTSDKName</key>
 <string>iphoneos2.0</string>
 <key>LSRequiresIPhoneOS</key>
 <true/>
 <key>MinimumOSVersion</key>
 <string>2.0</string>
 <key>NSMainNibFile</key>
 <string>MainWindow</string>
 <key>SignerIdentity</key>
 <string>Apple iPhone OS Application Signing</string>

</dict>
</plist>

别的不太重要,粗体部分的是<key>SignerIdentity</key>
 <string>Apple iPhone OS Application Signing</string>
必须的。

 

Posted in 未分类 at 10月 12th, 2009. 1 Comment.

碰到文件路径比较深的,在terminal里要使用能急死人。这个方法不用装任何程序,简单实用。

mac osx 下,快速复制文件路径的方法。1. 将文本编辑(Text Editor)设置为纯文本模式。 2. 将文件或者文件夹,拖到文本编辑器里,即可。

Posted in 未分类 at 10月 10th, 2009. 2 Comments.

iphone开发中,在头文件的interface声明里,可以用@property (nonatomic,retain) NSString *blog;来声明一个属性,在objc 1.0里,需要自己写getter setter 方法,在现在的objc2.0里已经简化了。只要在.m文件中头部 @synthesize blog;即可生成blog属性的 getter和setter方法。

一般情况下,属性里的对象变量,在对象释放之前都要保留至少一个得retain Count,否则,不一定什么时候使用属性的时候,属性对象已经被释放了,就出错了。如果,没有使用@synthesize生成setter方法,而是自己对属性赋值,这时候,一般都要对属性对象[obj retain]以后再赋值。(针对通过with初始化的;通过init初始化并autorelease的一样)。

还有一点非常重要,使用中注意,比如上面的类:

如果这样对blog属性赋值,

Blog *iu1ublog = [[Blog alloc] init];

blog = iu1ublog;

[iu1ublog release];

在真正需要blog属性时,会发现blog属性的对象已经被释放了。因为 blog = iu1ublog这一步并没有ratain这个对象的引用计数。

必须用 self.blog = iu1ublog,才说明是对属性赋值,对象才会retain. 直接blog = iu1ublog,是对内部成员变量赋值,不是对属性赋值。

Posted in 未分类 at 10月 9th, 2009. 1 Comment.

Google Wave这两天比较热,求的人很多。Google Wave这个词在twitter和新浪微博上都成了热门话题词了。早上微博上一个朋友找我要邀请,找了好一会儿才找到当时的账号。当时是sandbox账号,现在是正式google wave了。里面有一条让我激活的Wave,激活以后,感觉内容比sandbox稍微好一点了。可是还是玩不起来,可能现在人太少吧。带了8个提名资格,没发现邀请资格,所以又需要提名的,可以跟我要。

说说对google wave的简单看法,感觉本质上其实和twitter,微博还是很类似的,不过,做的更细化了一点。可以发普通wave,添加了相关widget以后,可以发视频等等。比twitter线索化一点,一条wave可以很长。过几天人多了,玩玩在评价吧。

Posted in 未分类 at 10月 2nd, 2009. 23 Comments.

这也是个iPhone开发初学者常犯的错误。原因是声明属性的时候,没有一个配套的私有属性。

@property (nonatomic,retain) IBOutlet XXX *xxx;

在类里如果不给他指定对应的私有属性,即使给属性赋值了,也无法保存,就会产生这个错误。

synthesized property ‘xxx’ must either be named the same as a compatible ivar or must explicitly name an ivar

不过这个错误在加入@synthesize xxx;以后才会出现。因为@synthesize会帮你生成一个getter和setter方法。

Posted in 未分类 at 09月 15th, 2009. 1 Comment.

excel小技巧:

要求:创建一个下拉框,让使用者可以从中选择一个预设的值。

步骤:选中一个单元格,菜单【数据】【有效性】,在设置TAB页,允许里面选“序列”,来源里面,写下各个预设值,中间用半角逗号分隔开。如”苹果,西瓜”,点击确定即可!

Posted in 未分类 at 08月 12th, 2009. No Comments.

没事看看开源的项目,也能有些收获。比如有些模块几乎是所有项目都要用到的,如反SQL注入处理等。

今天看EasyTalk的源码,这是他们的处理方式,可以参考一下

//addslashes() 函数在指定的预定义字符前添加反斜杠
function daddslashes($string) {
    $string=str_replace(”‘”,’”‘,$string);
    !defined(’MAGIC_QUOTES_GPC’) && define(’MAGIC_QUOTES_GPC’, get_magic_quotes_gpc());
    if(!MAGIC_QUOTES_GPC) {
        if(is_array($string)) {
            foreach($string as $key => $val) {
                $string[$key] = daddslashes($val);
            }
        } else {
            $string = addslashes($string);
        }
    }
 return $string;
}

其实就是addslashes转义’ 引号。此外,htmlspecialchar经常被用来防止用户输入恶意script脚本

Posted in 未分类 at 07月 15th, 2009. No Comments.

一般ubuntu server在安装的时候,都会在ui中让你输入vip地址和网关dns等信息。

一般搬迁服务器的时候,都会重新配置服务器的ip信息。那么,在shell下怎么修改呢。今天,正好给宠物导航搬迁服务器,顺便整理记录一下。

打开/etc/network/interfaces,如果没有配置过ip,比如安装过程中跳过,则会看到

auth lo
iface lo inet loopback

如果,已经配置过,会看到类似如下的eth0 或 eth1配置

#from iu1u.com
auth eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.254
dns-nameservers 202.106.0.20

修改其中的信息为自己的,修改dns还要同时修改/etc/resolv.conf文件里面的dns地址。

然后重启机器,或者执行命令sudo /etc/init.d/networking restart,刷新网络接口信息即可。

Posted in 未分类 at 04月 27th, 2009. 1 Comment.

url编码:$str =~ s/([^A-Za-z0-9])/sprintf(”%%%02X”, ord($1))/seg;

这样编码以后,就可以放到网址中了,如:<a ref=”page_given_string.php?str=$str”>LINK</a>

对应的url解码:$str =~ s/\%([A-Fa-f0-9]{2})/pack(’C', hex($1))/seg;

看到perl正则的强大威力了吧

Posted in 未分类 at 04月 19th, 2009. 1 Comment.