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. 这几个包管理工具有什么不同?

* distutils
* setuptools
* distribute
* disutils2
* distlib
* pip
2. 什么时候该用pip,什么时候该用 setup.py ,它们有关系么?
3. easy_installez_setup.pysetup.pysetup.cfg 分别都是干啥的?
4. wheel 和 pip 的关系?
5. Egg 和 whl 的关系?
6. 如何发布自己的模块(发布到PyPI)?
7. 如何进行模块的私有发布(不发布到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 上搜了一通,发现不少人碰到这个问题,只是没有解决方案。 继续阅读

IBM developerWorks 线程文章汇总

IBM developerWorks 线程文章汇总

最早我在 POSIX線程(pthread)入門文章分享 看到了关于 IBM developerWorks 中线程文章的一些汇总。但是按照该文中提供的链接一一找去,发现均不能访问。

原来 IBM developerWorks 对目录结构进行了修改,因此原来的链接就都作废了。

由于找不到 IBM developerWorks 中的相关汇总页面,我就人肉汇总了一次。

原文中只有 C 和 C++ 部分的内容,我又加入了 Python 和 HTML5 的内容。

下文的繁体字内容来自 POSIX線程(pthread)入門文章分享继续阅读

HTML5入门指南

两天前,Robert Mening 给我发来邮件,告知我 [转]30余款HTML工具和教程 一文中的 EchoEcho.com 网站的内容太老,希望我能更新,并加入他的 HTML5 Beginner’s Guide

HTML5 Beginner’s Guide 的设计简洁,内容也是完全针对新手,有兴趣从头学习 HTML5 的话,可以根据他的教程对 HTML5 进行初步了解。

Robert 是个挺有趣的人,他在 About 页面中写道许多人在他的网站上线后给他发邮件,要他帮忙做网站,然后他委婉地拒绝了( I don’t have THAT much time to set it up for YOU)。这是意料之中的事,就和我在 一个项目开源到底有哪些考虑? 中说的一样,总有人想把你当免费劳力使唤,此事中外亦同。

Robert 提到的文章是六年前发布的,虽然我经常对旧文进行修改,但那篇文章是转载的,为了尊重原作者,我决定依然保留原文内容。

各视频站做到自动切换flash和html5播放器的难度有多大?

各视频站做到自动切换flash和html5播放器的难度有多大?

The difficulty of change video player from flash to html5.

这是一个知乎上的回答,原文在这里:http://www.zhihu.com/question/25259832/answer/30319472

问:

  1. 做到根据操作系统、浏览器或者用户自定义来使用不同的播放器是否有难度?
  2. 如果有难度,问题点在哪里?
  3. 如果不算难,为什么不做?

答:

判断操作系统和浏览器种类和版本,这个不难。

目前的主流平台一共5个:

桌面平台:

  • Windows(完美支持H5和 Flash Player)
  • Mac OS X(完美支持 H5和 Flash Player)
  • Linux(支持 H5,Flash Player支持到11.2,Chrome对 Flash Player 支持更好)

移动平台:

  • Android(支持 H5,Adobe已经放弃Flash Player支持)
  • iOS(支持 H5, 不支持 Flash Player)

继续阅读

在 iOS 7 中获取唯一标识符(UDID/UUID)

在 iOS 7 中获取唯一标识符(UDID/UUID)

Get unique identifer in iOS 7

在 iOS 5 中, 可以获取到系统的 UDID(Unique Device Identifier) ,后来被 Apple 禁止掉了。

于是,在 iOS 6 中,大家开始使用 MAC 地址 MAC(Medium/Media Access Control) ,后来又被 Apple 禁止掉了。

同样的,OpenUDID 也不能用了:

在 iOS 7 中,Apple 推荐使用广告标识符 advertisingIdentifier 来获取系统的唯一标识符。但是,用户如果重置了系统,广告标识符会重新生成。这就达不到 “唯一标识符” 的作用。

于是,在 iOS 7 中,程序员们发明了 “钥匙串保存” 方法,将这个唯一标识符保存在钥匙串中,安装了 App 后读取这个标识符即可。参见这里:ios 利用钥匙串保存密码和获取密码Simple iPhone Keychain Access

更详细的操作,可以参考这篇:如何使用KeyChain保存和获取UDID

下面这篇文章非常详细地介绍了 iOS 上获取唯一标识符的所有方式,以及相关知识,为了避免这么优秀的文章以后消失掉,我将其全文转载如下(已经很少全文转载了……)。 继续阅读

可能是一个程序员