愿得一人心

曾在我背包小小夹层里的那个人
陪伴我漂洋过海经过每一段旅程
隐形的稻草人 守护我的天真
曾以为爱情能让未来只为一个人
关了灯依旧在书桌角落的那个人
变成我许多年来纪念爱情的标本
消失的那个人 回不去的青春
忘不了爱过的人才会对过往认真

只愿得一人心 白首不分离
这简单的话语 需要巨大的勇气
没想过失去你 却是在骗自己
最后你深深藏在我的歌声里
只愿得一人心 白首不分离
这清晰的话语 嘲笑孤单的自己
盼望能见到你 却一直骗自己
遗憾你听不到我唱的这首歌
多想唱给你


时间都去哪儿了

门前老树长新芽
院里枯木又开花
半生存了好多话
藏进了满头白发
记忆中的小脚丫
肉嘟嘟的小嘴巴
一生把爱交给他
只为那一声爸妈

时间都去哪儿了
还没好好感受年轻就老了
生儿养女一辈子
满脑子都是孩子哭了笑了
时间都去哪儿了
还没好好看看你眼睛就花了
柴米油盐半辈子
转眼就只剩下满脸的皱纹了

原则

1. 不解释,时间会证明一切。
2. 不走回头路。
3. 不如意时,不想如果当初。
4. 言必信,行必果。
5. 只与君子交往,不与小人争利。

一个 xl2tpd 无法连接的问题

1个月前手贱,将 xl2tpd 的配置文件 /etc/ppp/options.xl2tpd 里的 name 字段给改了,只因看原来设置的 l2tp不爽,改的时候以为这只是一个无关瘙痒的字段。但后来 vpn 就一直无法成功连接,直到今天对着网上的教程一字一字的查我的配置文件,才发现别人的 options.xl2tpd 内的 name 字段和 chan-secret 内的 server 字段是一样的,而我的设置不一样,遂想到这两个文件内的 name 和 server 是相关的,于是改为相同的值,重连 VPN …… 成功连接!

Mac OS X 调教手册

1. 终端美化
Mac OS X 终端默认的样子实在是太难看了,竟然一点色彩都没有……让我们给它增加点颜色吧,编辑 ~/.bash_profile,如果没有则创建,然后增加以下几行:

# 彩色显示命令行
export CLICOLOR=1
# 让 grep 用红色标出搜索的字符串
alias grep='grep --color'
# 增加 ll 命令
alias ll='ls -la'

2. Homebrew
Homebrew 是Mac OS X 下新的软件包管理工具,详细的介绍请参阅这篇文章。
安装文件从这里获取,然后在终端执行

ruby install_homebrew.rb

然后就可以使用 homebrew 来安装/移除软件包了。
3. 修改磁盘卷名

# 先 diskutil list 查看设备名,如"disk0s1"
diskutil rename /dev/devicename 'newname'

4. 命令行下 sudo 免输密码
在安装软件的时候经常需要使用sudo命令来获取管理员权限,而 Mac 在默认的情况下使用sudo命令是需要输密码的,而且密码不能为空,这样的设定在实际使用的时候总是感觉很不方便,我已经是管理员了,我在使用sudo的时候已经知道自己在做危险的事了,所以密码就不要让我再输了吧……以下是修改方法:
注意:修改sudoers的时候一定要使用visudo来改,这样如果文件有错误是无法保存的,否则一旦这个文件出错,你就哭去吧!

#在命令行执行
sudo sudovi
#找到
%admin ALL=(ALL) ALL
#改为
%admin ALL=(ALL) NOPASSWD: ALL

5. 将网页元素添加到 Dashboard
在 Safari 中右击网页,选择 在Dashboard中打开,然后选择合适的尺寸,点击添加就可以了。
如果是音乐播放器这种希望能在后台播放的元素,则还需要点击新添加的widget右下角的“i”,去掉“仅在Dashboard”中播放音频。
删除的方法:点击左下角的“+”,选择“管理widget”,然后在Dashboard上点击要删除的widget左上角的叉号。
6. 修改Hostname
在终端执行以下命令

sudo scutil -set HostName newname

当一个字符串和 false 比较的时候会发生什么?

今天在写程序的时候,遇到个问题,这个问题是这样的:

我有一个表:

CREATE TABLE IF NOT EXISTS `session` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `token` varchar(32) NOT NULL,
  `profile` varchar(1000) NOT NULL,
  `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=41 ;

和一些数据:

(38, '395d5feaf28df01aafe0781a7f34acbe', 'a:3:{s:2:"id";s:1:"2";s:8:"username";s:7:"wanmeng";s:12:"created_time";s:19:"2011-11-18 19:37:33";}', '2011-12-03 14:14:35'), 
(39, '0e0ca06ed9ad86937f190eb9544ac935', 'a:3:{s:2:"id";s:1:"1";s:8:"username";s:6:"delphi";s:12:"created_time";s:19:"2011-11-18 13:29:40";}', '2011-12-03 14:28:36'), 
(31, '3cba76b97cf123009632bdaa5a306385', 'a:3:{s:2:"id";s:1:"1";s:8:"username";s:6:"delphi";s:12:"created_time";s:19:"2011-11-18 13:29:40";}', '2011-12-02 15:50:21'), 
(30, 'fa356333dd3ee8f1b18b8bf0a827e34c', 'a:3:{s:2:"id";s:1:"1";s:8:"username";s:6:"delphi";s:12:"created_time";s:19:"2011-11-18 13:29:40";}', '2011-12-01 15:32:47')

在我执行  SELECT * FROM session WHERE token = false 的时候,我本以为没有记录会返回,但是mysql却给我返回了2条记录:

39  0e0ca06ed9ad86937f190eb9544ac935    a:3:{s:2:"id";s:1:"1";s:8:"username";s:6:"delphi";...   2011-12-03 22:28:36 
30  fa356333dd3ee8f1b18b8bf0a827e34c    a:3:{s:2:"id";s:1:"1";s:8:"username";s:6:"delphi";...   2011-12-01 23:32:47

我猜到了问题应该是出在数据类型转换上,于是我就修改了查询语句,让字符串和null值作比较而不是false,但为什么会这样却一时半会儿没想明白,于是就在stackoverflow上提了个问题 ,结果当然是被人家当小白教育了一翻……但原因我算是知道了。

在Mysql中是没有boolean这种数据类型的,boolean在Mysql中实际上是用Tinyint表示的,0代表false,1代表true。

所以上边那个查询实际上就是相当于

SELECT * FROM session WHERE token = 0

当一个字符串和Tinyinit作比较的时候,Mysql会先将字符串转换为数字类型,数字开头的字符串取前边的可以转换的数字字符转为数字,如果字符串是字母开头的,则直接转为数字0

于是那些以字母开头和数字0开头的记录便被取出来了。