给还没有玩过VPS的推荐几个还算不错的OFFER

推荐还算不错的OFFER

123systems ovz   4.5$  128M 500GBW 10G HD 2xCpu(这并不重要) 入门型练手.  谁也没想到黑五之后更有优惠.

输入优惠码. CYBERMONDAY2015  9$ > 4.5$ 还不错吧. 别忘了用优惠码

step1注册账号: https://123systems.net/billing/aff.php?aff=949

step2隐藏入口: https://123systems.net/billing/cart.php?a=add&pid=101

123system_offer_cyber

vpscheap : ovz  实惠型梯子专用. 10 $

https://crm.vpscheap.net/cart.php?a=add&pid=206

 

igniteservers 12$  然是KVM 的. 稳定型. 750G BW 1xCPU  30G HD 还可以玩WP NODEJS之类的.

已经无货了.

step1注册账号:  https://bandwagonhost.com/aff.php?aff=28 还有15个坑.

step2隐藏入口: https://igniteservers.com/client/cart.php?a=add&pid=228

推荐动手能力强的同学试试. paypal支付就可以.

Read More

SPECIAL OFFER! .COM just $1.49*! support transfer.

cjcrmn149s  is the coupons code.  i just used it.  2014 is over.  the is the best godaddy coupon code dec 2014.

“Plus ICANN fee of $0.18 per domain name per year. $1.49 price good for the first year of one new or transfer .COM per customer. Additional years or .COMs may be purchased for $9.99 per year. Discounts cannot be used in conjunction with any other offer or promotion. Not all payment methods valid with this offer, acceptable payments will display in cart at checkout. Your discount will be applied in your shopping cart. After the initial purchase term, discounted products will renew at the then-current renewal rate. Go Daddy reserves the right to deny use of this offer and/or cancel domains purchased using this offer if the offer is abused or used fraudulently, as determined by Go Daddy in its sole discretion. ”

special tips,

you should change the money to USD$. instead of CNY.

you should use  a valid us billing address.

if so, you can transfer your .com to godaddy . if you just want to renewal your domain.  take it way to save a little money.!

Did you know that GoDaddy just released their NEW Website Builder? It’s easier to use, has hundreds of new designs, and you get a free domain with each annual plan. All for just $1.00/mo! Use my referral code WOWCNSOFT at checkout to get 35%* off anything else you buy and I’ll earn store credit!

Screen Shot 2014-12-29 at 11.14.28 PM

Read More

Give away for Christmas! Free VPN Account . Get free gift from Super Bombe Crush!

Super Bombe Crush Lite is a light action game. Use joystick to control your hero , place bombe , kill monster ,destroy game object. collect stars.find the teleport door. Loot gold coin. gain high score ,challenge yourself.

  1. 20+ funny levels.
  2. Fantasy 3d particle system.
  3. Real 3D game world.
  4. Various game item.

iPad Version is ready for sale.  Universal version will be released soon!  Beta players invitation is going.  send mail to : super.bomber.crush@gmail.com.

As beta player, you can free gold,  play game new feature earlier.  e.g: online feature . !

//Check The GamePlay Video ?

 

 

 

The Rule:

1. Download SuperBombeCrush from iTunes.  playing for a while.    +5%  chance    Apple Store

2. Write your experience. feeling. advice.  if you can write review directly, you will get 20% chance.

3. Comment here. and  mail to   super.bomber.crush@gmail.com .

4. On Christmas Holiday,  we will send rewards . show result here.   of course, we will random choice from the user list.  so , hurry do it!

The V P N account will be sent to you, and you can use it  watch You Tube . Facebook, Twitter.  you know it.!!!

2014-12-08. Game Start!!!

Read More

使用TexturePacker 制作动画的贴图 导出在 SpriteKit 中使用.SpriteKit Animations and TextureAtlasses,Use TexturePacker.

作为经常使用的工具, TexturePacker的确是很方便的打包贴图的工具. 打包可以减少DrawCall次数.对于提升性能有很大作用.而且作者很友好,如果是开发阶段使用, 可以申请免费的授权. 当然,如果产品赚了钱都应该买一份正版.SpriteKit是ios7新的特性,为2D游戏开发而做, TexturePacker也推出了一个示范的实现,整合在一起. 工具化,制作流程规范化是趋势. 你out了么.

ios7 SpriteKit 开发者指南. http://upyun.cocimg.com/cocoachina/SpriteKit_PG.pdf

TexturePacker 下载: http://www.codeandweb.com/texturepacker/download

支持的真多啊: Cocos2d SpriteKit Corona SDK Starling Unity3D Flash / AS3 CSS / HTMLLibGDX AndEngine Moai Cocos2d-X XNA PlayStation® Suite V-Play

SpriteKit Animations and TextureAtlasses

http://www.codeandweb.com/blog/2013/09/23/spritekit-animations-and-textureatlasses

使用TexturePacker 制作动画的贴图 导出在 SpriteKit 中使用.

The main advantages over the pure Xcode solution are

  • Organizing your sprites in folders
  • Importing multiple formats such as PNG, PSD, SVG, SWF
  • Compile time checks for sprite names
  • Creating animations with a single line of code

纯Xcode的优点:  在目录里自己组织Sprites /可以同时导入各种格式. png psd  svg swf / 编译时检查sprite 资源名字 /一行代码完成动画创建.

Let’s start with how to easily create your atlas.

下面就开始示范如何创建 atlas

Create your SpriteKit atlas with TexturePacker

To create a new SpriteKit atlas, simply start TexturePacker and drag & drop the directories containing your sprite images to the Sprites area of TexturePacker. TexturePacker will automatically load and lay out all image files:

拖拽sprites文件夹到 TexturePacker 窗口即可. 导入资源. 如下图.

Select SpriteKit in the Data Format field, and enter a path to which the atlas bundle should be written. Parallel to this .atlasc file TexturePacker generates a .h header file which contains useful macros for easy SKTexture creation. If you choose the Xcode project directory as output here, the generated header file is automatically found in the include path.

选择导出格式. 设置导出路径以及导出的模板. 推荐导出到Xcode的工程目录里面. 直接就可以include 了.

To use the published sprite sheet in Xcode, drag and drop the .atlasc bundle and the generated .h header file to your Xcode project:

导出后, 需要加入  .atlasc  .h 文件到工程里. 方法如下, 拖拽到Xcode 的窗口里.

Xcode asks how the folder should be added. If you create a folder reference, the Xcode project is automatically updated in the future if the altascbundle changes (e.g. additional sprite sheets are added).

然后, 在对话框里, 选择 create folder references for any added fodlers   以及 确认  add to targets 选中.  这样资源文件才会在打包时包含到App里.

Creating a SKSpriteNode from the texture atlas

演示使用 textureAtlas 创建. SKSpriteNode

Creating a textured sprite is quite easy, just load the texture and use the SKTexture object when creating the sprite node:

很简单就是用 SKTexture

texture = [SKTexture textureWithImageNamed:@"Background"];
sprite = [SKSpriteNode spriteNodeWithTexture:texture];

The first line loads the sprite—looking for a single sprite in the file system— and if not found searching all sprite sheets available to the application.

The second line creates a sprite object using the specified texture.

Adding compile-time checks to your SpriteKit project

As the texture image is referenced by its file name, typos in its name or a mismatch due to a reorganized texture atlas cannot be detected at compile-time.

因为texture 是一个文件名. 所以没办法在编译时检查某些贴图资源不存在的情况. 毕竟这是逻辑状态. 比如 “button1”  你可以用不存在的贴图资源创建对象. 只有运行时才会报错. 编译时检查不出来的.

TexturePacker 提供了一个变通的解决方法. 引入了一个头文件  如果你使用了不存在的资源名字. 就会报错了. 当然也需要你使用常量去创建对象. 比如  __BUTTON__ 而不是 “button1“ 后者的话还是会有问题的.

SpriteKit replaces missing images with a dummy graphic which might look strange. Imagine what this would mean for you if it accidently reaches the AppStore…

TexturePacker helps you avoid this: with compile-time checks!

TexturePacker creates a header file together with your atlas. You can simply import it using:

#import "sprites.h"

The file contains all sprite names used in the atlas as a #define. It also defines a macro for each texture image which creates the corresponding SKTexture object.

#define SPRITES_SPR_BACKGROUND       @"Background"
#define SPRITES_SPR_CAPGUY_TURN_0001 @"capguy/turn/0001"
#define SPRITES_SPR_CAPGUY_TURN_0002 @"capguy/turn/0002"
...
#define SPRITES_TEX_BACKGROUND       [SKTexture textureWithImageNamed:@"Background"]
#define SPRITES_TEX_CAPGUY_TURN_0001 [SKTexture textureWithImageNamed:@"capguy/turn/0001"]
#define SPRITES_TEX_CAPGUY_TURN_0002 [SKTexture textureWithImageNamed:@"capguy/turn/0002"]

Using these defines, creating a sprite is a 1-liner:

通过定义好的头文件创建 SKSpriteNode  即 Sprite 我们需要的动画精灵.

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithTexture:SPRITES_TEX_BACKGROUND];

If you now rename the sprite and publish the sprite atlas from TexturePacker, the definition also changes its name. When compiling in Xcode you get a compiler error about a missing sprite.

注意: 如果你修改了定义的名字. 会有编译错误.  需要手动修改成新的动画的名字. (老的被删除了)

Simplifying SpriteKit’s animation handling

Sprites are considered as animation if they end with a number—e.g. img_01img_02, etc. For these an NSArray object with all textures of the animation is defined.

#define SPRITES_ANIM_CAPGUY_TURN @[ 
        [SKTexture textureWithImageNamed:@"capguy/turn/0001"], 
        [SKTexture textureWithImageNamed:@"capguy/turn/0002"], 
        [SKTexture textureWithImageNamed:@"capguy/turn/0003"], 
        ...
SKSPrite 用数组来管理帧. 如上.

This makes it extremely simple to animate sprites:

SKAction *walk = [SKAction animateWithTextures:SPRITES_ANIM_CAPGUY_WALK timePerFrame:0.033];
[sprite runAction:walk];
初始化一个动画Action 如上. SKAction 是一组动画帧. 代表一个状态. 比如walk.

No more adding single frames, no more worrying about missing animation phases!

Enhancing the animation with additional frames—or removing frames—doesn’t require you change the code at all: TexturePacker always fills in the right frames.

Using SKActions to move the sprite

用SKActions 来移动sprite吧.

For our sample application we use two animations:

  • walk (left to right)
  • turn (right to left)

These animations can be created as mentioned above:

SKAction *walk = [SKAction animateWithTextures:SPRITES_ANIM_CAPGUY_WALK timePerFrame:0.033];
SKAction *turn = [SKAction animateWithTextures:SPRITES_ANIM_CAPGUY_TURN timePerFrame:0.033];

Due to the enormous width of the iPad display we have to repeat the animation a few times:

SKAction *walkAnim = [SKAction sequence:@[walk, walk, walk, walk, walk, walk]];
用重复的Action 实现新的组合动画.. 如上.. walk ,walk ...
Note As SpriteKit does not allow repeat actions to be nested, we cannot use [SKAction repeatAction:count:] here, this would conflict with [SKAction repeatActionForever:], see below. This is why we implement the action as a sequence of walk actions.
注意: 因为 SpriteKit 不允许 重复的actions 被嵌套循环.
In the animation CapGuy walks without moving forward. We need a move action to move the sprite from left to right, and back. The action gets the same duration as the animation itself:
SKAction *moveRight  = [SKAction moveToX:900 duration:walkAnim.duration];
SKAction *moveLeft   = [SKAction moveToX:100 duration:walkAnim.duration];

We have only an animation with CapGuy walking from left to right, but not in the other direction. So we use a scale action with scaling factor -1 to get a mirrored animation. Another action is needed to set the scaling back to 1:

SKAction *mirrorDirection  = [SKAction scaleXTo:-1 y:1 duration:0.0];
SKAction *resetDirection   = [SKAction scaleXTo:1  y:1 duration:0.0];

All action which are put into a group are executed in parallel. We are not only adding the walk and move actions to a group, but also the mirror /reset actions. They have a duration of 0 and are executed at the beginning of the group, so their scaling factor has direct impact on the walk /move actions:

所有的action 是并行执行的. 通过在开头加入 mirror/reset 来实现改变方向.

SKAction *walkAndMoveRight = [SKAction group:@[resetDirection,  walkAnim, moveRight]];
SKAction *walkAndMoveLeft  = [SKAction group:@[mirrorDirection, walkAnim, moveLeft]];

Now we combine walkturn actions into a sequence, and repeat this sequence forever:

self.sequence =
  [SKAction repeatActionForever:[SKAction sequence:@[walkAndMoveRight, turn, walkAndMoveLeft, turn]]];
上面我们把走和转向混合起来.然后一直执行它.

Applying SKAction to multiple SKSpriteNodes

SKAction objects can be used for many sprites in parallel. In our example we want to create a new CapGuy sprite each time the user touches the screen. We have to create a new SKSpriteNode only, and run the action on it which we created in the section above:

SKAction作为数据可以给多个SKSPrite对象来使用. 下面的例子实现了 每次点击 新建一个自动走的精灵的.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithTexture:SPRITES_TEX_CAPGUY_WALK_0001];
    sprite.position = CGPointMake(100, rand() % 100 + 200);

    [sprite runAction:sequence];
    [self addChild:sprite];
}

The complete SpriteKit sample

如图,你可以看到很多精灵人物走来走去.

Source code available for download

The source code is available on GitHub. Either clone it using git:

Read More

官方 Scaleform 文档资料和教程 链接

官方 Scaleform 文档资料和教程
  • Scaleform UDK 文档资料 – 官方 Scaleform 4.0 UDK 文档资料。
  • 导入 SWF – 这个视频讨论的是创建 Flash 内容并将其导入到 UDK 中的一些重要规则。
  • 渲染贴图 & 材质 – 这个视频讨论的是中创建对于将交互 Flash 内容显示在 UDK 关卡中的 BSP 表面上所必需的渲染贴图和材质。
  • 将 SWF 添加到 BSP 对象 – 在这个视频中,我们谈到了将一个 Flash 文件添加到一个 BSP 表面上所需要进行的步骤,其中包括必需的 Kismet 工作流程。
  • 捕获输入 – 在这个视频中,我们说明了如何使用 GFx 捕获按键 kismet 节点将键盘和游戏控制器输入传输到 Flash 文件中。这样它会解释说明这个输入,然后使您可以旋转 3D 中的视频剪辑。
  • 使用 Invoke ActionScript & FSCommands – 在这个视频中,我们谈到了 Invoke ActionsCript 在 Kismet 中的使用,它允许您通过 UDK 调用 Flash 文件中的 ActionScript 函数。我们还将谈到通过 FS Commands 将一个命令从这个 Flash 文件中发送返回到 UDK。
  • 创建自定义菜单 – 在第六个 UDK 视频教程中,我们将会向您说明如何使用 Scaleform GFx 和 UnrealScript 创建一个自定义菜单系统的基础内容。
  • 使用 Scaleform 3Di Flash AS2 Extensions 创建 3D UI – 这个视频将会说明如何在 Scaleform GFx 3.2 及更高版本中使用我们的新 3Di ActionScript 2 插件平移和旋转 3D 空间中的视频剪辑。
  • 处理字体 – 在第七个 UDK 视频教程中,我们将会向您说明在 Flash 及 2010 年 9 月 UDK 版本中正确使用字体需要了解的所有内容。
  • 掌握 Scaleform HUD
    1. HUD 概述 – 这是由四部分组成的系列中的第一部分,它将会带您浏览 2010 年 9 月 UDK Scaleform HUD 中的所有文件和资源。
    2. UTGFxHudWrapper.uc – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第二个视频。在这个视频中,我们全面介绍了 UTGFxHudWrapper.uc 类的基础构成,同时我们花了一段时间详细说明了如何打开和关闭暂停菜单作为 HUD 的一部分。
    3. GFxMinimapHud.uc – 第 1 部分 – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第三个视频。在这个视频,我大致介绍了 GFxMinimapHud 类的前半部分内容以及 udk_hud Flash 文件。
    4. GFxMinimapHud.uc – 第 2 部分 – 这是说明 2010 年 9 月 UDK Scaleform HUD 是如何组成的第四个视频。在这个视频中,我对 GFxMinimapHud 类的后半部分内容进行了说明。
  • CLIK 入门指南
    1. 初始设置 – 在这个教程中,我们将会向您说明如何使用这个新的组件精简接口工具包或 CLIK 快速设计基础前端菜单系统,它将会包含一个主菜单和一个选项画面,全部由核心 CLIK 组件组成,例如按钮、滑块、选项步进以及单选按钮。
    2. 主菜单设置 – 在第二个步骤中,我们将会向主菜单中添加一些基本功能。
    3. 创建选项画面 – 在第三步骤中,我们会让主菜单上的按钮可以将用户带入到选项画面,我们也会添加一个与我们的第一个选项相同的难度设置选项步长。
    4. 复选框、单选按钮 & 滑块 – 在第四个步骤中,我们会添加一些新的组件,其中包括视频设置复选框、单选按钮以及音量滑块。
    5. 添加功能 – 在第五个步骤中,我们会添加 ok(确定)和 cancel(取消)按钮,同时会对难度设置选项步长和单选按钮添加一些功能。
    6. 保留更改 – 在第六个步骤中,我们会设置选项画面,这样它才会在按下 OK 按钮后保留用户所进行的任何更改。
    7. 添加背景 – 在这个教程中,我们会向您说明如何为那些组成我们在教程 1-6 中创建的菜单的组件更换皮肤。我们会将这个过程划分为八个步骤。在步骤中,我们会向这个菜单添加一个背景图片。
    8. 导入背景 – 在这个步骤中,我们会导入在 Adobe Photoshop 中创建的图片作为我们的选项画面的窗口使用。我们还会调整组件使它们与窗口相适应,然后复制一个组件,这样我们就有它的两个不同皮肤的版本了。
    9. 为主菜单按钮更换皮肤 – 在这个步骤中,我们将会为主菜单按钮更换皮肤。
    10. 为 OK 和 Cancel 按钮更换皮肤 – 在步骤 10 中,我们将会为 ok 和 cancel 按钮更换皮肤。
    11. 为声音滑块更换皮肤 – 步骤 11 将会涉及为声音滑块更换皮肤。
    12. 为复选框更换皮肤 – 我们将会在步骤 12 中为复选框更换皮肤。
    13. 为单选按钮更换皮肤 – 我们将会在这个步骤中为视频设置单选按钮更换皮肤。
    14. 为选项步长更换皮肤 – CLIK 入门指南中的最后一个步骤将会涉及未难度选项步长更换皮肤。
  • Scaleform 用户界面设计 – 在 MIGS 2011 举行的虚幻学院上 Matt Doyle 进行现场演示。

Read More

给你5个写blog的理由

●  写你感兴趣的东西,不必在意你是否是专家
●  不要害怕失败
●  多多回复你的读者
●  就算你觉得没人会看你写的东西,也要坚持写下去
●  始终确保你的文章就代表着你的声音——这也是为什么写作是如此特别和吸引人的地方

Read More

说出来我自己都不信,就有这么巧的事.

手机这么脆弱的连接人与人的一条线. 一旦没了信号, 真是有些慌乱

今天中午和老婆约好一起吃饭. 我还特意提前了10分钟下了楼,电梯不好坐.

然后, 没想到啊 没想到.

走着走着,我发现我手机突然就没有信号了. 等到了地铁站, 就更没信号了?  我挣扎了一下, 尝试到底下去找她. 但走了几步,我又转头回来了.我是怕她会到地铁口来找我. 而我又去找她,结果谁也找不到谁了. 信号依旧没有. 最可气的是, 走来走去的路人竟然还都可以打电话. 莫非他们都是联通的?

时间就这么一分一秒的过去了. 直到, 我的电话突然响了, 那边传来老婆的声音.. 显然心情也受到了影响.

手机这么脆弱的连接人与人的一条线. 一旦没了信号, 真是有些慌乱.  实际上,老婆还给我发过短信,问题是,我没了信号以后, 啥也没收到…

我其实是有考虑的, 怕老婆来找我. 走差了.  结果是,老婆以为短信我收到了, 在老地方等我.. 直到手机接通…

我跟她解释, 她都不信. 别说她不信,我自己都不信. 真是奇怪的一天.

Read More

利用程序彩蛋实现无VPS挂机Vagex赚美元.

今天我将告诉你最无脑的赚美元的方法.

1.需要你在操作VPS挂机VAGEX 赚美元项目.

2.有IOS设备. iphone ipad ipod touch

3.想从繁琐的手工操作中解脱出来.

4. 从AppStore下载 LazySocialTalker.

然后按如下方法操作.

切换到Help界面, 用手指滑动屏幕, 做出 Check的手势.

于是你会看到一个对话框. 提示你 Got Gesture “

切换到Setting界面,  你会看到多了一个 Vagex ID的文本框.  单击后可以编

辑设置为你自己的 Vagex ID

保存后,双击VagexID Item 会自动转向 内嵌的浏览器. 并打开  Vagex.com 提示你登陆. 你输入密码就好了. 记着选择保存登陆信息.后面全靠它了。

开始使用之前, 要到Settings界面里,双击 Facebook 和 Twitter 分别进行授权操作.  授权后,就可以实现一键发送和验证  Vagex的Link 的功能.

于是平时需要几分钟,关键是很繁琐的手动操作 就变得很简单了,  一步就可以达成. !!

上个图

Read More

FREE Resources to help you finsih your game demo…

FREE Resources to help you finsih your game demo…

Hey guys! You didn’t think I’d set you all to task and not offer a helping hand did you?

Well here are a few great resources that can help you get started or add a few bits to your games to help you realize your concepts.

A lot of this stuff is either Royalty Free or Creative Commons or Public Domain even. Have a look for yourself, I’m splitting up these links into their areas of use.

Music

Incompetech (big music catalog. search by genre or feel)
RoyaltyFreeMusic.com (mainly royalty free for a flat cost, but they have a free section. worth a look still!)
FlashKit.com (intended for Flash projects, but has quite a large library of music loops)

Sound Effects

SoundDogs.com (big big sound effect DB)
SoundBible.com (another resource, but not as big as SoundDogs)
ACIDplanet.com (for musicians, but they release sets of samples each week. the odd sample would make a good SFX & esp. good if you are making a musical game)

Graphics

OpenGameArt.org (a whole collection of free sprites–2D and 3D, tiles and other assets free for use)
WidgetWorx’s SpriteLib (a single ZIPped collection of sprite meant for use to get started, taken from older iOS and OS X game projects)
Lost Garden (Daniel Cook’s infamous Epic Megagames sprites and other newer offerings. He’s been pretty good to the game dev community and here is some of his work.)

There are a lot of ones that I like to dig through and have a search when making my prototypes, but you can of course find others out there. You can even just use Google it’s self to search for something specific, though sometimes I have found that to be a little time consuming if it’s a really rare or unusual thing your looking for.

Such as… Here is a blog post I found that has all kinds of links to other such resources: http://letsmakegames.org/resources/a…me-developers/

Enjoy and don’t get too caught up in all the assets and forget about YOUR vision of your game entry! 

Found any other great resources, why not share?

Read More

[fwd] some quick notes with relevant references of ios development

从我一直关注的一位朋友的blog上抓来. 素未谋面, 但是分享的态度还是依旧.  我的感触是,  ios开发  测试驱动 单元测试这些在国外的团队里被应用的很好. 与其担心时间不足,还真不如分配一些代码测试的时间. 这是个趋势. 换句话说是科学.

@tinyfool 不知道你家团队是否也是理念先进.

Original uRL:   What I learned from my first iOS job in Australia from chris. vinshine(@cocoachina?)

Objective-C / Cocoa:

  1. Use weak reference in block to avoid retain cycle (http://blog.random-ideas.net/?p=160)
  2. Use [UIImage resizableImageWithCapInsets] to create stretchable background image (http://stackoverflow.com/questions/8671315/using-resizableimagewithcapinsets-image-for-button-only-works-for-the-state-set)
  3. If an abstract class has a tempate method for its subclasses to override, it’s a good practise to raise exception in the abstract implementation in case subclasses don’t override this method and parent implementation gets called
  4. in LLDB debugger, use “po [[UIApp keyWindow] recursiveDescription]” to output app view hierarchy
  5. Use NSNib to speed up tablview cell loading (http://useyourloaf.com/blog/2011/02/28/speeding-up-table-view-cell-loading-with-uinib.html)
  6. You can use -[NSArray indexOfObject:inSortedRange:options:usingComparator:] to ask an NSArray for the index where an object should be inserted given an array range that’s currently sorted (http://stackoverflow.com/questions/8180115/nsmutablearray-add-object-with-order)
  7. using view.bounds for size, not view.frame, sometimes view.frame doesn’t reflect the current  device orientation (http://stackoverflow.com/questions/5194504/reporting-incorrect-bounds-in-landscape-mode)

Tools:

  1. continus integration with Jenkins (http://jenkins-ci.org/)
  2. Use POSTMAN (a Chrome plugin) to observer RESTful api response (https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm?hl=en)
  3. AppCode, an alternative to Xcode (http://www.jetbrains.com/objc/)
  4. Use Charles to observe RESTful api response, set breakpoint, mock/modify HTTP response content(http://www.charlesproxy.com/)
  5. Use XScope to measure pointed size in simulator and Photoshop (http://iconfactory.com/software/xscope)
  6. Jira, an Agile project managment & issue tracking web tool (http://www.atlassian.com/software/jira/overview)
  7. Use multiple targets in CocoaPods Podfile (https://github.com/CocoaPods/CocoaPods/wiki/A-Podfile)
  8. Use your own podspec file to integrate private libraries (http://theonlylars.com/blog/2013/01/20/cocoapods-creating-a-pod-spec/)

Testing:

  1. TDD with GHUnit (https://github.com/gabriel/gh-unit)
  2. Test data mock and stub with OCMock (http://ocmock.org/)
  3. BDD with Kiwi (https://github.com/allending/Kiwi)
  4. Automation Test with Jasmin (http://pivotal.github.com/jasmine/)

Read More