在 setuptools 中使用 dependency_links

1. 关于 build 工具集

我开发的项目,都会提供一个 build 工具集,这个工具集为开发人员提供了所有可用的功能,包括:

  1. 初始化项目;
  2. 更新版本库;
  3. 资源转换、加密、压缩、包装;
  4. 模版生成;
  5. 打包、发布;
  6. 更多开发人员需要的功能……

以前写 Actionscript 的时候,我使用 Bash + Ant + Java 开发工具集,现在转向使用 Python。

正在开发的这个 build 工具集,是 hhlb ,其中,HHL 是我们的项目代号,b 代表 build。 继续阅读

从 quick 转向 cocos2d-x 3.3 lua

在我的第一个 cocos2d-x 项目立项时,我曾经纠结过是使用 Lua 绑定还是使用 JS 绑定。最后选择了使用 Lua : Cocos2d-x script language binding:Lua or Javascript? 。cocos2d-x 的 Lua 绑定做得很糟糕,所以,我基于 quick-cocos2d-x 2.2.3 这个更好的 Lua 绑定版本进行了许多修改,那时 quick 还是在独立发展。

后来,Quick 被触控收购,Quick 进行了不兼容的升级。由于我对 Quick 的修改过多,当时的项目也在非常重要的时期,我没有持续跟进 Quick 的升级步伐,一直在使用自己 forked 的版本。

在这段艰苦时间中,我在 Quick 社区和 quick 团队身上也学到了不少东西。感谢 dualface、Jimmy、阳光七月、ChildhoodAndy、微微蓝 等朋友提供的无私帮助。

在这些朋友的帮助下,我对 openGL ES 做了初步的了解,写出了 cocos2d-x 的 filter 插件;熟悉了 cocos2d-x 引擎的源码架构;把 dragonbones 整合进入了 quick 框架中;了解了 lua 与 C++ 交互的方式……下面有一个不全的列表: 继续阅读

博客静态化工作

很早以前就想把博客转换为静态站点。现在,我终于下决心来做这件事了。

为了这件值得纪念的事,我必须要写一点东西。

不得不说的历史

如果从 2005年4月 开始算起, zrong’s blog 已经存在了将近10年的时间。但事实上,我在2003年就开始写博客了。最早用的博客系统是基于 ASP 的 oblog 系统。由于当时不太注重网络安全(其实是菜鸟啥都不懂),我的第一个博客被黑掉,然后我转投了 WordPress ,没想到这一写就是10年。

2011年6月11日,我开始使用 Markdown 写博客,文章会直接提交到 Github 上。然后再手动粘贴到 WordPress 后台,使用 Markdown On Save 插件来渲染博客内容。

之前的文章使用的是 HTML 格式,我使用 Pandoc 将它们全部转换成了 Markdown 格式。

到现在,博客上已经有了700多篇文章,大部分是原创,也有一部分是翻译和转载的。最近几年,基本没有转载过文章了。

目前,我的博客跑在 阿里云主机 上,用 lighttpd 做服务器,并使用了 WP Super Cache 扩展。 继续阅读

Markdown 和 reStructuredText

Markdown

Markdown 可以说是目前最流行的标记语言,Github 对它的支持很好,许多论坛、博客也支持这种语法。

我的博客从2011年6月11日开始使用 Markdown 写作,文章托管在 Github 上。在 WordPress 中,我采用 Markdown On Save 插件来实现 Markdown 的解析。

但是,Markdown 在没有扩展的情况下,是非常简单的,就算写个博客都嫌不够。 继续阅读

Python web框架的选择

Python web框架的选择

python web frameworks

一、缘起网站

大约十多年前(1998年),我做了人生中的第一个网站。那是用的语言是 ASP,工具是 FrontPage

后来(2000~2004年),我做了一段时间网站开发,负责前端到后端、美术到产品的所有内容,使用的语言是 ASPPHP,工具是 Macromedia DreamweaverEditplus

那时,我已经开始手写 CSS 和 HTML,并使用 <DIV> 重构网站了。

再后来,我就没有继续做网站了。

现在,因为众所周知的原因,我必须捡起这个老本行。由于一直都不太喜欢 PHP,我在考虑选择一个 Python Web 框架。 继续阅读

Python 包管理工具解惑

Python 包管理工具解惑

python packaging

一、困惑

作为一个 Python 初学者,我在包管理上感到相当疑惑(嗯,是困惑)。主要表现在下面几个方面:

  1. 这几个包管理工具有什么不同?
  2. distutils
  3. setuptools
  4. distribute
  5. disutils2
  6. distlib
  7. pip
  8. 什么时候该用pip,什么时候该用 setup.py ,它们有关系么?
  9. easy_installez_setup.pysetup.pysetup.cfg 分别都是干啥的?
  10. wheel 和 pip 的关系?
  11. Egg 和 whl 的关系?
  12. 如何发布自己的模块(发布到PyPI)?
  13. 如何进行模块的私有发布(不发布到PyPI)?

为了弄清这些问题,我找了许多资料。最后发现最好的资料还是 python 的官方文档。

下面是阅读了所有我找到的资料后的一个总结,希望能帮到几个月后又把这些全部忘光的那个自己。 继续阅读

cannot use ‘throw’ with exceptions disabled

cannot use ‘throw’ with exceptions disabled

在为 DragonBonesCPP/refactoring 的 cocos2d-x-3.2 demo 增加 Android 编译时,NDK 报了一个编译错误:

error: cannot use ‘throw’ with exceptions disabled
throw std::invalid_argument(“Invalid data.”);

这是由于 DragonBonesCPP 库使用了 C++ 标准异常,而 Android NDK 编译器默认不支持 C++ 异常控制导致。

但是,从Android NDK r5 版本开始,NDK 就开始支持 C++ 异常控制了,我的版本是 r9d ,为什么还会出现这个错误呢?

原来,NDK 编译器的 C++ 异常控制特性支持默认是关闭的。要打开它,可以这样做: 继续阅读

AIR 15.0 提交 AppStore 错误 ERROR ITMS-9000: Invalid Segment Alignment

AIR 15.0 提交 AppStore 错误 ERROR ITMS-9000: Invalid Segment
Alignment

上周提交到 AppStore 的 IPA 被拒了,其中的主要错误如下:

ITC.apps.assetvalidation.PURPLE_EXECUTABLE_OUT_OF_ALIGNMENT.error.message

我联想到有可能是因为 iOS8 支持的原因,于是在
labs.adobe.com
下载了 2014-09-24 日发布的 AIR 15.0.289 beta 版重新打包,但在提交到
AppStore 的时候收到这样的错误提示:

ERROR ITMS-9000: “Invalid Segment Alignment. This app does not have
proper segment alignment and should be rebuilt with the latest version
of Xcode. Please contact Developer Technical Support if you need
further assistance.”

这消息看起来和上次被拒的原因一致。我可以确定是 iOS8
的原因了。最可能的情况是 Apple 要求新提审的包必须加入 iOS8
的相关字段,而 Adobe AIR SDK 的编译器没有提供这些字段。

在 Google
上搜了一通,发现不少人碰到这个问题,只是没有解决方案。 继续阅读

可能是一个程序员