手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

PHP笔记

1、老王的乱炖中写了一个例子。

写代码要细心【http://hi.baidu.com/thinkinginlamp/blog/item/5e8062d9b33ccc2110df9b2a.html】

看一段PHP代码,设想一下它的输出结果,可以用来做面试题:

<?php if ($a = 100 && $b = 200) { var_dump($a, $b); } ?>

我眼睛一闭就随便想了一下$a=100,$b=200。然后看标题是写代码要细心。再仔细看看。才发现。。。额,我错了。

2、yaml

yaml这东西有据可证以来,好象在国内,应该算是QeePHP最早拿来做应用(我是指开源项目中),确实这东西挺方便【现在新浪sae的配置文件就是用yaml的】

初学者可以看看http://www.lanyg.com/blog/?p=63,Tim在这里写了一些简单的入门。不过我相信,足够你使用了。

yaml主要还是写起来方便。而且不用过多的担心语法(xml还需要闭合。array的话也需要注意PHP语法),yaml反正解析出来,要么不对,要么就正确。至少不会报一些奇怪的错误。

3、HTTP协议。

这篇也是来自于tim的博客:http://www.lanyg.com/blog/?p=33,他也是转载的csdn的文章http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx,原作者是jeffrey,内容挺长。不过如果你想要模拟http POST和GET数据,你真的可以看一下这一篇东西

它介绍了【HTTP协议详解之消息报头】,也教你如何用telnet查看http协议的通讯过程(当然现在我们都是用firebug或者fildder之类的工具),文章最后介绍了一些补充协议,如代理(proxy),通道(tunnel)等。值得一看。

Tags: yaml, operation

typecho 插件开发(三)

在typecho开发插件的时候,很有可能会用到关联插件(即,部分信息需要从其他插件里来读取)因此,在插件激活的时候就得先判断是否关联插件已经启用。

最初我的代码是:

PHP代码
  1. $mailOptions = Typecho_Widget::widget('Widget_Options')->plugin('CommentToMail');  
  2. if(emptyempty($mailOptions)){//这里会出现两个empty,这是编辑器的关系,代码中只有一个  
  3.     throw new Typecho_Plugin_Exception(_t('对不起,数据库备份插件需启用CommentToMail插件。'));  
  4. }  
但是在这样处理的时候,会提示“找不到CommentToMail插件的配置信息”,直接就抛出异常

于是代码改成:

PHP代码
  1. try{  
  2.     $mailOptions = Typecho_Widget::widget('Widget_Options')->plugin('CommentToMail');  
  3. }catch(Exception $e){  
  4.     throw new Typecho_Plugin_Exception(_t('对不起,数据库备份插件需启用CommentToMail插件。'));  
  5. }  

于是这样的出错提示信息就较为友好了。

由于关联了其他插件,因此在处理的时候,还要再判断这个$mailOption是否存在,因此我把它设为了protected static $mailOptions,然后在要处理的页面会判断这个变量是否为empty。如果是后台处理就抛出异常,前台处理则直接return;不作继续

Tags: typecho, 插件, 技巧

cookie,又见cookie

提起这个问题,很沉重。在cookie上我遇到很多很多奇怪的问题了(其实只是看起来奇怪而已)

一一列一下吧
1、页面是200状态,就是打不开。一直显示正在打开。但其他页面正常(首页并无其他特别的长耗时的代码)
2、页面显示XXX错误(不记得代码是多少了。。以前在做测试的时候遇到过)
3、cookie明明注册了。但却总是无效。

一一列解吧。
1、cookie数过多了,事实上,我没有设很多的cookie,只是,我在访问的时候,很多其他链接也帮我带上了cookie,导致在我这个域名根下,cookie数量过多。
Cookie常识 一文中我转载过DBA notes里的几句话:Cookie 是个很有趣的话题。根据 RFC 2109 的描述,每个客户端最多保持 300 个 Cookie,针对每个域名最多 20 个 Cookie (实际上多数浏览器现在都比这个多,比如 Firefox 是 50 个) ,每个 Cookie 最多 4K,注意这里的 4K 根据不同的浏览器可能不是严格的 4096 。别扯远了,对于 Cookie 最重要的就是,尽量控制 Cookie 的大小,不要塞入一些无用的信息。
解决方法:清空cookie或者删除非本站cookie
2、cookie长度超出限制了。当时是在apache的服务器下,我用的是firefox,出错情况是提示cookie超长(错误代码记不清,最后是清空cookie解决 )
这里也有一位朋友有类似情况:Cookie 太大导致页面无应答的问题,这是他的总结:

  1. 好像在IIS6下特定环境下就会出现这个问题,因为当时整个项目有10多台Web服务器做了F5,但只有2台出现这个问题。针对这个问题,我在 IIS7下也进行了一下测试,发现当Cookie的大小达到30000多字节时,就会出现有应答为200的包,但应答的内容为空,在IE上显示为“  Internet Explorer cannot display the webpage ”,所以具体能使用cookie有多大,IIS6和IIS7下标准不一。
  2. 建议不要将用户配置等过大的信息写入cookie,搞不清楚什么时候IIS就出错了

3、检查一下服务器时间与本地时间是否一致。对于PHP5,有的人总是忽略了时差。检查一下吧。

最后:
1、对多窗口浏览器,其实很郁闷的,你设置的cookie如果是没有过期时间,即关闭窗口即自动删除时,如果不关闭整个浏览器,而关闭当前tab,那么,是无法删除的
2、对于swfupload,IE和FF下面会有不同的情况,传说中flash读的cookie是IE生成的,因此很多时间如果swfupload涉及到了用户登录情况时,总会不正常(后台在上传),记得把param中加个session_id的参数,POST过去。

BTW:这个,我真的很郁闷。有时候我的网站首页会无法打开,为什么呢?因为sablog(或者是我做的hacker)中生成了两个PHPSESSION的cookie,一个所属neatstudio.com,而另一个是.neatstudio.com,结果就导致了页面无法打开(看来,以后还是需要打开neatstudio.com后自动跳转到www.neatstudio.com才比较好,这样就不会出现类似的问题了。懒得改代码了。等 Session消失后就OK了。是不是太不注意用户体验了?)

Tags: cookie

笔记:json_encode和jquery等

一些笔记
1、json_encode与json_decode的。开花石头在村里说,如果json_encode是字符串,那么在解码的时候还是字符串而不是数组,这点与手册上写的不太一样(是指json_decode的第二个参数是true的情况)
    具体我没有测试,我想石头既然能够发出来那么一定是有这种情况发生,因此算是做个笔记

2、jquery。在使用$('.xxx').hover时,如何知道当前hover对象在整个$('.xxx')对象中的索引值。事实上,我早就知道有$('li').index()之类的用法,但真的一次都没有成功过。简单的例子:

JavaScript代码
  1. $('#test li').hover(function(){  
  2. alert( $('#test li').index(this) );  
  3. },function(){  
  4.  //...  
  5. });  

差不多就是这样。了解到索引值是多少后,就可以针对它们做很多事。$("xxx:eq("+index+")").text()等操作都可以操作了。

3、在InfoQ上看到有为PHP用户写的AS简单教程(InfoQ上的PDF下载时为显示404,请使用此链接:http://www.riameeting.com/magazine/pdf/RIAMeetingWeeklyReportNum24.pdf),这个版本是在线的,http://blog.csdn.net/lihe111/archive/2010/01/14/5189572.aspx

4、还是InfoQ,领域驱动设计这本书的简化版,原书我有,只是看infoQ上介绍说,这几章是精选出来的。因此想简单了解的话,确实不错:http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/zh/pdf/dddquickly-chinese-version.pdf

5、对于WEB开发人员来说,dreamweaver和fireworks等是必备工具,如果不是专业的前端人员,d8和f8就足够了。而且很小,只有100M都不到。因为这些不是正版所以我不提供下载地址。

Tags: json, jquery

新闻:开源公司 IronTec将推动PHP进驻Android平台

看到这个新闻不转载一下恐怕对不起自己。
本来都以为自己会学习scala然后进行android的开发了,现在看来,还有其他的途径啊。当然,效率可能不能保证吧?(小应用估计没大问题。)不过在看到新闻的同时也要想到,PHP做界面的话,可不一定就OK呀。

上新闻:

对Java心生厌恶的朋友们 不妨来看看Android上的新玩意--PHP。

PHP可不仅仅只能在互联网站上发 展,一个PHP for Android (PFA)网站表示他们将可以发布编程模型、工具盒文档让PHP在Android上实现应用。

该项目的主要赞助商是开源公司IronTec,PFA使用Scripting Layer for Android (SL4A),也就是Androd Scripting Environment (ASE)来实现这一点,您可以参看他们的网站来了解更多技术内幕。

【事实上,我并未找到这个网站,而对于ASE,其实在09年infoQ上已经有介绍】

Android Scripting Environment(ASE)项目为Android增加了脚本支持。通过安装ASE,我们可以在设备上编写脚本并执行。

虽然现在已经涌现出了不少工具用于开发Android应用,但如果能在设备上编写脚本将是一件很爽的事情,这样我们就可以直接在设备上进行试验并快 速编写原型而无需启动IDE、编译、部署等。

ASE通过两种手段来访问Android API。目前我们可以通过ASE使用Python及Lua运行时来运行脚本,这些运行时都是本地应用,他们通过JSON-RPC来访问Android API。

由于Android本身基于Java,因此我们还可以运行基于JVM的语言。目前可以使用的是BeanShell——Java语言的动态版本。基于JVM的解释器就 在ASE内部加载,无需间接的RPC调用。

ASE还计划让更多的JVM语言运行在Android上。虽 然JRuby早就能运行在Android上了,但却存在一些问题,首当其冲的就是Android使用了Dalvik VM(Android应用被编译成Dalvik VM字节码)。

有兴趣的话就去看看ASE 的SVN仓库吧,那上面清 楚地表明了未来的Ruby支持也将基于JSON-RPC

我们还可以通过Rhodes在 Android设备上使用Ruby。

大家都对ASE未来的发展拭目以待。iPhone不允许上面的应用自带解释器,而ASE却通过脚本扩展了Android,并且用户可以创建、编辑这 些脚本。

InfoQ原文:http://www.infoq.com/cn/news/2009/07/android-scripting

Tags: android, php, irontec