October 2008 Archives

原文:
http://phplens.com/phpeverywhere/node/view/23
总结了几点:
  • 如果一个单用户需要高速访问数据,最好使用自己的数据结构, php的array比较不错,insert速度是MySQL Heap的20倍, MySQL MyISAM的30倍. select的话性能更好.前提是你的内存足够大。
  • 不需要事务支持的MySQL速度基本很快了,CRUD是MyISAM的强项
  • MySQL Heap(内存表)的性能没有想象中的那么快, 要么就是MyISAM已经优化的很好了
所谓的语义化url,就是拿来一个url, 让非技术人员看一眼,大体上就能猜测出来是什么意思,也可以说是url美化, url mapping, url映射, uri pretty, Search Engine-Friendly URLs等等。
url美化车东的说法,url mapping则java味道很浓, uri prettySearch Engine-Friendly URLs貌似是著名的sitepoint的说法。
绝大部分站点实现语义化URL,基本上都是因为SEO的需要。以SitePoint讲解语义化URL实现的文章为例,
http://www.sitepoint.com/article/search-engine-friendly-urls/3/
这个URL基本上可以等同与
http://www.sitepoint.com/article.php?title=Search-Engine-Friendly-URLs&page=3

总结了一下,以example.com/handler.php?user=username&action=do&num=3这种URL
Apache以mod方式运行PHP实现语义化URL基本有以下几种形式:
1. /handler/username/do/3/
     1)使用url rewrite,在Apache启用Mod_rewrite来实现,这个是最简单的。
缺点在于:全部rewrite的负载都扔给Apache或者其他前端了。可以考虑使用Nginx/Squid/Lighttpd来做七层交换, Nginx是目前比较适用的7层交换工具,相比价格昂贵却性能底下令人诟病的F5七层芯片,每秒2~3万瞬发连接,70W并发连接而稳定服务的Nginx@CentOS & Gentoo是一个性价比足够高方案
    2)在Apache中, 设定ErrorDocument 404 /processor.php,  processor.php中第一行就是header("HTTP/1.1 200 OK"); , 然后再怎么处理REQUEST_URI是程序的事情了, 单点入口。
      缺点是accesslog全转到errorlog了,这个还是要处理的
    3)Apache中
        <Files article> 
        ForceType application/x-httpd-php 
        </Files>
    这样名为handler的php文件就可以解析到参数了。
    缺点是所有文件都经过php引擎来解析,性能上会相对低下。
2. /index.php/handler-username-do-3/
 index.php能接收到$_SERVER['path_info'], 作为单一入口很容易做MVC等的解析
3. /?handler-username-do-3.html
打印$_SERVER可以看到, query_string可以拿到handler-username-do-3.html部门,去除掉.html就可以通过默认的DirectoryIndex(比如index.php)来解析了


第一种和第二种URL都是通过实现folder的效果来实现向搜索引擎表达默认静态页的效果,第三种则是相对简单的伪·静态化实现方案。
我个人比较推崇第一种方案的第一个实现,让系统来实现7层交换,便于隐藏技术细节,也便于后台技术切换。
相比Apache+PHP的配置,Java和Python实现语义化的URL相比来说简单多了,这个算是原理上的差异吧。

今天上午,一个我经常买精品盗版碟的淘宝店主联系我说,说我买的24小时全集多收了我45块..准备退给我。回想了一下,最近几天做了如下好事:
1. 某小吃店老板结账多找了钱,还了
2. 周末逛IKEA的时候捡到一个手机,还了
3. 还是IKEA,一个小小男孩找不到他老爹了,碰巧他老爹刚才在我身边路过,直接带给他老爹了
4. 准备领养一个猫咪, 未成功,此猫比较怕生人, 直接吓得尿裤子了

大一的时候我捡了俩手机,都还了, 结果放暑假之前自己的手机丢了,过了几天班主任找我,说我的手机找到了。至于为什么是过了好几天,原因很简单: 捡到我手机的人把手机拿回寝室,周围的人都想出钱买这个"二手"手机,"卖家"很为难,最后受不了了,翻开我的电话本,找到标记为"班主任"的字样,还了。

平时积攒RP是多(三声)么重要的啊~
首先,Ajax是JavaScript-Based, 决定运行于浏览器中的它基本没法操作独立本地文件, 之所以说是伪·Ajax,因为是利用iframe来实现无刷新上传的。
无刷新的本质是在原先的Form中插入一个不可见的iFrame, 并且把原Form增加一个Target="$iFrame->Name && id", 通过操作这个iFrame来实现整体的面刷新, 并通过返回给iFrame的值来操作父级对象实现callback操作。
下面是关键代码
Head区的Javascript
<script language="javascript" type="text/javascript">
function startUpload(){
      document.getElementById('f1_upload_process').style.visibility = 'visible';
      document.getElementById('f1_upload_form').style.visibility = 'hidden';
      return true;
}
function stopUpload(success){
      var result = '';
      if (success == 1){
         result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>';
      }
      else {
         result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
      }
      document.getElementById('f1_upload_process').style.visibility = 'hidden';
      document.getElementById('f1_upload_form').innerHTML = result + '<label>File: <input name="myfile" type="file" size="30" /><\/label><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>';
      document.getElementById('f1_upload_form').style.visibility = 'visible';     
      return true;  
}
</script>


相关的html代码
<div id="content">
                <form action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" >
                     <p id="f1_upload_process">Loading...<br/><img src="loader.gif" /><br/></p>
                     <p id="f1_upload_form" align="center"><br/>
                         <label>File: 
                              <input name="myfile" type="file" size="30" />
                         </label>
                         <label>
                             <input type="submit" name="submitBtn" class="sbtn" value="Upload" />
                         </label>
                     </p>
                     <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
                 </form>
 </div>


处理的upload.php的功能代码
<?php
   // handle FileUpload Issues
    bla~bla~bla~
   if($UPLOAD_ALLOK == TRUE) {
      $result = 1;
   }
?>
<script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result; ?>);</script>

最终还是回归了iFrame......哎, 自己来实现浏览器的Form操作的想法实在是太可耻了

       2008年09月30日上午胡JT总书记前往安徽省滁州市凤阳县小岗村,说到:"不仅现有土地承包关系要保持稳定并长久不变,还要赋予农民更加充分而有保障的土地承包经营权。同时,要根据农民的意愿,允许农民以多种形式流转土地承包经营权,发展适度规模经营。同时,随着国家经济发展和财力增加,中央将不断加大强农惠农政策力度,大幅度增加对农业、农民、农村的投入,促进农业发展、农民增收、农村繁荣"。(链接)

      安徽省滁州市凤阳县小岗村是一个有旗帜意义的地方。1978年底,安徽凤阳小岗18户不想饿死的农民在一起赌咒发誓,签下分田到户"生死契约",成为中国改革的一个起点。在接下来的时段,这个明星村落不断受到中央和地方政府的关照,但它也无可逃避地经历阵痛:乱收费、干群冲突...而下周四即将召开三中全会,总书记在这里放话必然是有其特殊意义的:在家庭联产承包责任制的基础上再前进一步,允许农民以多种形式流转土地承包经营权,发展适度规模经营。
李昌平老师(河北大学中国乡村建设研究中心)的话讲就是:推进土地"永包制",加大土地流转,方便资本下乡,发展"公司+农户"的现代农业。


      现在农村很多人都出去打工,家里的土地以及其低廉的价格甚至倒贴出去租种(长期荒芜会被集体收回),这为大规模农业发展奠定了基础。但是,公司+农户的资本化农业是否真的是我们所需要的?
公司+农户的资本化农业是菲律宾的翻版,还是引用李昌平老师的话 --

       在菲律宾政府和知识精英的主导和支持下,西方农业跨国公司和本国资本家控制菲律宾农业和农村的金融保险、土地交易、农产品加工、流通、仓储、生产资料生产和销售、技术服务和基础设施等诸多领域。农民只能从事种植业和养殖业,大量自耕农和佃农在大公司的挤压下破产,被迫失去土地做资本家的农业工人。然而随着技术的进步,农业资本家和地主所需要的农业工人越来越少,大量的失地和失业农民涌进了城市。
  但随着韩战的结束和冷战的趋缓,城市的就业岗位增长下降,进城的很多"农民工"找不到工作,失业问题转化成社会问题和政治问题,军人走上政治舞台,政局不稳、社会动荡,经济衰退,反过来失业更加严重,以致恶性循环。菲律宾的劳动力源源不断输出日本、韩国、台湾、香港及世界各地,菲佣成为菲律宾整个国家的"名片"


      胡主席既然放话了,那么这个事情应该就是板上钉钉的事情了。换句话说,李克强的导师 -- 伟大的厉以宁老师的政策要在全国开始实施了。虽然李昌平老师的政策有点保守, 但是本质上来说,在没有任何制度的法律保障民众权益的前提下,厉以宁的政策只可能成为中国版本的圈地运动,只不过中庸一点而已。

      改革开放之所以能在邓小平的领导下成功,建立紧迫感,组成强有力的领导班子,规划远景,远景宣灌,新做法的制度化几点必不可少,但是最核心的不是他组成的领导班子,而是在于有两万名受文革压迫的有充分行动力和远见卓识的中层干部。随着这两万名干部的逐渐退休, 新上任的年轻干部的mafia化,加上只会哭鼻子和乱花钱的宝宝总理,前景不妙。

      "我看,胡风、储安平倒要成为历史人物,所谓历史人物,是要几百年后自有定评。"让民盟第一代领导人章伯钧因言获罪的, 就是这句话。依我看,大家现在都要变成历史人物了