CORS

CORS(Cross-Origin Resource Sharing),这技术的提出主要是为了解决 Ajax 的跨域问题。如果是 GET 类型的跨域请求的话,还有 JSONP 这种简单的解决方法,但像 POST 这种就复杂了,所以提出了 CORS。

XDomainRequest

IE 在 IE8 时就开始提供了跨域方案 XDomainRequest ,有了 error、timeout、progress 等处理函数,可惜得是走得太前并且当初考虑 .net 系列多导致限制有些多。

比如,对于普通的 Ajax post 来说,一般会设置 Content-Type: application/x-www-form-urlencoded,但 XDomainRequest 不能设置 header,从而只能发送纯文本,这对于服务器端会带来些困扰。PHP 在这种情况下不会把提交的键值对放进 $_POST 变量中,而需要用 HTTP_RAW_POST_DATA 来获取再解析。

也没法发送 cookie 来做身份验证。

因为限制有些多,所以 ie10 后抛弃了 XDomainRequest 而采用 XMLHttpRequest Level 2 了。

下面是一个简单的例子
继续阅读“CORS”

童工

童工问题是个老问题也是个国际性的问题,主流思潮自然是同情和立法禁止了。

不过说得不好听点,这些都是生活无忧的人施舍的同情心而已。

人口贩卖这个恶劣并悲惨事实的这里不提,考虑下主动性质的童工。

2002 年颁发了《禁止使用童工规定》,规定“国家机关、社会团体、企业事业单位、民办非企业单位或者个体工商户(以下统称用人单位)均不得招用不满16周岁的未成年人(招用不满16周岁的未成年人,以下统称使用童工)”。

这条规定,从条文来看,规定了禁止了儿童出现在任何的经济产出活动中,包括普遍意义上的体力活动,但还包括了童星这一职业、家庭作坊的协助等。

会有多少人觉得荧屏上的光鲜童星事实上属于童工这一概念呢,不说哈利波特这些出了名的,那些可爱的小孩、婴儿有考虑过吗?事实上,不知多少人恨不得自己的儿女也能走上那闪亮的舞台。

有多少人觉得帮上家里作坊什么的属于违法法律呢?

回到大众所同情的从事体力劳动来那类童工。

每个童工的背后都有着一个困难的家庭。极端的情况就是,无父无母甚至父母无法劳动只能依靠小孩本身来获取生存物资。禁止了工作后,断其生存来源后考虑过如何吗?

法律上规定儿童应该接受义务教育,甚至都免费了。只是,精神上富裕了,但肉体却死亡了。

不禁用使用童工的恶果是可见的,毕竟有着工业革命时期的英国作参考。虐童、性虐待、人口贩卖、不受教育导致无文化而社会极度两极。

只是,禁止童工的同时没能找到解决生活问题的方法是个悲剧。

此好非彼好

这两天看了《这个时代的无知与傲慢》以及《上帝掷骰子吗:量子物理史话》(可惜想读的《量子史话》没有发行电子版,只能后面再买实体书了)这些高格调的东西,上班前回归俗世,看看周边。

说说旧事。

周鸿祎的《只要对用户好,我什么人都不怕得罪》这理想很伟大,可惜现实依然是骨感的,就如同专家。

图中这个说法就彻头彻尾地不是口号那么伟大的东西了。

正当来说,为了用户而着想的做法是:QQ 那么多广告那么多臃肿那么慢那么多无用的东西,上帝们,来用我们这个彻底以用户为中心的干净清爽全球最快最纯粹的聊天软件吧。

这才是为用户着想同时合情合理并合法的做法。

而周老板采访中的说法却是这样的:你不行啊,技术那么烂那么粗暴,没看见你老婆好痛苦吗?让我来帮你吧。看,要这样,慢慢来,九深一浅。不要戴套,给她纯粹的感觉。啊,你太多毛了,看我,多干净!

QQ 没被定义为“病毒”,那么就不能被强行删除禁用其功能,这样和强奸别人老婆给别人戴绿帽子有什么关系。

说到利益,一切不向用户收费的服务都是通过把用户卖了来获取利益的,别把自己说得多么伟大多么圣人。

语义化版本号

对于一个给定的版本号 MAJOR.MINOR.PATCH (主、次、补丁),其变化的规律是:

MAJOR version (主版本) 会在 API 发生不可向下兼容的改变时增大。
MINOR version (次版本) 会在有向下兼容的新功能加入时增大。
PATCH version (补丁版本) 会在bug以向下兼容的方式被修复时增大。

References

  1. [译]语义化版本管理
  2. Semantic Versioning 2.0.0

Chrome 开发者工具的 js 库黑盒调试

Chrome 的 devTools 终于有了 Firefox 的 black-boxing 功能,不过叫做frameworks debugging

目前依然是试验性功能,不但还简陋,而且需要先到 chrome://flags/#enable-devtools-experiments 中开启开发者工具实验,然后再在开发者试验性项目中勾选 Enable frameworks debugging support ,这之后才能在常规面板中找到设置。

使用上没有 Firefox 的简单明了,看看正式启用后会不会有所改进。

不过在调试时就比 Firefox 的好多了,Firefox 虽然不会进入到忽略的 js 源码界面,但还是会运行进去的。但 devTools 则不会,碰上忽略的 js,使用 F11 进行单步跟踪时会表现得和使用 F10 的 Step Over 一样,非常好。

下面是一个演示

References

  1. Tips and Tricks: Ignoring library code while debugging in Chrome