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


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



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

Find back svn: Using External Version Control Systems with Unity

Using External Version Control Systems with Unity

Unity offers an Asset Server add-on product for easy integrated versioning of your projects. If you for some reason are not able use the Unity Asset Server, it is possible to store your project in any other version control system, such as Subversion, Perforce or Bazaar. This requires some initial manual setup of your project.

Before checking your project in, you have to tell Unity to modify the project structure slightly to make it compatible with storing assets in an external version control system. This is done by selecting Edit->Project Settings->Editor in the application menu and enabling External Version Control support by selecting Metafiles in the dropdown for Version Control. This will create a text file for every asset in the Assets directory containing the necessary bookkeeping information required by Unity. The files will have a.meta file extension with the first part being the full file name of the asset it is associated with. Moving and renaming assets within Unity should also update the relevant.meta files. However, if you move or rename assets from an external tool, make sure to syncronize the relevant .meta files as well.

When checking the project into a version control system, you should add the Assets and the ProjectSettings directories to the system. The Library directory should be completely ignored – when using external version control, it’s only a local cache of imported assets.

When creating new assets, make sure both the asset itself and the associated .meta file is added to version control.

Example: Creating a new project and importing it to a Subversion repository.

First, let’s assume that we have a subversion repository at svn://my.svn.server.com/ and want to create a project at svn://my.svn.server.com/MyUnityProject. Then follow these steps to create the initial import in the system:

  1. Create a new project inside Unity and call it InitialUnityProject. You can add any initial assets here or add them later on.
  2. Enable Meta files in Edit->Project Settings->Editor
  3. Quit Unity (this ensures that all the files are saved).
  4. Delete the Library directory inside your project directory.
  5. Import the project directory into Subversion. If you are using the command line client, this is done like this from the directory where your initial project is located:
    svn import -m"Initial project import" InitialUnityProject svn://my.svn.server.com/MyUnityProject
    If successful, the project should now be imported into subversion and you can delete the InitialUnityProject directory if you wish.
  6. Check out the project back from subversion
    svn co svn://my.svn.server.com/MyUnityProject
    And check that the Assets and ProjectSettings directory are versioned.
  7. Open the checked out project with Unity by launching it while holding down the Option or the left Alt key. Opening the project will recreate the Library directory in step 4 above.
  8. Optional: Set up an ignore filter for the unversioned Library directory:
    svn propedit svn:ignore MyUnityProject/
    Subversion will open a text editor. Add the Library directory.
  9. Finally commit the changes. The project should now be set up and ready:
    svn ci -m"Finishing project import" MyUnityProject

Page last updated: 2013-05-15

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)


  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/)


  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


显然我受google 乃至很多其它互联网事物影响太多了, 坚信 Beta 精神. 即是不断更新 不断成长, 永远不是最终版本的 追求完美和极致的 一种态度.

我一度都很神往. CNBeta 等也是这意思.  所以从Google这来讲虽然叫Beta  其实已经是功能十分完备的了, 仅仅是态度的一次标榜.

我在我的App的一个界面里有一个提示性的文字 “Beta”  这就是这篇blog的由头,  于是我可耻的被 rejected 了. 说我违反了 xx 条款.  而显然不是因为功能问题,  Apple 意图告诉我 不允许处于Beta测试的产品上线.

尽管实际情况是我已经在小范围内测试过了.  对于不同的文字的理解和定义, 不同的实体和团体差别还是蛮大的.  以此为鉴, 即便你真的是beta版的, 也萎缩一点, 就好了.

:)  不得不说, 这还真是出乎我意料之外的. 大大的superise me.

我原本想表达我的App其实是想追求与用户互动的. 根据用户的需求来添加修改功能.  看来在Apple这里 ,不可以.

抽时间,再读一下  review guide 吧.  @tinyfool 貌似有一个非官方的解读.

另: 如果你在做Vagex Viewer 的项目, 不妨提前尝试一下我们的一个应用.  我在testflight 有一个测试小组.


估计又要等7天了. 不知道能不能赶上 vagex.com 开放注册.


vagex.com  是提供Youtube 视频自动浏览流量的网站. 透过用户安装在设备(pc mobile device) 上的插件或软件 支持服务器下发浏览指令,  浏览指定的视频, 赚取积分.  用户可以在获取足够积分以后进行现金的兑换,

官方有一个兑换比例, 以前是3W 左右就可以换1$ . 这是个什么概念呢, 挂机2-3天. 同时开满的话. 最多5个ip连接. 这个号称是最简单的网赚项目. 虽然钱数不多,一个月2-3$ 但一年也够VPS /域名的钱了.

还有一个方式是拉下线, 我的能量不是那么大 不过如果有人用我的连接注册, App我给你免费用 . http://vagex.com/?ref=191598

更多细节 请移步 http://dev.apps1001.com/   有两篇详细的说明.

Read More


在PayPal账号中,一共可以添加8个邮箱地址,付款可以通过这8个确认的邮箱完成收款,同时都有详细的交易记录。卖家可以挑选其中的一个邮箱作为主要收款邮箱(比如企业邮箱),在paypal帐户-用户信息-进行设置。这个邮箱可以收到PayPal发出的所有通知邮件。如果要添加邮件地址的话,可以在用户信息(profile)菜单中点击“添加或编辑电子邮件地址”(add or edit email),或者在“用户信息”页面点击“账户信息”下的“电子邮件”(email),在下个页面里点击“添加”(add),然后就可添加您的email地址了。

Read More


如果你用PayPal,一定要知道我的预核准付款是什么. 不然等你被莫名其妙扣了钱,你就叫天不灵了.

登陆PayPal账号后,用户信息 – 更多选项 – 财务信息 – 我的预核准付款 – 更新

于是你就会看到那些默默的等待着扣你钱没商量的商家列表. 可是可以自动扣你费没商量的.

我是吃了亏的. 好在还可以提起争议.但 真的是太劳神了.  查阅了一下,原来还有这个暗门. 莫非只能怪我学艺不精,还是有意做局呢?


Read More


最近看到 Delphi 几经易手现在叫 Delphi XE4  已经支持 IOS /MAC /Win 跨平台开发了.  有些感慨, Delphi 的没落一部分归结于应对 .net 策略, 也有一部分源于盗版. 一个不能正常得到补血的企业, 生存真的会是问题.

所以马上又想到开源, 一直也在不断的想, 甚至几年前就开始想, 也许还是没有想明白. 但权且记录下来.

开源通常会和源代码关联. 毕竟往往开源的项目都会发布源代码.  最早一直的困惑是为什么会有开源, 除了要解决版权争议问题, 以及人力不足的问题, 还有什么?  既然都不是傻子, 所以注定应该是有更大收益的事.


1. 专职的大牛们,还想也许时间写东西, 但是没人用也不行, 就开源了, 可以看看用户的反馈, 甚至于可以加速项目的发展.   也有从开源变成闭源的先例.

2. 初创公司失败, 又不想浪费资源, 于是选择开源, 本着大爱无疆的教义, 但年久失修, 一时也不容易compile 和实际应用到工作中.

3. 提供服务的厂商,  依托自己的平台,开源了若干sdk , 旨在提供用户快速接入的可能.  以云提供商居多.  也有很多平台类的. 他们开源有个特点, 与产业无关, 只关系自己的一亩三分地.

4. 很多公司希望从开源项目开始, 网罗一群真正有用的人才.  所以选择了开源, 然后鼓励开发者自己玩.    其实有很多公司还是假开源, 只是放一些陈货. 真正优化过的,可以商用的部分 就不是难么轻易的开源了, 更像是个展示.


5. 还有一些是被逼迫的, 因为产品代码用到了某个库,  然后就只好开源了. 然后估计就再也不维护了 .

6. 有一些爱好者想学习某个技术或者研究某个方向, 自己研究太闷了, 就开源一部分出来, 有人参与的话 再深度共享.  互惠互利.   甚至以后找工作时 履历上也可以写上 github 的 repository 数量.

对于开源我还是有很多期待的, 甚至幻想Bigworld没准也开源了, 因为就过去这几年的经历的案例, 没有源码就是受制于人, 而只能忍受BigWorld 慢如牛一样的技术支持. 到18:00 准时下线.  有源码很多问题都好理解了, 也知道如何去规避一些问题.  当然现实是没有,  有时候不是花钱就能解决的。 就像个定时炸弹一样.

同样Unity3d 以及 Flash 都存在这个问题, 所以我就很畏惧, 生怕最后一刻遇到无法解决的问题。  所以最喜欢 Cocos2d(X)  这么多年了,我得出这么一个结论, C++ 才是真的跨平台语言.

对于你自己是否参与开源了,我自己也还是徘徊在大门之外, 一是技术也不是多精 不太好意思把写的乱糟糟的代码拿出来.  另外业余的时间也不太多, 工作的又不能拿来开源.  不过我发现了 github 提供的  gist 可以理解成分享代码片段, 我已经放了一些 觉得挺有意义, 以后会坚持下去.   围绕的都是简单的事 ,  用代码完成了. 可以节省时间.

如果你是个在校的学生, 不妨也参与到开源项目中来, 更早的找到你的人生方向.   :)

做个小广告: 有没有学python 的前端的同学. 交流交流.

Read More

[服务器]root密码丢失,用livecd 恢复centos root 口令.

我自己一直有个习惯,不知道是好还是坏, 每次配服务器 口令都比较随机, 也就是达到自己也不会记得的. 也算是为了保证数据的充分安全. 万一哪一天有人能抓住我 威胁我交出服务器口令的话, 我表示我真的是不知道啊.

玩笑. 回到正题. 刚才清理磁盘 看到 CentOS-5.6-x86_64-LiveCD.iso . 想起之前用它来恢复root口令的事. 现在记录一下.

其实原本有个简单的编辑 grub 启动菜单为 single 的方法就可以修改root口令了.

但是也有人会为grub 编辑权限 设置密码. 其实我觉得这算是多余的步骤了, 试想如果都能物理接近你的服务器了, 肯定是有办法的.

我这说的就是还可以用LiveCD 来重置口令.

用LiveCD 引导,

执行chroot /mnt/disc/hd1,

再执行 mount -o remount,rw / ,

修改/etc/shadow ,



http://lists.centos.org/pipermail/centos/2008-November/067670.html 先来个参考.

Read More


昨日回顾这几年, 感慨很多, 因为23日 FIT 的作者 西去了. 而2012年听到太多的有关于 衰老死 的事.  而回顾自己, 貌似也是走在这边缘徘徊, 因为自5月份到今天, 我大多数情况下, 每天夜晚会坚持到2点偶尔还有到凌晨4点的时候,  多出的时间, 80%被用在webgame的研发上, 20%的时间用来想以后的事.  准确的说, 我又闭门造车了,而且几乎是从零开始. 也是为了结合现有的资源,客户端选择了Flash, 接下来的事谁也没想到, 印证了葛优那句话: 我本将心向明月,奈何明月照沟渠. 到7月的时候, 基本上服务器端的底层完成了, 我的解决方案是;  python + bigworld + protobuff . 写了一层作为flash到bigworld的连接. 后来我也看到貌似官方Bigworld也有这个趋势, 但还没看到实质性的东西.  说个题外话, bigworld 这个引擎 网络部分还是很强的, 但也有一点也很致命,   因为没有源码, 一但出现什么bug  他们的支持很拖沓, 很坑爹.     原本计划是, 复用sko的script ,但是到8月时出了问题, 新 sko没有如期的完成, 而webgame的时间又被压缩了, 只好放弃webrpg的想法, 重选了一个相对能快速一点的休闲类游戏. 这里先卖个关子, 等再过1个月左右, 应该就能在线测试了.  简单的说, 项目的目标调整了以后, 好在服务器的工作没有浪费. 继续做到9月份大致就有个摸样了…  但游戏还需要很多细化和修bug.  各种交织,很悲剧.  只有两个人.  意外的事就发生了, 10月做客户端的同学离职了.   接下来的时间, 我只好又深深的挖了个更大的坑, 我又开始熟悉 as 脚本.  实际上逻辑部分倒不是担心的, 出现的大多问题还是与flash 平台有关的. 不熟悉啊..  断断续续的修了一些明显的bug.    目前的状况是, 重写了客户端, 我的考虑是既然要不断地修bug 还不如写一个更符合自己思路的, 要再修bug也省力一些.  所以, 就有了这一版的单机游戏.  在这里,我也算标记一下. 目标是下个月底发布, 看看能否兑现.

说了这么多铺垫, 更想说的是对于share模式的开源的设想,  大致是这样,  在这个组织里, 每个功能模块由不同的人贡献 .
而要想获得实际的使用权限, 我指的是产品发布, 需要付费, 没错, 每个模块都要付费.   模块的作者可以设定对于某些深度合作的人免费或者打折.   这样可以把程序的工作最大限度的共享,  试想, 一年又一年, 有多少人在同一天都在做着同样的重复劳动, 要造车. 浪费多少个青春和岁月啊.

现在不是云时代吗,  如果一群人不希望100% open source, 那可以考虑我说的私有形式的开源.  组织内部是开源的.  是的, 其实已经有游戏引擎了, 各种开发框架. 但还是有重复造车的事在发生,  所以我觉得程序这个行业需要open .   对于是否有必要, 你只要问自己如下几个问题,  1. 你想一直以一当十? 没有团队 你能做多大的事?   2. 你是万能的吗, 有新需求时,每次都自己解决? 3. google 是万能的吗, 不是什么都能google到的,对吧.

试想, 原本可以做1件事的5个人 揉在一起, 可以做更多的事.  是不是很好.  每个模块还需要若干个备份的维护者倒是真的, 不然有人西去了, 模块就没人维护了不是.

这个 组织必须是封闭的, 不会在google的搜索结果中出现. 当然也可以适当出现一些,  即对于组织外的人的使用问题, 就是必须付费或者分成.  前提是足够强大,可以支撑和实现各种功能.   我相信这种模式是适合真正的程序作为职业生存的.  因为可以专业, 可以持续性, 也可以刚好更快。

哈, 对于组织外的人, 它很像现在的引擎.  但是这个是多人维护的,  用户或者内部的人会依据需求提新需求. 比如写个shader . 做个新的美术表现.  (Unity3d 的 store 模式很像噢)

同时, 这种模式的开源其实是提供了一种可能, 那就是拥有开发能力的这些人之间的技术分享, 我相信足够牛的人只要给时间, 的确是无所不能的, 但挖了坑,得有人埋吧, 你怎么可能自己把自己埋了呢.  同一时间, 你只能做一件事.  然后, 你有一个机会, 可以不断地轻松的工作,  节省下里的时间就可以用来陪孩子,去旅游. 是不是很惬意.

open source 不是google到代码,一字不差。如果有一天,有这种组织形式诞生了, 没有google。我相信世界会更美好.  干货. 全都是干货//

从产品的层次看, 项目的成与败, 可不单单是拼的技术. 拼的是团队啊..  公司机器这种组织形式是最邪恶的,  就像足球联赛, 最佳组合必然是联合国才行, 世界杯就不允许自由组合..

Read More