Latest Entries »

TestFlight使用简单说明

一、开发者操作流程简单说明:

1、注册一个账户;

2、管理组成员:点击首页的Team按钮,开始进行成员管理;

3、添加一个开发者或测试用户,在打开的页面上点击右上角的“Invite a teammate”。

在如下的页面中,添加邮件给被邀请测试的用户,如果是开发团队成员,可选中“Team Developer”选项。

4、上传测试版本:点击首页的Builds按钮,开始上传应用;

5、在打开的页面上点击右上角的“Upload a build”

此时会打开一个新的页面,效果如下图:

点击Choose File按钮并上传生成好的ipa文件(生成IPA文件的方法请参考如何使用XCode 4创建ipa文件),并在下面的文本框填写应用修改的内容,都完成之后,点击右下角的“Next:Confirm Testers”开始选择在第3步邀请过的参加测试的人员。

在你希望选中的测试人员前面选中CHECK,点击右下角的完成,系统会发布邮件通知你选择的测试人员安装应用并进行测试。

二、测试者操作流程:

1、首先您会接收一封邀请邮件,格式大约如下;

选择邮件中的“Accept”按钮,去TestFlight网站注册一个账号,或登陆已有的账号,加入到测试团队。

2、完成了之后,需要使用您的iPhone,iPod Touch或iPad打开safari,输入testflightapp.com这个地址,登陆您的账号。

打开页面如下,点击图中的“Back to Dashboard”

3、注册您的设备;

点击图中的“Register Device”按钮去注册您的设备。

在这一步有可能会遇到错误,我的设备就遇到了这个错误,下面提供错误的解决方案。

一般错误出现的情况如下,点击了按钮之后只会出现如下画面:

在官方的技术支持网站上认为有下面两种情况会造成该错误:

a、手机中安装了可以打开这个文件的应用,例如图中的FileApp,或者Evernote等等;

b、Cookie设置有问题。

我首先删除了手机中有可能会打开该文件的应用,同时重新进行了设置,设置方法如下:

打开手机中的“设置”,选择其中的“Safari”

选择“接受 Cookie”选项,将其中的选项改为“总是”

我再次选择“Register Device”,没有出现任何问题,并出现了如下的页面:

4、安装TestFlight到你的手机上,点击上图中的“安装”按钮,完成之后在您的桌面上就会出现如下图效果:

5、以后每次当有新的测试版放出,都会有邮件发送到你的邮箱中,打开TestFlight应用就会看到新发布的测试应用。

点击进入会看到此次修改的详细描述,及应用的一些相关信息,选择下面的“Install”按钮就可以安装这个新的测试版本到你的手机上。

如何使用XCode 4创建ipa文件及提交应用程序

使用了最新的XCode 4,虽然需要进行一些使用习惯上的改变,同时也发现了一些BUG,但总体觉得还是一个很易用的IDE,希望他会变的更好。

这里主要介绍如何使用XCode 4里面的工具直接打包应用,并上传app store的过程,其中如何处理证书和编译应用的过程请参看iPhone App Store提交流程这篇文章。

过程非常简单,处理好你的应用之后,在XCode 4的菜单里面打开“Product”菜单项,并选择里面的“Archive”选项。

等待编译完成,结束之后,会自动打开Organizer,并看到如下界面,你就可以根据你的需要来提取ipa文件或上传你的应用到App Store上面。

1、生成ipa文件:

点击上图中的“Share…”,可以打包应用或ipa文件。

图中第一个选项为打包成ipa文件,第三个选项为打包成zip文件,点击下一步(Next),会询问你是否签名,当然allow。

Allow了之后,会弹出一个新的对话框,询问你想生成的ipa或zip文件的应用名称,填写了名称和选择了路径之后就会出现,你想要的文件,我们这里是ipa文件。

2、上传应用到App Store:

点击图中的“Submit…”,会要求你输入iTunes Connect的帐号信息,填写正确后就可以按照Application Loader的操作流程提交应用到App Store上面。

通过JSON在Webview和JS之间实现数据交互

遇到一个项目需要展现统计图表功能。

通过网络找到一个很好用的JS开源项目RGraph,可以满足我展现图表的需求。不过遇到了一个小问题,因为该项目除了和服务器端进行数据通信外,并没有应用服务进行提供。

考虑的解决方案就是,在Webview中通过JSON来实现与JS脚本的数据通信,来达到本地动态展现统计图表的功能。

实现思路如下:

首先在页面加载的时候调用Android的Webview类方法:

window.onload = function ()
{
window.demo.clickOnAndroid();
}

在Webview中使用JAVA实现该JS方法:

mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
String jsonText = “{ \”arguments\” : [0,300,500,600,100,200,400,500,700,800,400,100]}”;

mWebView.loadUrl(“javascript:wave(” + jsonText + “);”);
}
});
}
}, “demo”);

然后在JS中实现wave()方法来接收数据并将数据展现在统计图表中,代码如下:

function wave(data) {
var data1=data.arguments;

var line4 = new RGraph.Line(‘line4′, data1,
[500,400,500,700,300,300,500,600,700,800,600,300],
[400,200,400,500,300,300,400,500,400,100,400,300]);
line4.Set(‘chart.key’, ['2008', '2007', '2006']);
line4.Set(‘chart.key.background’, ‘white’);
line4.Set(‘chart.key.shadow’, true);
line4.Set(‘chart.key.shadow.offsetx’, 0);
line4.Set(‘chart.key.shadow.offsety’, 0);
line4.Set(‘chart.key.shadow.blur’, 15);
line4.Set(‘chart.key.shadow.color’, ‘#ccc’);
line4.Set(‘chart.key.rounded’, true);
line4.Set(‘chart.gutter’, 45);

line4.Set(‘chart.filled’, true);
line4.Set(‘chart.tickmarks’, null);
line4.Set(‘chart.background.barcolor1′, ‘white’);
line4.Set(‘chart.background.barcolor2′, ‘white’);
line4.Set(‘chart.background.grid.autofit’, true);
line4.Set(‘chart.title’, ‘A line chart’);
line4.Set(‘chart.colors’, ['rgba(169, 222, 244, 0.7)', 'red', '#ff0']);
line4.Set(‘chart.fillstyle’, ['#daf1fa', '#faa', '#ffa']);
line4.Set(‘chart.labels’, ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
line4.Set(‘chart.text.angle’, 45);
line4.Set(‘chart.yaxispos’, ‘right’);
line4.Set(‘chart.linewidth’, 5);
line4.Set(‘chart.height’, 250);
line4.Draw();

}

html中的代码如下:

<div>
<canvas id=”line4″ width=”320″ height=”680″>[Please wait...]</canvas>
</div>

最终效果如图所示:

其中蓝色线为传入的数据展现。

MySQL don’t start on Mac OS X 10.6.5

尝试在Mac OS X 10.6.5上安装最新版本的MySQL,下载地址为:

http://dev.mysql.com/downloads/mysql/

下载Mac OS X ver. 10.6 (x86, 64-bit), DMG Archive (mysql-5.5.8-osx10.6-x86_64.dmg)这个安装包

按照

- mysql-5.5.8-osx10.6-x86_64.pkg
- MySQLStartupItem.pkg
- MySQL.prefPane

这个顺序安装之后发现服务不能启动,打开Console发现如下错误:

“/usr/local/mysql/support-files/mysql.server: line 256: my_print_defaults: command not found

http://bugs.mysql.com/bug.php?id=53232 和  http://bugs.mysql.com/bug.php?id=55530中找到解决方法,如下:

在终端中输入:

sudo nano /usr/local/mysql/support-files/mysql.server

使用ctrl+w 快捷键开始查找

basedir=.

找到后将这句话改为

basedir=/usr/local/mysql

继续查找

mysqld_pid_file_path=$datadir/`hostname`.pid

找到后改为

mysqld_pid_file_path=$datadir/`/bin/hostname`.pid

之后用ctrl+x保存并退出。

这次启动MySQL Server正常。

今天配置Mac OS X 10.6.5下的Apache环境,输入sudo  apachectl -v时提示

/usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid argument

在网上查找到问题的原因是apachectl脚本造成的

在终端中输入

sudo vi /usr/sbin/apachectl

修改其中的

ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"

ULIMIT_MAX_FILES=""

问题解决。

1、点开开始 –》  运行(R)…”;

2、敲入 mstsc 启动远程桌面


3、点开选项,选择本地资源,点击详细信息

4、勾选上驱动器,确定,之后进行连接,就可以在远程机器中看到本地磁盘,可以随便进行文件的操作了。

Virtualbox的vdi镜像文件使用方法

由于Visualbox创建的vdi镜像文件每个都有uuid。

如果需要在新安装的虚拟机中使用原来的vdi文件,需要使用下面的命令:

VBoxManage internalcommands setvdiuuid “your_back.vdi”

如果需要将已经安装好的vdi导出做备份,需要使用下面的命令:

VBoxManage clonehd ‘your.vdi’

如果clonehd命令无效,可以使用clonevdi

编写自动绑定动态域名的脚本

首先编写脚本文件3322.sh
vi 3322.sh
填写内容为
#!/bin/sh
sudo lynx -mime_header -auth=user:pass “ http://www.3322.org/dyndns/update?system=dyndns&hostname=myhost.3322.org
修改自动启动
vi /etc/crontab
增加如下的一行
0 * * * * root sudo /your/sh/path/3322.sh

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation
{
MKPinAnnotationView *pinView = nil;
if(annotation != mapView.userLocation)
{
static NSString *defaultPinID = @”目的地”;
pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if ( pinView == nil )
pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];

pinView.pinColor = MKPinAnnotationColorPurple;
pinView.canShowCallout = YES;
pinView.animatesDrop = YES;
pinView.draggable=YES;
pinView.selected=YES;
}
else
{
[mapView.userLocation setTitle:@"I am here"];
}

return pinView;
}

获取AM/PM时间格式值的代码

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@”en_US”] autorelease]];
[formatter setDateFormat:@"HH:mm:a"];
NSString *ampm = [[[formatter1 stringFromDate:[NSDate date]] componentsSeparatedByString:@”:”] objectAtIndex:2];

ampm得到的值就是了

Powered by WordPress | Theme: Motion by 85ideas.