移动互联网初创型团队需要什么样的云计算服务?
[ 2013-10-28 15:23 | by 张宴 ]
对于创业型团队来说,服务器托管费用+带宽成费用+运维成本,是压在头上的三座大山。满足业务性能需要,又要降低成本,尽快实现收支平衡,是当务之急。
一、不靠谱的 App Engine
1、Google App Engine 云服务在国外的成功,不代表国内巨头们各种 *AE 仿造品的成功。在微博上搜搜就可以看到小伙伴们吐槽的各种不稳定,另外,*AE们对资源使用最大数各种规定限制,加上为了计费、阉割功能的各种限制,使它的价格优势成为鸡肋。*AE们就好比100M共享带宽的小区宽带,以低价卖给每个上网用户5M的带宽,前几十个用户感觉这网速真不错,等他卖了100个以上用户5M带宽,而这部分用户白天上班去了,晚上下班回来都在上网,其中又有一部分看视频、BT下载,于是乎,白天网速快,晚上慢得要死,连200K带宽都达不到。要知道,不怕神一样的对手,就怕猪一样的队友,在国内的 App Engine 环境下,水平参差不齐的开发者的代码质量、习惯性的资源滥用、别人网站被攻击殃及池鱼对*AE性能的影响,导致*AE的稳定性非常差。
2、所以,*AE们也意识到公共 App Engine 不稳定,所以又推出专用 App Engine,但费用一下就翻了很多倍。所以,*AE只是个人博客、个人开发者玩玩的工具,真正用作项目,还是需谨慎。根据实际的经验,*AE们还真不如VPS稳定。
二、成本低的小而美VPS
1、对于初创团队来说,购买服务器、交换机,托管服务器费用、带宽月使用费,是极其昂贵的。购买可以弹性升级硬件配置的云服务VPS,是降低成本不错的选择。国内VPS,1G内存、1~2核CPU、1M带宽、多线BGP,大概价格在100元/月左右,支持备案,可以作为最低入门选择,有条件可以购买两台互为热备,阿里云主机可以作为参考。大多数VPS服务商使用的都是廉价的SATA磁盘。如果你对磁盘IO要求较高,可以选择提供有SAS磁盘的IAAS云主机服务商,比如UCloud。
2、市场上的VPS商家主要有 Xen、OpenVZ、KVM 三种开源的虚拟化技术。全虚拟化的 Xen 更像独立主机,服务器资源按VPS实际大小平均分配,一般无法超售。半虚拟化的 OpenVZ 在同样的性能测试下,会比 Xen 高一些,但是,一台物理内存16G的服务器,可以分配出总内存大小超过16G很多倍的VPS,服务商可以超售,想卖多少台VPS就可以卖多少台,所以不推荐使用。KVM 在最新的 Linux 发行版中,已经是集成,但是,商业化应用还不成熟,基于 KVM 的 VPS 服务商很少。
3、VPS的操作系统,建议选择64位的Linux。在32位Linux下,PHP能给处理的整数不能超过正负2^31=2147483648,如果以后接入新浪微博、淘宝、腾讯等第三方开放平台,他们的接口里会有超过32位的整数(比如新浪用户ID、淘宝商品ID)。如果不幸使用32位Linux,你只能将这些整数当成字符串处理了,以后配合Sphinx等搜索引擎,会非常麻烦。
4、现在,可以在北京进行备案的域名有:国际域名 .com .net .org,国内域名 .cn .com.cn .中国,国别域名 .cc,其他的域名均不能进行备案。仅北京有限制,其它省市正常提交备案即可。我们原来申请的 .me 域名,在北京无法备案,后来只好拿到苏州去备案了。所以,在选择域名的时候,需要慎重。
5、使用 VPS,一定要定期在本地,做好数据备份,不要相信所谓的 7*24服务,99.99%安全稳定性,只要有人的VPS出问题了,都归为那 0.01%。
三、应对峰值带宽的云存储
1、对于DAU(日活跃用户)过十万的网站、APP应用来说,CDN或云存储是必需品。使用云存储不是因为存储空间,因为一块几TB的SATA磁盘很便宜,使用云存储是因为高出平均带宽值几倍至几十倍的峰值带宽。做手机APP应用,峰值带宽更集中,当你向所有用户群发PUSH一条消息,用户被唤醒打开APP应用,几分钟的时间,会消耗几十倍的带宽峰值。图片、下载,是最主要的带宽消耗者。也许,数据接口API只需不到1M的带宽,而图片对带宽的峰值需求则会达到100M。为了几分钟的峰值,去购买100M昂贵的带宽,其他时间带宽都空闲,是一件非常奢侈的事。
2、国内提供云存储服务的商家有很多,真正好用得却不多,提供FTP等公共通用协议的云存储更是微乎其微。使用第三方云服务,切忌千万不要吊死在一棵树上。支持FTP等公共协议,如果将来有问题,能够方便的进行数据迁移和技术替代。如果云服务厂商一直能够提供优质的服务,那么,也就可以长期使用他们的云服务。相信优秀的云存储提供商,是不会惧怕这一点的。
一、不靠谱的 App Engine
1、Google App Engine 云服务在国外的成功,不代表国内巨头们各种 *AE 仿造品的成功。在微博上搜搜就可以看到小伙伴们吐槽的各种不稳定,另外,*AE们对资源使用最大数各种规定限制,加上为了计费、阉割功能的各种限制,使它的价格优势成为鸡肋。*AE们就好比100M共享带宽的小区宽带,以低价卖给每个上网用户5M的带宽,前几十个用户感觉这网速真不错,等他卖了100个以上用户5M带宽,而这部分用户白天上班去了,晚上下班回来都在上网,其中又有一部分看视频、BT下载,于是乎,白天网速快,晚上慢得要死,连200K带宽都达不到。要知道,不怕神一样的对手,就怕猪一样的队友,在国内的 App Engine 环境下,水平参差不齐的开发者的代码质量、习惯性的资源滥用、别人网站被攻击殃及池鱼对*AE性能的影响,导致*AE的稳定性非常差。
2、所以,*AE们也意识到公共 App Engine 不稳定,所以又推出专用 App Engine,但费用一下就翻了很多倍。所以,*AE只是个人博客、个人开发者玩玩的工具,真正用作项目,还是需谨慎。根据实际的经验,*AE们还真不如VPS稳定。
二、成本低的小而美VPS
1、对于初创团队来说,购买服务器、交换机,托管服务器费用、带宽月使用费,是极其昂贵的。购买可以弹性升级硬件配置的云服务VPS,是降低成本不错的选择。国内VPS,1G内存、1~2核CPU、1M带宽、多线BGP,大概价格在100元/月左右,支持备案,可以作为最低入门选择,有条件可以购买两台互为热备,阿里云主机可以作为参考。大多数VPS服务商使用的都是廉价的SATA磁盘。如果你对磁盘IO要求较高,可以选择提供有SAS磁盘的IAAS云主机服务商,比如UCloud。
2、市场上的VPS商家主要有 Xen、OpenVZ、KVM 三种开源的虚拟化技术。全虚拟化的 Xen 更像独立主机,服务器资源按VPS实际大小平均分配,一般无法超售。半虚拟化的 OpenVZ 在同样的性能测试下,会比 Xen 高一些,但是,一台物理内存16G的服务器,可以分配出总内存大小超过16G很多倍的VPS,服务商可以超售,想卖多少台VPS就可以卖多少台,所以不推荐使用。KVM 在最新的 Linux 发行版中,已经是集成,但是,商业化应用还不成熟,基于 KVM 的 VPS 服务商很少。
3、VPS的操作系统,建议选择64位的Linux。在32位Linux下,PHP能给处理的整数不能超过正负2^31=2147483648,如果以后接入新浪微博、淘宝、腾讯等第三方开放平台,他们的接口里会有超过32位的整数(比如新浪用户ID、淘宝商品ID)。如果不幸使用32位Linux,你只能将这些整数当成字符串处理了,以后配合Sphinx等搜索引擎,会非常麻烦。
4、现在,可以在北京进行备案的域名有:国际域名 .com .net .org,国内域名 .cn .com.cn .中国,国别域名 .cc,其他的域名均不能进行备案。仅北京有限制,其它省市正常提交备案即可。我们原来申请的 .me 域名,在北京无法备案,后来只好拿到苏州去备案了。所以,在选择域名的时候,需要慎重。
5、使用 VPS,一定要定期在本地,做好数据备份,不要相信所谓的 7*24服务,99.99%安全稳定性,只要有人的VPS出问题了,都归为那 0.01%。
三、应对峰值带宽的云存储
1、对于DAU(日活跃用户)过十万的网站、APP应用来说,CDN或云存储是必需品。使用云存储不是因为存储空间,因为一块几TB的SATA磁盘很便宜,使用云存储是因为高出平均带宽值几倍至几十倍的峰值带宽。做手机APP应用,峰值带宽更集中,当你向所有用户群发PUSH一条消息,用户被唤醒打开APP应用,几分钟的时间,会消耗几十倍的带宽峰值。图片、下载,是最主要的带宽消耗者。也许,数据接口API只需不到1M的带宽,而图片对带宽的峰值需求则会达到100M。为了几分钟的峰值,去购买100M昂贵的带宽,其他时间带宽都空闲,是一件非常奢侈的事。
2、国内提供云存储服务的商家有很多,真正好用得却不多,提供FTP等公共通用协议的云存储更是微乎其微。使用第三方云服务,切忌千万不要吊死在一棵树上。支持FTP等公共协议,如果将来有问题,能够方便的进行数据迁移和技术替代。如果云服务厂商一直能够提供优质的服务,那么,也就可以长期使用他们的云服务。相信优秀的云存储提供商,是不会惧怕这一点的。
ASIHTTPRequest 类库在 iOS 7.0 中需要修改的地方
[ 2013-10-6 13:34 | by 张宴 ]
ASIHTTPRequest 类库在iOS 7.0中,会有一些报错警告,需要稍作修改:
1、
修改成:
2、
修改成:
1、
if ([inputStream streamStatus] == NSStreamEventErrorOccurred) {
修改成:
if ([inputStream streamStatus] == (NSStreamStatus)NSStreamEventErrorOccurred) {
2、
return [[NSDate date] addTimeInterval:maxAge];
修改成:
return [[NSDate date] dateByAddingTimeInterval:maxAge];
手机电商APP的智能化设计
[ 2013-5-21 13:11 | by 张宴 ]
5月17日,我在苏州工业园区“2013首届金鸡湖云产业高峰论坛”上的演讲PPT:《手机电商APP的智能化设计》下载。
http://pan.baidu.com/share/link?shareid=560014&uk=3946315320&third=2
iOS XCode 多人共享开发 SVN 配置需要做的小设置
[ 2012-12-13 13:04 | by 张宴 ]
UserInterfaceState.xcuserstate 文件频繁更新,*.a等静态链接库文件默认不被添加到 SVN 中,需要对自己 Mac OS 上的 SVN 客户端配置做一下修改。
进入终端:
查找 [miscellany] 字段
在默认被注释的 global-ignores 下一行,增加一行:
进入终端:
vi ~/.subversion/config
查找 [miscellany] 字段
在默认被注释的 global-ignores 下一行,增加一行:
global-ignores = *~ #*# .#* .*.swp .DS_Store .xcuserstate
禁用 UIWebView 里面的链接长按弹出效果
[ 2012-9-24 19:14 | by 张宴 ]
苹果一直拒绝 UIWebView 内嵌 HTML5 页面的 iPhone、iPad APP应用上架到 App Store,建议这样的APP去做成Safari的Web应用。但是,苹果的审核人员只从界面、URL去判断是否HTML5的。有一次,一个 APP应用的URL地址被他们拷贝出来,放到浏览器中能够访问,然后,应用悲催地被拒绝上架了。
对付方法:
1、URL不让直接通过浏览器访问(UIWebView的请求Header头中加点东西,在服务器端将APP内嵌的访问和通过直接浏览器访问区分开来),或者通过浏览器访问时,返回JSON、XML信息,输出“Interface Error”,忽悠苹果审核人员说这是HTTP协议的接口,不是网页。
2、禁用、禁止 UIWebView 里面的链接长按弹出效果。加入一行 CSS 代码,禁用类似下图的链接长按弹出效果:
对付方法:
1、URL不让直接通过浏览器访问(UIWebView的请求Header头中加点东西,在服务器端将APP内嵌的访问和通过直接浏览器访问区分开来),或者通过浏览器访问时,返回JSON、XML信息,输出“Interface Error”,忽悠苹果审核人员说这是HTTP协议的接口,不是网页。
2、禁用、禁止 UIWebView 里面的链接长按弹出效果。加入一行 CSS 代码,禁用类似下图的链接长按弹出效果:
html,body{-webkit-touch-callout: none;}
一些数据:移动iPhone用户超联通两倍,Android用户小米手机占有率第一
[ 2012-2-23 13:24 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2012.02.23 转载请注明原文链接:http://blog.zyan.cc/android_ios_status/]
上周,我们发布了一款支持 Android 和 iOS 平台手机应用。本周,又发布了另一款手机应用的 iOS 版本。纵贯两款应用的统计数据,发现有两点出乎我的意料。
1、iOS 应用状况:移动iPhone用户超联通两倍,WIFI 联网方式接近 75%
我曾经一直以为在 iPhone 4/4S 用户中,中国联通的用户要比中国移动多,毕竟联通是苹果合作伙伴,联通卡是3G网络,而移动卡的国产TD-SCDMA iPhone不支持,只能使用2G网络。但经过最近一星期发布的两款手机应用(均有 iOS、Android 版本)的统计数据发现,iPhone 里插着中国移动2G卡的用户比中国联通3G用户多两倍。因此,将来针对移动互联网 IDC 机房的选择与优化,也需要偏向中国移动网络。
2、Android 应用状况:小米手机占有率领先,WIFI 联网方式超过 80%
Android 用户移动远超联通,在预料之中。但是,没有想到,在这么多不同型号的 Android 手机中,小米手机 MI-ONE Plus 的占有量竟然能够位居第一,而三星 GT-I9100 紧跟其后。
上周,我们发布了一款支持 Android 和 iOS 平台手机应用。本周,又发布了另一款手机应用的 iOS 版本。纵贯两款应用的统计数据,发现有两点出乎我的意料。
1、iOS 应用状况:移动iPhone用户超联通两倍,WIFI 联网方式接近 75%
我曾经一直以为在 iPhone 4/4S 用户中,中国联通的用户要比中国移动多,毕竟联通是苹果合作伙伴,联通卡是3G网络,而移动卡的国产TD-SCDMA iPhone不支持,只能使用2G网络。但经过最近一星期发布的两款手机应用(均有 iOS、Android 版本)的统计数据发现,iPhone 里插着中国移动2G卡的用户比中国联通3G用户多两倍。因此,将来针对移动互联网 IDC 机房的选择与优化,也需要偏向中国移动网络。
2、Android 应用状况:小米手机占有率领先,WIFI 联网方式超过 80%
Android 用户移动远超联通,在预料之中。但是,没有想到,在这么多不同型号的 Android 手机中,小米手机 MI-ONE Plus 的占有量竟然能够位居第一,而三星 GT-I9100 紧跟其后。
越狱的 iPhone、iPad 通过网站实现一键安装 ipa 格式的 APP 应用
[ 2012-2-13 13:50 | by 张宴 ]
1、已经越狱的 iPhone、iPad 设备,当通过其自带的 safari 浏览器访问 ipa 应用下载网站时,利用 itms-services 协议,可以一键安装 ipa 文件的 iOS 应用,例如:
2、jhsmyt.plist 的内容如下:
blog.zyan.cc/demo/ios/jhsmyt.plist
需要修改之处:
3、如果通过 iPhone、iPad 上的二维码扫描软件,还可以实现类似 Android 系统的扫描二维码下载 app 应用:
二维码内的网址地址为 http://blog.zyan.cc/demo/ios/autodown.htm 内容如下:
4、完整的 Demo 示例:
http://blog.zyan.cc/demo/ios/
<a href="itms-services://?action=download-manifest&url=http://blog.zyan.cc/demo/ios/jhsmyt.plist">通过越狱的iOS设备浏览器访问本页,点这儿一键安装APP应用。</a>
2、jhsmyt.plist 的内容如下:
blog.zyan.cc/demo/ios/jhsmyt.plist
需要修改之处:
3、如果通过 iPhone、iPad 上的二维码扫描软件,还可以实现类似 Android 系统的扫描二维码下载 app 应用:
二维码内的网址地址为 http://blog.zyan.cc/demo/ios/autodown.htm 内容如下:
4、完整的 Demo 示例:
http://blog.zyan.cc/demo/ios/
APK 变成 ZIP:Android 手机应用程序文件下载服务器需要注意的问题
[ 2011-1-20 09:00 | by 张宴 ]
[文章作者:张宴 本文版本:v1.0 最后修改:2010.01.20 转载请注明原文链接:http://blog.zyan.cc/android_apk_zip]
前天,金山网络的一位同事向我咨询了一个问题:很多用户反映,网站上提供的Android手机应用程序文件“xxx.apk”,用IE浏览器下载,扩展名就被自动被重命名成了“xxx.zip”,拷贝到手机上无法安装。我发现,由于APK文件本身就是压缩包,如果用户的电脑上装了WinRAR(85%的装机量),用IE下载APK文件,扩展名就会被自动改为“.zip”。
如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可:
截至本文发布时,存在“xxx.apk”下载时被自动重命名为“xxx.zip”问题的网站很多,其中不乏一些提供 Android 程序下载的知名网站,例如:新浪微博、街旁网。
新浪微博官方 Android 手机客户端下载页:http://t.sina.com.cn/mobile/android.php
街旁 Android 版客户端下载页:http://we.jiepang.com/client-android/
前天,金山网络的一位同事向我咨询了一个问题:很多用户反映,网站上提供的Android手机应用程序文件“xxx.apk”,用IE浏览器下载,扩展名就被自动被重命名成了“xxx.zip”,拷贝到手机上无法安装。我发现,由于APK文件本身就是压缩包,如果用户的电脑上装了WinRAR(85%的装机量),用IE下载APK文件,扩展名就会被自动改为“.zip”。
如果你的下载服务器为Nginx服务器,那么,在Nginx安装目录下的conf/mime.types文件的对应位置,加上以下一行语句,指定APK文件的MIME类型为 application/vnd.android.package-archive 即可:
application/vnd.android.package-archive apk;
截至本文发布时,存在“xxx.apk”下载时被自动重命名为“xxx.zip”问题的网站很多,其中不乏一些提供 Android 程序下载的知名网站,例如:新浪微博、街旁网。
新浪微博官方 Android 手机客户端下载页:http://t.sina.com.cn/mobile/android.php
街旁 Android 版客户端下载页:http://we.jiepang.com/client-android/