存档

‘编程’ 分类的存档

ios5与ios6的屏幕旋转的差异

2013年5月3日 没有评论

ios5和6在屏幕的选择方面做了不少的修改。主要是取消了几个api的函数。
– didAnimateFirstHalfOfRotationToInterfaceOrientation: Deprecated in iOS 5.0
– willAnimateFirstHalfOfRotationToInterfaceOrientation:duration: Deprecated in iOS 5.0
– willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration: Deprecated in iOS 5.0

– shouldAutorotateToInterfaceOrientation: Deprecated in iOS 6.0
剩余:
– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:
剩余这几个函数。平时的项目一般用系统旋转后自动对齐功能,大部分都可以满足需求。这次修改一个项目,tableview在旋转后cell需要加载不同的xib文件,于是重载didRotateFromInterfaceOrientation,不过发现系统并没有调用这个函数。想了一下,估计是tableviewController并不是rootviewControlller。而且是放在其他第三方的ViewController内,估计是第三方ViewController没有使用addChildViewController把tableViewController放入其子controller。查看了一下代码。发现估计是正确的。但是不太想修改这个第三方的ViewController。因为嵌套了2个第三方的ViewController,要修改起来会比较麻烦。
想了想使用注册旋转事件来处理这个需求。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) 
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
 
- (void)didRotate:(NSNotification *)notification
{
 
NSLog(@"didRotate:。---interFaceOrientation:%d,DeviceOrientation:%d",
        self.interfaceOrientation,[[UIDevice currentDevice] orientation]);
//[self.tableView reloadData];
}

阅读全文…

Bookmark and Share
分类: IT, 编程 标签: , , , , ,

准备研究node.js

2013年4月3日 没有评论

node.js—使用javascript开发后台程序,这东西一直对它都有误解,我一路都以为它是给前端的朋友玩玩后台的玩具。

直到早几天看到一个报道《LinkedIn从Rails迁移到Node:服务器减少27台,速度提升了20倍》(注:由30台减少到3台),才开始去认真了解node.js这个新玩意。发觉这个玩具非常强大。

对node.js的误解可能是由于一些对这个node.js的介绍都是介绍它是一个使用javascript的开发后台的解析器。其实node.js是一个基于事件驱动开发的服务器组件,,javascript只不过是这个组件的粘合剂。node.js是一种开发模式,是一种编程思想。其实它不一定选择javascript作为开发语言,可以选择lua,或者一种全新的语言。据说作者初期做的时候选择过使用lua的,不过速度不是很理想。选择javascript主要是因为google的javascript V8引擎速度超快,再加上javascript的闭包特性比较适合这种事件驱动开发模式和面向过程的语言。

现在讲讲我为什么对node.js有一种强烈的愿望去研究它。

1、node.js开发的产品吞吐量大,符合现在一些高并发的需求。而且比较方便扩展到分布式的应用。

2、我比较喜欢这种事件驱动模型的编程方式,以前搞tcp通信程序的时候我都是选择这种事件驱动方式去处理。虽然这种异步编程的复杂度比同步编程方式复杂些,但是这种复杂度比起多线程同步的处理还是方便很多。出错机会小很多,特别死锁这些情况很难在开发的时候发现的问题。

3、虽然我个人很喜欢c语言,但是使用c语言开发成本实在太贵了。加上有时候开发一些应用服务使用c语言也不合适。我觉得c比较适合在底层通信和网络通信部分用c是一个好选择,其它开发还是别用c比较好。node.js就是使用c来开发最底层的东西,例如:tcp通信通信。其余用脚本来处理。这样可以大大降低开发成本,需要速度快的地方可以用c/c++来来处理。既有开发速度又有运行速度。

4、我希望在我一个项目中编写一个爬虫服务。使用node.js可以方便地嵌入jquery。jquery的选择器对于爬虫服务抽取数据非常方便。不过目前发现node.js的html分析器都是直接用javascript编写的。可能性能不是特别好。希望可以把webkit的dom解析器嵌入node.js就强了,还可以适应一些不太标准的网页,例如一些闭合标签不完整的网页。

5、研究node.js的源码,希望将来可以参照它,把V8 javascript引擎引入在IOS开发中,提高一些ios程序的灵活性。虽然现在一些游戏框架使用lua来实现。不过我感觉用javascript实现会比Lua好。

6、还有一点,node.js比较简洁,轻量级结构。核心只包含最基本的库。其他通过插件扩充。这样学习成本比较底,同时拥有超强的扩充能力。

这里提一提Erlang,这个语言同样是一个面向高并发,和面向过程的语言。去年这个时候也花费了一些时间学习了。不过现在已经忘记七七八八了,只是记得它的编程思想,方式,方法。语法那些都忘记了。加上Erlang这个语言加上OTP的组件过于庞大。需要化好多时间才可以深入。不过它比起node.js的确强很多。但是node.js简单得多了。非常符合make it sample的原则。

Bookmark and Share
分类: 编程 标签: , , ,

发布一个ios的组件,4格菜单

2013年4月2日 没有评论

最近下载了一个应用“布丁电影”,发觉它的菜单效果好好睇。于是就仿造了一个。操作上也改造了一下,区别不大。

代码托管在GitHub上,欢迎大家下载使用。

支持IOS6.X IOS5.X , xcode  4.6,使用ARC。

Bookmark and Share
分类: IT, 编程 标签: ,

庆祝第一个App上线App shop

2013年2月4日 没有评论

第一个App Goflytoday 终于上线app shop了。非常开心。因为第一次,而且是一次审核通过。这个app主要是搜索东南亚一些航空公司的机票搜索对比软件。目前只支持四家航空公司。

airasia
jetstar
tigerairways
cebupacificair

目前这个软件的界面比较丑陋,还需要进行改进。下载地址:http://t.cn/zYyHJqQ

barcode

阅读全文…

Bookmark and Share
分类: IT, 编程 标签: , ,

升级xcode4.5真机调试杯具了!!!

2012年9月30日 2 条评论

昨天更新了xcode4.5,不过杯具发生了。居然不能链接真机调试。
提示信息如下:
Xcode cannot run using the selected device.

Choose a destination with a supported architecture in order to run on this device.

1、怀疑证书有问题。不过检查了很久都没有发现。

2、开始怀疑ios的版本问题。真机的ios版本是ios5.1。xcode4.5是给最新版本的ios6的。不过感觉也不对,以前的xcode版本会提示xcode不支持你现有设备的版本。建议你下载这个版本的ios debug包。但是这次并没有这个提示。
我又用一台4.1版本的设备链接到xcode。这次就提示xcode只支持ios 4.3、5.0、5.1、6.0这几个版本。这次排除了设备的ios版本问题。
这时候只能求助万能的google了。发现解决方案了。http://stackoverflow.com/questions/11673424/xcode-4-4-unable-to-run-project

原来是xcode4.5现在只支持ARM7指令的编译。现有项目设置是同时支持ARM6和ARM7编译。把项目编译选择成只支持ARM7就可以真机调试了。根据帖子讲,xcode4.5编译出来的程序只能运行在ios4.3以上的系统。如果想兼容旧有版本的话需要使用旧版本的xcode编译。(可能还有另外的解决方案,暂时没有去研究)

Bookmark and Share
分类: 编程 标签: , , , ,

Hg代码管理转换Git代码管理-方便xcode使用Git

2012年9月27日 1 条评论

最近搞iphone开发,iphone开发使用xcode是好必然的。虽然有其他开发工具,例如appcode。不过我觉得还是原生的xcode比较好。特别是查看帮助的时候非常方便。加上appcode这个工具是java开发的。运行速度不乐观。还有些开发者是vim+插件,我就真的不想折腾vim+插件。所以我老老实实用xcode。

xcode在在代码管理方面集成了svn和git的。svn现在来算已经是老古董了。所以使用git是必然的。不过公司使用的居然是Hg代码管理。这就真的难为了xcode了。由于xcode不支持Hg。虽然可以用其他图像化Hg软件来进行管理,例如SourceTree(支持Git和Hg)、MacHg。在代码对比与版本对比都没有使用xcode那样直观方便,可以边对比边修改开发。在xcode哪里非常方便查找出某一段代码是什么时候添加上去的。由谁添加的。当时代码提交的注释都会详细显示出来。这个功能非常实用。

现在需要把hg的代码库转换成git的代码库。

转换方式有:

1、一次性转换。把hg的代码库转成git的代码库。以后都用git代码库。

大家可用hg-fast-export 脚本

$ git clone git://repo.or.cz/fast-export.git

不过这个对于我来说不是一个好方面,因为你不能够要求公司以后都改用Git来管理。

2、使用插件把Hg转换成git。服务端为Hg,客户端数据为git的。

找了一下,发觉有一个比较有名的插件Hg-Git mercurial plugin。 不过是服务端是Git,客户端是Hg。与我的需求相反的。虽然在github.com上有几个Git-Hg的插件。当时看了一下说明好像都是在Hg-Git上修改的。而且都是只读单向的。即可以从Hg服务器上clone成Git的代码库,还可以pull新的更新。当是客户端的git代码库有文件修改后是不能push上Hg服务器的。

有点杯具啊。不过我认真研究Hg-Git后。发觉他可以把一个现有的hg项目推送一个空的Git服务。这样又出现一个新希望了。上网再搜索了一下,果然有人和我的想法有点相同。大家请点这里, 我的应用可能比他再复杂一点。

阅读全文…

Bookmark and Share
分类: 编程 标签: , , , ,

我所写的wordpress插件都上存到wordpress.org

2011年12月8日 没有评论

我终于把我所写的wordpress的插件全部都上存到wordpress.org了。我一共制作了4个插件。

我写的插件大家可以在http://wordpress.org/extend/plugins/profile/daozhao下载我写的插件。

Dynamic template field display.

这个插件是我第一个练手的wordpress插件,功能简单。你可以添加多个模板,在编辑文章的时候插入模板,在可视化编写器中集成了插入菜单按钮。在文章或者页面显示的时候会根据模板的设定替换成你需要显示的内容。你可以随时更改模板的内容,而文章的中的模板也会动态修改成你需要显示的内容。

flickr picture backup

该插件主要是对wordpress文章中有外连接到flickr的图片进行备份。以防止flickr停止服务或者更改服务协议,例如禁止外连的时候,可以把wordpress上的文章中的flickr图片链接更改为本地连接。

Geo lightbox

图片已lightbox形式显示,并可以在地图显示拍摄位置(需要有地理信息)。

Add flickr photo with geo tag

这个插件是基于Flickr Photo Album plugin修改的。主要为了配合geo-lightbox使用,插入图片时候顺便把地理信息一并插入其中。

 

dynamic template field display和flickr picture backup我2年前已经发布到wordpress上了。另外两个geo-lightbox和add-flickr-photo-with-geo-tag这两个插件最近才发布到wordpress.org上,主要因为这两插件不是我100%原创的。所以一路都不太好意思发布上wordpress上。不过最近整理资料的时候,想想还是把它们发布吧,开源精神是公开源代码给大家学习和进一步修改。geo-lightbox发布没有几天就过百的下载量了。

Bookmark and Share
分类: IT, 编程 标签: , , , ,

Google App Engine(GAE)真的TMD它,再不免费了。

2011年11月13日 没有评论

Google App Engine(GAE)其实我已经使用了差不多2年多了。我一直都是使用免费账户。因为我的应用非常简单,而且也没有对外用户,只是帮助自己定时搜索和统计一些网络数据。使用免费账户还有很多的余量。在上个月已经知道google修改收费标准,而且已经有写bloger反应google这次比较坑爹的。当时自己也没有想太多,想想就是减少配额也应该不会影响到我的。因为我原来也只是用到免费配额的20%左右。应该不关我事。也么有去查看google新的配额说明

直到上星期google正是实施新的配额制度之后,我发觉我放在GAE上的应用彻底down了。开始我还以为程序是否出问题,或者没有升级到最新的GAE版本。后来检查了一遍。并没有发现问题。我就开始怀疑新的配额制度。于是登录GAE Dashboard页面,一看配额情况,数据库读写配额已经100% over了。马上去查看新的配额制度,泪奔啊!!!真的缩减了很多很多。网上搜索了,叫苦的真的非常非常多,不是一般的多。有些用户使用mircoBlog把博客安家在GAE上的用户,就是没有访客浏览自己的blog,就是应付来自各大搜索引擎的蜘蛛已经把配额用完了,免费配额基本上只能用于自我测试使用。普遍用户都在臭骂google。这次收费升级,在数据库的读写配额上升幅最大,而且收费最贵。

我在一年前曾经想把这个blog移植到GAE上,想把空间租用费省下来。不过后来没有太多时间去移植,所以完成。现在真的万幸当初没有这样做,否则今天你也不会看到这个blog了。我在这里也要骂一骂google这次的行为。虽然企业是要赚钱的,但是也要对客户要有个交代。价格升幅不能太大。而且起码提前1年通知。现在升幅大,又只是提前1-2个月通知。如果在GAE上跑正式业务的用户基本上只能乖乖交钱,要不然就停止业务。因为把程序迁移到一个新的平台并不是那么的简单。

google的不作恶的口号去了那?先用免费或者低廉的费用吸引你把平台建设在他们的服务器上。当年离不开他的平台的时候,他会同你讲把你的荷包打开,我要把你的钱全部拿走。乔布斯曾经对google的“不作恶”口号的评价是:“放屁”。看来乔布斯看事情看得非常透切。google最近把好多服务都升级了,我说的是服务收费升级了。很多服务的免费配额都调低了,收费调高了。据我所知道还有google map API,企业邮箱等。以后大家做开发的时候选择一些google的服务时候就要额外留神。要做好随时转换其他平台的准备。要不然就会出问题。以前我太崇拜google了,我经常推荐别人使用google的服务,原因是好用且免费。现在我会叫大家三思阿。大家也要注意这个问题。感觉就像早段时间淘宝商城的升价问题一样,先低价吸引你进入,再掉高价格来卖。

现在大家都比较推崇云服务,我开始也觉得云服务是非常好的一个服务。因为初期投入不会太大,可以随时扩充缩小。非常适合一些小型企业。现在大家选择云平台的时候一定要考虑移植性的问题。可以随时逃亡,或者在两个云平台同时运行,可以随时切换。

Bookmark and Share
分类: IT, 编程 标签: , ,

Google App Engine试用与感受

2010年5月27日 没有评论

google app engine是目前google的云应用中的最高级别的猛将。这两个星期试用了一下这个App engine。App engine是用来构建网络应用程序,例如你可以在上边开发一个blog程序,然后托管在google app engine上边,你不用再找主机托管商了,你可以使用免费版本,免费版本基本上有足够的配额给一般用户使用。当用户量增加后,你不用担心服务器的扩展。google会帮你做好一切,当然这样你需要给点钱。目前免费账号的程序可以使用可使用多达 500 MB 的存储空间和多达每月 500 万的页面浏览量(官方介绍资料)。一般用户可以用来做独立blog,有朋友已经写好了一个在app engine上运行的blog程序了– Micolog

目前app可以使用的语言有java和python。我无需思考就选择了python来做试验。因为我讨厌java。虽然我不会python,但是学习起来一点困难都没有。脚本语言不用关心内存管理。(在这里pk下java的内存管理,号称不用关心内存泄漏问题,但是实际上到处都是陷阱)。

这里讲讲App Engine需要注意的问题。开发环境一定要安装google所讲的python进行配置。不要使用python.26。需要下载新版本的App engine。我就在这个环境配置中吃了苦头。因为很久以前已经安装过App engine就旧版本。所在这次试用的时候就没有再安装新版本,发觉有些教程上边的程序不能运行,升级了app engine就可以了。

还有就注意是python的的环境。由于发布程序上服务器需要ssl认证,需要为python 2.5的环境安装ssl模块(http://pypi.python.org/pypi/ssl),安装编译ssl模块需要安装mingw32进行编译,并需要下边两个库。

libgw32c-0.4-lib.zip(http://nchc.dl.sourceforge.net/project/gnuwin32/libgw32c/0.4/libgw32c-0.4-lib.zip)
openssl-0.9.8h-1-lib.zip(http://gnuwin32.sourceforge.net/packages/openssl.htm)

另外要注意的是你的python环境是完全安装的版本,我开始使用的python版本是安装别的软件时候带的python2.5。结果这个python包并没有带编译模块的头文件。折腾了我一个早上的时间。不过我发觉app engine 1.3.3的版本在没有ssl的情况下也可以发布程序上服务器,不过没有了加密,很容易把你google的账号密码泄露出去了。

试用的时候发觉app engine的GQL的限制挺多的。使用上并没有sql那么变化多端的查询方式。有一定的局限性。

使用的时候要注意数据的索引(index.yaml),我在测试的时候开始没有注意索引这个东西,发现一些查询在本机上的测试环境上运行的时候ok的。但是当上载到服务器就运行失败。提示索引有问题。原来我试验的时候使用了google的demo程序guestbook。在原有的index.yaml文件中有些旧的数据索引,但是在我的新程序中并没有这些数据,导致上传index.yaml文件的时候失败。后来把这些数据删除了就可以了。其实只要你创建index.yaml文件,并插入下边内容。

indexes:
# AUTOGENERATED

基本上你不用关心文件还需要填写那些内容。在本机测试环境中index.yaml文件的内容可以根据你的程序中的查询语句自动生成的。上传到服务器的时候需要把这个index.yaml文件发布到服务器。

如果服务器你本身有数据,当你上传新的index.yaml文件的时候,服务器需要一段时间重新编制索引,需要等待索引编制完毕后你才可以测试与该索引相关的程序。

Bookmark and Share
分类: IT, 编程 标签: , , ,

jqtouch使用和bug

2010年1月6日 2 条评论

发现了一个非常好的jQuery插件jQTouch。这个插件是帮助你方便开发iphone上的浏览器上的web程序。使它的操作像原生的Iphone程序有良好的界面和操作交互。

我使用了他帮朋友搞左个应用,你可以使用iphone或者ipod touch访问 http://www.goflytoday.com 就可以访问到该应用了。如果你没有iphone的话,可以使用Apple Safari浏览器去访问这个网址体验一下效果,其效果基本和iphone差不多,只是有小许细节不一样(google android的手机都可以,我用hero试过,速度比较慢)。其他浏览器就不行。

我使用的是jqtouch-1.0-beta-2-r109.zip这个版本。发现有一个bug。这个bug主要表现是当列表跳转的链接为空的时候,用户点击该链接的时候,连接会成另外一种状态后不会自动恢复原来的状态。
阅读全文…

Bookmark and Share
分类: IT, 编程 标签: , , ,