从php源码看print和echo的不同

print和echo是php中打印常用到的两个函数,从php源码去看这两个函数的实现以发现他们的区别。

Print的实现

void zend_do_print(znode *result,const znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);

opline->result.op_type = IS_TMP_VAR;
opline->result.u.var = get_temporary_variable(CG(active_op_array));
opline->opcode = ZEND_PRINT;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
*result = opline->result;
}

 
Echo的实现

void zend_do_echo(const znode *arg TSRMLS_DC)
{
zend_op *opline = get_next_op(CG(active_op_array) TSRMLS_CC);

opline->opcode = ZEND_ECHO;
opline->op1 = *arg;
SET_UNUSED(opline->op2);
}

 

Echo处理除了指定opcode以外,还将echo的参数传递给op1,这里并没有设置opcode的result结果字段。
从源码看出print和echo的区别来,print有返回值,而echo没有,如果尝试将echo的值赋值给某个变量或者传递给函数都会出现语法错误。

中国式技术合伙人

滴答滴答,时间一分一秒过去,又一个项目开始了又结束了。

做技术柒年有余,混迹于几个公司,进进出出,也慢慢的在成长,常常想自己做点什么,做个电商站,或者做个创意型的网站,看到了同行做起了U3D,也想着尝试一下,但往往浅尝辄止,真正能够实施下来的还是那些提供真金白银的项目,签了合同,拿了首付,在合同期内或者超期完成了项目,期间也通过做项目学习者。

真正的闪光的想法,因为没有资金的投入,往往无法实施或者在这种无止尽的有价项目中消散殆尽。

今天又办了一个件让自己很不爽的事情,似乎是有违原则,但通过合伙人的一通聊天,还是做了一个并不能让自己问心无愧但不伤大局的选择,关于这个大局,其实我并不认为我这样的选择会对事情有决定性的影响,也许有,但通过技术的思维还是感觉有些牵强,我总是认为事情往往不会按照所设想的发展。

做一个技术合伙人,需要有一个觉悟,至少要说服家人,创业的路是艰辛的,想想是做好这样的觉悟了吗。在创业的途中,可能还要接一些项目来维持一下生活,但这种项目的思维和创业项目的思维能否很好的分开,如果不能很好的解决,在最后往往都是问题。

很多老板都会提供各样的机会,老板的想法是利用技术实现自己的目的,而作为一个螺丝钉,在提供衔接的时候,考虑一下你所得到的机会和项目是否利于你的创业发展,如果不能那么果断的砍掉。

做项目的心态,也要慢慢转化为带团队的心态,要养活的是一个团队而不是自己,能力越大责任越大。

保持学习的心态,别让一缸大米就满足了你的中国梦。

共勉,希望做出一番事业,否则,帝都,I AM COMING.

资源 + 老板

不是所有人都适合做老板。

做一个好的老板需要长远的眼光,需要胆魄,需要学识,需要时机来帮助成功。

这个社会浮躁了之后,多了很多一夜暴富的梦想,总有一群人在车库咖啡或者在一个狭小的办公室,装着大大的梦想。这是好事还是坏事?

当然是好事,多了这么多创业的人,才会有更多的一夜暴富的神话,才会前赴后继的有更多的人被拍死在沙滩上。

工作到一定程度后,往往就骚动起来,就想做点什么,自己搞点什么,说不定也会一夜成名,从此踏上康庄大道。财富总是聚集在少数人手里,少数人有着无限的优越感和更多的资源,资源生出更多财富,以此剥削领导更多的无知青年,由此贫富差距越拉越大。

互联网发展到今天,技术入股已经成为了一种很流行的方式,一个技术想要上位,也许是一个很好的办法,但在折腾的时候不要忘记你最初的梦想,你是一个码农,那么先好好把你的代码写好,写到很好,随后也许你会成功。

Her

“斯嘉丽是一个女神,声音也是”.

从小红线的微博中得知了这个片子《Her》,随后的这个片子夺得了奥斯卡最佳剧本,于是成为必看的影片,并早早的下载下来。

忙完了一阵,抽了个空看了开头,于是成功的熬夜看完了整个影片。

Her is OS1.

在一个计算机技术高度发达的世界,人类和计算机的交互已经到了方方面面。当这个有着智能,可以自主学习的OS1被男主购买回家,并回答了一系列的问题后,我已经能感觉到他们会发生爱情。

当一个完全为你设计,符合你脾气的人与你每天对话,陪你吃饭,陪你玩游戏,陪你调侃这个世界,陪你过生日,虽然没有见面,可是感情这东西不需要见面。

当OS1进化到同时和几百个人一起恋爱的时候,男主受不了了,我想我也会受不了,爱情是自私的,但是进化到了这种程度,人类已经无法理解了。

于是乎,我看不懂了这个结局,所有的OS1集体自杀还是。。?

只是希望男主和女二号,美好的生活在一起吧,看他们挺相配的。

技术迷思

“技术能解决的问题都不是问题”。

突然最近这句话常常被听到。莫名其妙的进了一家传媒公司,之前在一个软件公司是以技术为指导,来到这里了,我发现技术完全不被重视,完全就是一种金钱的置换。

前路何行。技术的存在本来就是为解决问题而存在,而解决问题为了能够赚取利益,如果技术不是问题,那么什么是问题。也许是方案,那么方案是什么组成的?我理解的也许不单纯是方案本身,而是方案整体的构架,涉及到技术,人员和成本核算等,人各司其事,也说不上什么重要什么不重要,但是要说到有钱什么都能做这件事,我觉得还真是不一定。技术实施的主体是人,人的技术能力和经验水平各不相同,给了足够的钱也不一定能够出相应的结果。

面对着层出不穷的技术,该如何选择?路线怎么走,架构,技术本身?方案,项目经理?

呵呵

2013 Past, 2014 Fresh

“Hope you have a nice time up there, Yun.”

2013 Past. 过去式了.

没写什么年终总结,也没怎么总结,great,2014年的一个月也要过去了,我是否该回头思考一下,或者驻足总结一下,各种项目,各种琐事。

2013年

宝宝健康成长。

公司发展遇到了问题,各种争取和妥协,到了目前这种不上不下的状态。

自己的项目多了起来,但是空闲的时候少了很多。

课程在一年的突击中上完了,woo..

有和很多小伙伴打成一片,不算一片。

酒量没涨,还是2瓶封顶,再多就吐

性格还是不够大气

电视剧永远看不完

2014年

EHOOTEK

CY

TWINIUM

FAMILY

FRIENDS

TELEPLAY

MOVIES

BOOKS

 

[Joomla]Internal Server Error–文件夹权限

早上从同事那里得知了wget命令,随机在两台服务器上试了一下,果然很爽达到了340m/s ,传输了一个200多兆的文件,基本是瞬间完成。

在ssh下使用wget 使用For exmaple.

[code]

wget http://www.gobigv.com/xxx.zip

[code]

配置好了Joomla网站访问administrator, 发现提示Internal Server Error, 以为是数据库的问题,随即重新配置了数据库。发现问题还在

随即通过flashfxp查看administrator文件夹权限为777,  应该是unzip时候默认生成的权限,改为755后,问题解决。

为什么777和755会有这种差别?

从Joomla docs看到

Depending on the security configuration of your Web server the recommended default permissions of 755 for directories and 644 for files should be reasonably secure.

推荐在服务器上使用对文件夹 755, 文件644的权限。

777的权限文件夹服务器报错,这个报错在哪里配置的? 是 apache默认的配置吗?

Magento: Fatal error: Call to a member function setData() on a non-object

升级Magento 到1.7之后,想在后天添加一个用户System->Permissions -> Users -> Add new user

点击后提示错误

Fatal error: Call to a member function setData() on a non-object in /app/code/core/Mage/Adminhtml/controllers/Permissions/UserController.php on line 93

[code]

if (isset($id)) {
$breadcrumb = $this->__(‘Edit User’);
} else {
$breadcrumb = $this->__(‘New User’);
}
$this->_initAction()
->_addBreadcrumb($breadcrumb, $breadcrumb);

$this->getLayout()->getBlock(‘adminhtml.permissions.user.edit’)
->setData(‘action’, $this->getUrl(‘*/permissions_user/save’));

[/code]

 

恢复到1.6的代码,即可运行

 

使用Cufon不显示中文字符的解决方法

Cufon 是一个用来替代 sIFR 框架, 实现在网页中对文字字体进行渲染功能的纯 JavaScript 开源类库(cufon-yui.js)。
为什么要使用 Cufon:
在web开发中,经常面对的一种“冲突”,即“字体(Font Family)冲突”。
通常的这一冲突总是爆发于 Web 页面的设计者(Designer)和开发者(Coder)之间。在很多场合下,Web 页面的设计者都会倾向于在他们的页面设计稿中,为文字附加使用一些“特殊”的字体和特效,以此来展示他们卓越的设计能力。比如设计一个公司的Logo,图 片上的一些特殊字体是从ps字库中调出的,当然这些文字在图片上显示肯定是没有问题的,但是如果要在网页中用文本来显示这些效果,就是会让开发人员抓狂 了,因为浏览器并不支持所有的字体,这种情况Cufon就会大显身手了。

由此我们可以看出原来是Cufon在捣乱,因为它不支持中文字体的缘故所以中文字符都无法显示.

那么知道核心问题我们就知道该如何解决了,只要找到对应的目录文件和引用的地方给它删除了就可以了.
一般引用文件基本都是在header.php中,直接用编辑器的查找功能查找关键词”Cufon”即可. 找到引用的哪行然后删除即可.当然为了文件的整洁,多余的文件也可以删除,一般都在js目录中.

如我的项目是在.js里面

[code]

Cufon.replace(‘#nav>ul>li’,{
hoverables: { li: true },
hover:true
});
Cufon.replace(‘h1’,{
hover:true
});
Cufon.replace(‘h2’,{
hover:true

});
Cufon.replace(‘h3’,{
hover:true

});
Cufon.replace(‘h4’,{
hover:true
});

[/code]

删除这几行即可

判断PHP的字符串是否等于0

[code]

$a = ‘Zero’;

$b = 0;

if ($a == $b)

{

echo ‘True’;

} else

{

echo ‘False’;

}

[/code]

本来预期的结果是False,但输出结果是True。
为什么会这样呢?因为是PHP在做字符串和数字进行比较时,会把字符串转为数字,如果字符串首字母不是数字或-时,会被转成0,然后杯具就发生了,解决办法有2种:
1、如果确定2边的值的类型就用===来代替==;
2、如果不确定,可以把在比较前做一下类型转换,确保等式2边的值类型一致。