MSN:kakapowu at hotmail dot com (online during office hours);Gmail:kakapowu at gmail dot com (recommend!)点击这里给我发消息
Gearman是一种分布式的计算技术,一种可以发送任务给其他服务器,或者进程的通用的应用框架,比消息队列系统,web service更高级。

特点:开源,简单快速,多语言支持,跨平台,无单点故障

用途:
1、搭建分布式的应用环境;
2、整合多语言的系统;
3、提供同步或者异步的队列机制;
4、提供并行计算支持

架构图
点击在新窗口中浏览此图片
Gearman本身不做计算,只是启用了守护进程接收来自client端和worker端的消息,它并不push消息,而是等着client端和worker端来pull,并可持续的保存消息队列。

流程图
点击在新窗口中浏览此图片
worker其实不一定需要一直是作为守护进程去接收来自server端的消息,任何时候启动worker,它都可以主动去server端接收任务,并处理。这可以理解为异步的过程。这跟web service是有很大的区别。


负载均衡设计图
点击在新窗口中浏览此图片


Yahoo! 和Digg 于2008年对Gearman用C进行重写,并开发了很多语言的client和worker的APIs,并且还支持MySQL的UDF。
安装和使用都非常简单,直接看快速入门,虽然是英文,也是很容易理解;

快速入门 http://gearman.org/index.php?id=getting_started

官网:http://gearman.org


标签云介绍
Posted in Javascript on 2010/07/23 / 评论(0) »
一种是flash方式:
点击在新窗口中浏览此图片
官网:http://www.roytanck.com/2008/05/19/how-to-repurpose-my-tag-cloud-flash-movie/

目前的官方版本对多字节,unicode的支持不行,比如中文无法显示。

不过效果是很好的,在wordpress是很出名的plugin。

google找了一个破解版本支持了中文,在附件会提供下载

一种是javascript方式:
点击在新窗口中浏览此图片
官网:http://jeroenvanwarmerdam.nl/content/resources/javascript/jscumulus/jscumulus.aspx
官方的版本效果差点,如example :http://jeroenvanwarmerdam.nl/content/resources/javascript/jscumulus/js-cumulus.html

我研究使用了一下,加了一下overflow;


可怕的两周岁
Posted in 生活感悟 on 2010/07/21 / 评论(0) »
可怕的两周岁
 或许你的宝宝昨天还是天使,今天就开始成为挑战你忍耐力的恶魔。斯波克有句话形容2岁的孩子,说“可怕的两周岁”,听上去有些匪疑所思。但是,不可否认,孩子这时候会有许多矛盾的特点:既有依赖性,又有独立性;既可爱又可恶;既大方又自私。有许多令人兴奋的事情都发生在这个阶段,所以该阶段无论对父母还是孩子都是一个挑战。

■ 心理探秘
这个时期的宝宝正处于独立期,开始表现出自发性。想睡觉了、肚子饿了、感到疲倦了、对自己能力未达到理想状态等,一点小事情都可能引起宝宝发脾气。这就是“可怕的两岁儿”,他正在渡过他人生里的第一次反抗期。

■ 理解这个时期的孩子
首先父母要理解宝宝在这个时期的拗劲,他们并非想故意和你作对,是心理发育的不平衡使他天性如此。创造一个良好的家庭环境本身就会使宝宝减少任性。父母平时应尽量避免对他的环境做较大的变化,因为这种超过他心理接受能力的外界刺激会使宝宝感到总是无法预料和处理即将发生的变化。这让他恼怒、害怕,只能以哭闹来应付这些变化。当然在原则性问题上,我们的确主张家长要制定一些严格的规定,但你要仔细考虑这些规定的内容和适用范围。

■ 妈妈的妙招
宝宝总会长大,也总会进入这个“难搞”的两岁,就让我们来看看各家妈妈们是怎样机智地应对宝宝的反抗期。
贴心提示:
1.提前预留充足的时间让宝宝自己动手,在打算帮忙而宝宝说“不”时,就放手让他自己去做;
2.面对宝宝的发脾气,爸妈要找清原因,区分宝宝需求的合理性,坚持一定的原则,让宝宝学会自己控制情绪,不能一味让步,否则容易使宝宝任性;   
3.多给宝宝一些动眼动脑和动手的机会,让他自己去感受去实践,有利于开发宝宝的智力;   
4.经常聆听宝宝的讲话,让宝宝表达自己的想法,对宝宝的心灵成长起极大的作用。

■ 对孩子的过分要求给以拒绝时要注意你的方式
很多家长误认为拒绝孩子就是简单冷漠地说声“不行”或者给予一顿暴打。其实对孩子来说,妈妈置之不理的表情和实际行动比语言更有效。等他安静下来,妈妈再主动邀请他玩新游戏,或把他心爱的玩具拿给他,以转移他的注意力。换句话说,对待宝宝的过分任性,要立场坚定,态度亲切。
- 紫菜不仅含铁丰富,而且含维生素B12,铁和维生素B12都是造血所必需的营养素。可以适量给孩子添加紫菜。紫菜每次食用15克为好。为清除污染、毒素,食用前最好用清水泡发,并换一两次水。胃肠消化功能不好或者腹痛便溏的宝宝应少吃紫菜。

违拗症  
   孩子到了两三岁的时候,好象是天性促使他们自己做决定,而不允许他人干涉。但是这么大的孩子认识世界毕竟有限,因此在自行做决定和反对外来压力时心里很紧张。正因如此,要想和两三岁的宝宝友好相处可不是一件容易的事。

■ 就爱说“不!”
无疑,这就是所谓的违拗症,或是对父母权威的挑战。违拗症是一种经常发生的相当正常但却令人痛苦的行为,在孩子的第2年中至少会持续6个月。在某种意义上,这个阶段可以说是青春期的预演。在他们简单的人生当中,宝宝第一次开始认识到自己是个独立的人。当你让宝宝把某个东西还给你,而他抓着那个东西不放,并说“不,我的”,你就会知道他已经有了自我意识。随着他会说的词汇的增加,他会开始使用自己的名字,对自己的玩具表现出占有欲,开始对衣服有所挑剔,并且开始抗拒你的一些简单要求。他会开始要看看违背你的意志的后果。“不”这个词对他充满了魅力。
孩子拒绝做你想要他做的事情是完全正常的。他这么做并非有意让你生气或是故意违抗你的意旨。他之所以这么做是因为他发现原来自己也是一个个体,他正在尝试自己做决定的能力。

■ 爸爸妈妈要理解自己的孩子
既不要过多地干涉宝宝做什么,也不要催促他做什么。尽可能地多说些有趣的事情来引逗他去按你的意思去做。家长固然是要制定些严格的、持之以恒的规矩,但是要仔细考虑这些规矩的内容和适用范围。如果发现自己对孩子说“不行”的时候大大地多于“行”,就可能是你制定的规矩太多了。另外,如果家长一味地妥协,孩子就会被宠坏。所以,关键是如何在这两者之间找到均衡。

■ 巧妙地给宝宝选择的权力
有时你可能会跟他解释,但他仍然不想做你要求他做的事情。这是因为他想要自己做出选择。
“这一阶段如果给孩子提供选择项让他自己做出选择,会有助于锻炼他的决策技巧。“你是想穿你的绿外套呢还是黄外套?”“你是要自己走呢还是要抱着?”只要孩子们选择其一,你的短期目标就达到了。   
但你需要确保你提供的选择项是你自己能接收的。如果你是要去某个地方,就别说:“你是想去呢还是在家里呆着?”如果孩子选择在家呆着,而你又必须要去,那你的孩子得到的教训就是他的选择无关紧要,你提出选择时并没打算说话算数。
还有,威胁也不是一个选择。“穿上外套,否则我就揍你/把你自己留在家里/再也不带你出门了。”这可不是选择,而是威胁。威胁只会导致你的孩子害怕你。并且还会给父母设下一个陷阱:如果你的孩子还是拒绝穿外衣,你就只好把你的威胁变成现实,这样,只能使情况更加糟糕。
主要从安全Security,性能Performance,代码整洁度Code cleanliness角度考虑

- register_globals = Off         [Security, Performance]
- register_long_arrays = Off     [Performance]
- display_errors = Off           [Security]
- log_errors = On                [Security]
- output_buffering = 4096        [Performance]
- register_argc_argv = Off       [Performance]
- magic_quotes_gpc = Off         [Performance]
- variables_order = "GPCS"       [Performance]
- error_reporting = E_ALL        [Code Cleanliness, Security(?)]
- allow_call_time_pass_reference = Off     [Code cleanliness]


安全模式必须要开启
safe_mode = on
safe_mode_gid = off

启动safe_mode,会对许多PHP函数进行限制,特别是和系统相关的文件打开、命令执行等函数

safe_mode_include_dir = [WEBSITE]

运行文件目录
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_

open_basedir = [WEBSITE]

必须要禁用的函数

disable_functions=exec,passthru,popen,proc_open,shell_exec,system,phpinfo, assert

建议禁用的函数disable_functions=chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,
file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

expose_php = Off

关闭错误信息提示
display_errors = Off

关闭全局变量
register_globals = Off

不允许调用dl
enable_dl = Off

关闭远程文件

allow_url_fopen = Off
allow_url_include = Off

http only 开启
session.cookie_httponly = 1

https secure 开启
session.cookie_secure = 1

明确定义upload_tmp_dir设置为系统tmp目录
assert这个函数在php语言中是用来判断一个表达式是否成立。返回true or false;
例如

<?php
$s = 123;
assert("is_int($s)");
?>


从这个例子可以看到字符串参数会被执行,这跟eval()类似。不过eval($code_str)只是执行符合php编码规范的$code_str。assert的
用法却更详细一点。assert_option()可以用来对assert()的进行一些约束和控制;

默认值
ASSERT_ACTIVE=1 //Assert函数的开关
ASSERT_WARNING =1 //当表达式为false时,是否要输出警告性的错误提示,issue a PHP warning for each failed assertion
ASSERT_BAIL= 0 //是否要中止运行;terminate execution on failed assertions
ASSERT_QUIET_EVAL= 0 //是否关闭错误提示,在执行表达式时;disable error_reporting during assertion expression evaluation  
ASSERT_CALLBACK= (NULL) // 是否启动回调函数 user function to call on failed assertions

如果按照默认值来,在程序的运行过程中调用assert()来进行判断表达式,遇到false时程序也是会继续执行的,这在生产环境中这样使用是不好的,而在开发调试环境中,却是一种debug的不错的方式。特别是用上callback的方法,可以知道具体的出错信息。例如


<?php
// Active assert and make it quiet
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);

// Create a handler function
function my_assert_handler($file, $line, $code)
{
    echo "<hr>Assertion Failed:
        File '$file'<br />
        Line '$line'<br />
        Code '$code'<br /><hr />";
}

// Set up the callback
assert_options(ASSERT_CALLBACK, 'my_assert_handler');

// Make an assertion that should fail
assert('mysql_query("")');
?>



所以,php的官方文档里头是建议将assert用来进行debug,我们可以发现还有一个开关ASSERT_ACTIVE可以用来控制是否开启debug。

现在问题就产生了,如果程序员在开发的时候在代码中留下了很多assert(),然后在程序发布的时候关闭执行,设置assert_options(ASSERT_ACTIVE,0);这样做是否可行?有没有安全问题?

我的建议是,既然assert主要作用是debug,就不要在程序发布的时候还留着它。在程序中用assert来对表达进行判断是不明智的,原因上文说了,一个是在生产环境中assert可能被disabled,所以assert不能被完全信任;二是assert()可以被继续执行;而如果在生产环境让ASSERT_ACTIVE=1,那这个表达式字符串可以被执行本身就存在安全隐患。例如


<?php
function fo(){
  $fp = fopen("c:/test.php",'w');
  fwrite($fp,"123");
  fclose($fp);
  return true;
}
assert("fo()");
?>







兼容浏览器的作法:


<form name="seachfrm" method="post">
<ul>
    <li ><input type="checkbox" checked="" value="150" name="selstores[]" > 世茂滨江店</li>
      <li><input type="checkbox" checked="" value="151" name="selstores[]" >众鑫店</li>
    </ul>
</form>



var len = document.forms['seachfrm'].elements['selstores[]'].length;
  var c=0;
  for(var i=0;i<len;i++){
    if(document.forms['seachfrm'].elements['selstores[]'][i].checked){
      c++;
    }
  }



<?php
//输出array();
print_r($_POST['selstores']);
?>
分页: 1/26 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]