EMACS一些技巧

在perl中,如果你选中一段代码,然后align,emacs会把等号对齐,但是在php中不会这样,如果在php中你也想这样的话,那么你会用到:

M-x align-regexp RET = RET

举例,比如在一个比较长的数组中,如下,你会想把等号对其。

$data = array(
	'filter_order_id'	=> $filter_order_id,
	'filter_box_code'		=> $filter_box_code,
	'filter_customer_id'		=> $filter_customer_id,
	'filter_email'=> $filter_email,
	'filter_shipping_name'			=> $filter_shipping_name,
	'filter_telephone'		=> $filter_telephone,
	'filter_shipping_address'		=> $filter_shipping_address,
	'filter_postcode'		=> $filter_postcode,
	'filter_payment_method'		=> $filter_payment_method,
	'filter_order_box_status_id'	=> $filter_order_box_status_id,
	'filter_date_added'	=> $filter_date_added,
	'sort'				=> $sort,
	'order'				=> $order
);

当然align-regexp后面跟的是个正则表达式,如果你想让它以其他的方式对其,JUST DO IT!

挤得要命

前天去海边走一走,发现人太多了,挤得要命。大部分是旅行团的人,前面有一个带队的,拿着小喇叭。他们玩的好辛苦。我想,以后要出去还是选人少一点的地方比较好。

前两天一直在考虑2个问题:事件驱动和js的原型链。明显是研究nodejs的过程中产生的问题。nodejs是朋友介绍的,据说很厉害,所以就研究一下,发现js的原型真的跟普通的面向对象有很大的区别。下面写一下我对这两个东西的理解,或许错了,但是也要记录下来。所有的东西都是回忆。

关于JS的原型链。在理解这个东西的时候,把函数分解成两个部分,一个是函数,一个是对象。一定要分离着理解,上张图,绝对给力,我就是靠这张图理解的。

仔细研究这个图,你一定有收获。还有网上还有这么一张图,我相信你看后绝对会很混乱,这张图我放在下面,大家研究一下,反正我是搞不懂。

Continue reading

SVN一键添加删除

其实两键,两条命令。在你做了很多操作,很多删除很多添加的时候,很有用。我记得是在博客里面有来着,但是找不到了。

svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add
svn status | grep -v "^.[ \t]*\..*" | grep "^\!" | awk '{print $2}' | xargs svn delete

PHP的输出缓冲

今天碰到一个小问题,本着研究到底的精神。这个问题被我研究了一下,当然到底时不可能的,什么事情到底了就会总结出哲学的那几个问题上,比如人为什么活着等问题。

就是用header函数的时候会出现什么headers already sent这个问题,其实这个问题在ubuntu中是已经没有了的,因为,因为的原因在后面讲。

首先讲一下headers。这里的headers就是http header的意思。当你请求一个页面的时候,服务器会返回两部分,一部分就是header,一部分时主要内容。这个header储存了很多有用的东西,比如你的浏览器的cookie等内容,而内容则是你看到的东西。

为什么会出现headers already sent这个问题大体上很好理解。PHP在输出的时候,会产生header数据,如果没有明显的用函数指定header的值(比如header函数、setcookie函数都会改变header的值),那么会产生默认的值。header的作用时很多有用的东西,http协议的创造者让它必须要在主体内容之前发送到浏览器。如果在这之前你已经用php输出一些东西了,那么当然会引起冲突了。

Continue reading

ubuntu无法sudo

就在上篇文章中,我尝试的时候改了我用户组,结果除了一大堆问题,问题之一就是无法sudo了。

于是我就到了recovery mode下面,想把我的用户组加到admin和root中,结果提示失败。它提示我Cannot lock ‘/etc/passwd’。有点崩溃。

再一次于是我google了一下,就google出了解决方法,如下:

Check that you are root

whoami

Check that the root partition is mounted read-write

cat /proc/mounts

If you see that your partition is mounted as ro (read-only), try remounting it as rw

mount -o remount,rw /

然后就OK了,哈哈。不过不知道为什么默认的recorvery mode没有把根目录挂在为rw模式,难道是为了安全?

linux文件属性的个人约定

完美的感觉又来了,下午叨叨了一会在linux下开发web程序文件的属性问题。

环境是ubuntu+apache(默认apache是以www-data这个用户来运行的),我的用户名是hass。默认的文件夹属性是775,文件是644。文件所属为hass:hass,。web程序在安装的时候如果需要写权限,那么我就将文件所属改为www-data:hass。然后apache自己产生的文件的文件所属明显就是www-data:www-data。

讲一下好处,文件所属为hass:hass的文件都是需要人来编辑的程序,文件所属的www-data:hass为需要写权限的,文件所属为www-data:www-data的则为apache生成的,不需要我们来干预的。

后:刚到新公司,很新奇。

所谓的HTML5十五新特性

下面是我摘抄的一篇文章,觉得有必要记载到这里。我复制的时候大体浏览了一下,发现重复的内容很多,比如新的标签header、footer和hgroup其实是一个系列的,比如audio和video还有那个什么video重载都可以放到多媒体这一块里面的,唉,可恨的人们啊。

HTML5想必大家都很熟悉了,因为太多的媒体在讨论这一技术。然而,你能准确地说出HTML5带来了哪些新特性吗?本文总结了HTML5带来的15项你必须知道的新特性。

1.新的文档类型 (New Doctype)

目前许多网页还在使用XHTML 1.0 并且要在第一行像这样声明文档类型:

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

在HTML5中,上面那种声明方式将失效。下面是HTML5中的声明方式:

< !DOCTYPE html>

Continue reading

webrtc终于来了

在几个月焦急的等待中,在我要回家过年的这一天,webrtc可以在chrome dev分支中使用了。本来想好好的做个东西出来,看来是要延迟了。我讨厌落后别人的感觉,因为估计我不能是世界第一。

我想,这个东西一定是个好东西,一定会很多人使用。比如像我这样的人,我受够了flash那种感觉,那种复杂,那种不爽。说起来flash是我在计算机领域第一次接触的东西,但是也是我现在最不想使用,最不想学习的一门技术,我不是在乔布斯宣布在手持设备上禁用flash才开始讨厌它的,自从我上大学开始系统的接触了flash我就开始讨厌它,莫名其妙的讨厌。

所以,我一直在寻找flash的替代品,明显,html5是我寻找的东西,我看到它可以播放视频,我看到它可以做图玩游戏,可是一直以来,他对于流媒体支持的很不好,可以说基本上一直以来,都是不支持流媒体的。于是,太多的东西html5做不到而flash可以做到,比如视频聊天。比如视频会议。

Continue reading

RVM多用户BUG

刚才更新了一下rvm的版本,更新到了latest(1.10.0),感觉不错。但是有一个令人崩溃的问题,就是当你用Multi-User模式安装rvm,然后切换默认ruby版本的时候会出现:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

这令我很崩溃啊,研究了一上午,原因没有发现,倒是找出解决方法来了,那就是用sudo -H -i或者是rvmsudo bash命令切换到root模式下,然后rvm –default use XXX。新年快乐。