【转载】说说JSON和JSONP,跨域请求原理

 前言:

由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。

当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket也可以实现与服务器的通讯和服务端推功能,但这两种方式都有其局限性,前者需要PhoneGap支持,后者要求用户设备必须支持WebSocket,因此都不能算是ST2的原生解决方案,原生的只有AJAX。

说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。

但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。

JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。

既然随便聊聊,那我们就不再采用教条的方式来讲述,而是把关注重心放在帮助开发人员理解是否应当选择使用以及如何使用上。

继续阅读

写给.NET程序员,不要困在自己建造的盒子里(转)

此文章的主旨是希望过于专注.NET程序员在做好工作、写好.NET程序的同时,能分拨出一点时间接触一下.NET之外的东西(例如10%-20%的时间),而不是鼓动大家什么都去学最后什么都学不精,更不是说.NET不行或劝大家放弃.NET。恕我愚钝,此主旨在文中表达不够清楚,看评论中很多朋友误解了,特此说明。

另外,本文中的观点并不全部是我个人的想法,相当一部分来自我以前聊过天的某些大牛,他们很多来自微软、百度、腾讯等知名企业,并且很多已经成为技术骨干,我曾经从他们那里受益匪浅,于是我把他们的指教结合自身的经验和理解写成此文。这就是此文的来源。
继续阅读

(转)做技术的感悟。

在博客园看到这篇文章,感觉很有道理,故转过来。

又来献丑。本来想写些关于技术方面在面试的可笑问题。不过收到一封邮件,主要就是一些网站好不好和赚钱的的一些问题,所以想下,写下这些问题很有意义。

一般对于一个职业的Coder来说主要薪水主要有三个部分。月薪水,项目奖金和一些年终奖福利这里。部分高端的职位有年底分红和奖金。当然还有一些有单子赚外快。这个范围大概在月薪2K – 32K之内。当然据说在这个之上的也有 不过我没见过。(估计园子在这之上的就有,大牛啊 羡慕)。对于只是工作得来的薪资来说 这个算是中上。有人不信,我有个亲戚在中央工作的一些公务员也就这个水平。技术人员一般薪资稳定,所以就缺少一些激情文化。在这个CPI,房价一路狂奔的年代,这点也能买房子,不过还清差不多要脱一层皮,再加上户口社保以及养老医疗等诸多的问题,大家都很浮躁。 继续阅读

服务器返回状态码

HTTP 400 – 请求无效
HTTP 401.1 – 未授权:登录失败
HTTP 401.2 – 未授权:服务器配置问题导致登录失败
HTTP 401.3 – ACL 禁止访问资源
HTTP 401.4 – 未授权:授权被筛选器拒绝
HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败
HTTP 403 – 禁止访问
HTTP 403 – 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
HTTP 403.1 禁止访问:禁止可执行访问 继续阅读

Android桌面widgets和AppWidget框架(译)

【Android开发者】aimself

本文翻译自Android Developers Blog:Introducing home screen widgets and the AppWidget framework

Android 1.5 SDK一个令人兴奋的新特性是AppWidget framework,这个框架允许开发者开发widgets,这些widgets可以被用户拖到用户的桌面并且可以交互。widgets可以提供一个full-featured apps的预览,例如可以显示即将到来的日历事件,或者一首后台播放的歌曲的详细信息。

当widgets被拖到桌面上,他们被指定一个保留的空间来显示应用提供的自定义内容。用户可以通过这个widget来和你的应用交互,例如暂停或切换歌曲。如果你有一个后台服务,你可以按照你自己的schedule更新你的widget,或者使用AppWidget framework提供的一个自动的更新机制。

在更高层次上,每个widget就是一个BroadcastReceiver,他们用XML metadata来描述widget的细节。AppWidget framework通过broadcast intents和你的widget通信,例如当需要更新的时候。Widget更新使用RemoteViews被构建和发送。这个RemoteViews被包装成一个layout和特定内容来显示到桌面上。 继续阅读

“iconv() : Detected an illegal character in input string”的解决办法

PHP传给JS字符串用ecsape转换加到url里,又用PHP接收,再用网上找的unscape函数转换一下,这样得到的字符串是UTF-8的,但我需要的是GB2312,于是用iconv转换,开始是这样用的
$str = iconv(‘UTF-8’, ‘GB2312’, unescape(isset($_GET[‘str’])? $_GET[‘str’]:”));
上线后报一堆这样的错:iconv() : Detected an illegal character in input string

考虑到GB2312字符集比较小,换个大的吧,于是改成GBK:
$str = iconv(‘UTF-8’, ‘GBK’, unescape(isset($_GET[‘str’])? $_GET[‘str’]:”));
上线后还是报同样的错! 继续阅读

Apache服务器使用.htaccess实现图片防盗链

      .htaccess文件将影响其所在的目录及其子目录,因此,如果我们要保护的内容位于网站内多个目录下,可以考虑将其放在根目录下;而如果图片有单独的子目录如“/images/”,则只需将其放置在该目录下(当然也可以放到根目录中)。

      需要注意的是,如果通过FTP方式将创建好的.htaccess上传到服务器上,传输模式应为ASCII而非Binary。上传到服务器后,应将其属性通过CHMOD修改为644 或“RW-R–R–”,这样,可以保证服务器能够使用同时无法通过浏览器修改,当然,.htaccess的可读属性也存在一定的风险:攻击者可通过它找出您要保护的对象或认证文件位置——解决办法是将认证文件.htpasswd放到网站根目录之外,这样,便无法通过网络找到它了。
使用.htaccess禁止盗链
继续阅读

[评论]跟你比起来,大部分人都像笨蛋

在互联网业界,大多数人都知道Firefox和Explorer之间的区别。我们还知道FTW是什么意思,知道ASP,PHP和RoR之间的区别。或至少知道它们之间存在区别。 如果你遇到一个企业家,他从来没听说过Digg,Google Apps或Freemium模式,你也许会感到惊奇。是吗?

但也许只有我们会这样;只有我们这一小撮数码精英会花时间了解业内的几乎所有的最新动态和趋势,使自己的知识保持更新。地球上的其他人呢?大部分都可以忽略不计,这样正好。但是,当你试图搞清楚你的客户想要的是什么的时候,问题就来了。经常会是这样,他们根本不能明白你在说什么。这有些例子: 

1:我父亲最近对我说他不知道如何回复一个人的短信。如果他拿的是一个很老式的手机,那也就没什么异议了,可他拿的是iPhone。这是个很难的问题吗?那好,他启动了“短信”程序指给我看。他指着这个界面,有点恼怒,说“那个该死的回复按钮在哪??”。我都被能傻了。iPhone的界面可以说是最优雅、最简单易用的界面了。然而,上面却没有我父亲需要的一个一目了然的元素,一切都没有意义了:没有回复按钮意味着他不知道如何去回复。 

2:几年之前,我在维护一个在线生日日历程序。界面非常的简单。它按月显示日期,在最上面有个大的红色按钮写着“添加生日“。按钮这么大,我认为人们不可能看不到它。不幸的是,他们真的看不到。在求助平台上我一天收到了100条求助信息,其中有60条第一句话是“我不知如何去添加一个生日“。起初我真是非常的不耐烦,这些愚昧的家伙宁愿费力发邮件给我,也不愿意多花两秒钟上下找一找。然而我之后做了一些实验,发现所有人都认为他们只需要在日历上点一下就可以添加生日。如果这么不灵,他们就会认为程序有问题。是我的错,不是他们。 

3:在最近的一个招待会上,一个女士走过来告诉我,她的女儿也叫‘Loïs’。她说”我一直想遇到你,因为我发现你知道怎么把变音符号写到‘i’的上面,你能告诉我怎么在iPhone里这么做吗?”我解释给她,第二天在公司午餐的时候,我把这个故事告诉了同事。我一边笑一边说“很显然,有些人仍然不知道如何在iPhone了打出特殊字符!”。没人跟着我笑。然后有个人说“那个,我也不知道。你是怎么做到的?”然后另外一个人也承认也不知道,然后我发现没有人知道。 

4:Patrick不久前接到他爸爸的一个电话,他爸爸想在网上找点东西。Patrick告诉他一个网址,他爸爸看起来不太明白他在说些什么。于是 Patrick说“你不知道吗,这是一个网站的网址”。他爸爸仍然不能理解,于是Patrick说“就是你在浏览器地址栏里输入的那行字符”,之后他爸爸答复道“我一点不知道你说的东西,我只是点击了一下上网的那个蓝色图标,Google就出来了,我输入了我想要的东西,然后就找到了”。很显然,你即使是不知道每个网站都有一个唯一的网址,你也能在网上订票,查看邮件,以及所有网上的事情。 

所有的这些故事的用意是什么?如果你能在iPhone或电脑上打出想 ü, é 或 © 这样的特殊字符,如果你会使用你的iPhone上的大部分的应用,你就是我们这一小撮专家中的一员。不要以你为标准,你是个例外。使你的应用程序,网站,工具尽可能的简单,一定要找外人测一测。 

那些人不是真正的笨,只是你比他们知道的多一些。不要让你的知识蒙蔽了自己。 

[英文出处]:Compared to you, most people seem dumb Compared to you, most people seem dumb

转载自:http://u.dudibo.com/e92143/

好用的PHP探针,iProber

iProber – PHP探针
主要功能:
1、服务器环境探测:CPU、在线时间、内存使用状况、系统平均负载探测(支持LINUX、FreeBSD系统,需系统支持),操作系统、服务器域名、IP地址、解释引擎等
2、PHP基本特征探测:版本、运行方式、安全模式、Zend编译运行及常规参数
3、PHP组件支持探测:MYSQL、GD、XML、SESSION、SOCKET等组件支持情况
4、服务器性能检测:整数运算能力、浮点数运算能力、数据IO能力
5、自定义探测:MYSQL连接测试、MAIL发信测试、函数支持情况及PHP配置参数v0.024 更新:
1、修正物理内存和swap分区使用率计算不准确的BUG。

注: 压缩包内有三种不同风格,简体中文和繁体中文共六个文件, 程序功能无任何差异

更新日期:2007-3-18 23:48:40 最新版本:v0.024 [演示] [下载]

  继续阅读