易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
mod_pagespeed:傻瓜式前端优化

mod_pagespeed:傻瓜式前端优化

这个功能能,看上去不错,所以我转了一下,但,我目前还没有在自己的服务器上尝试,不过我也在想,如果这样操作了,图片怎么样被外站引用呢?这也是我考虑的原因。。。

原文:

曾经有位朋友自己做了个小网站,刚开始没什么人气,后来不小心把流量搞大了,用户抱怨访问缓慢,就让我帮忙看看哪里可以优化。那时 Steve Souders 老师的 YSlow 14条军规刚刚新鲜出炉,开宗明义第一句便是:网页性能 80% 消耗在前端。于是运用 Firefox+Firebug+YSlow 工具,轻松找到那些大图小用、过期时间太短、JS/CSS位置不正确、没有精简压缩的罪恶之源。前后只花一两周时间就把网站弄快了,好不得意。

今天 Google 发布的 mod_pagespeed for Apache 2,着实令人赞叹。原本需要一两周时间才能完成的前端优化工作,不到半个小时就能搞定,而且不用修改任何程序。现成的二进制安装包,下载来 直接装入系统,自动添加配置,重启 Apache 之后,一切前端问题自动优化。CDN服务商 Cotendo 已在其CDN服务器上部署mod_pagespeed以加速客户网站访问,图片文件大小经自动压缩可减少20%-30%,页面加载时间最多可缩短50%。 Go Daddy 也宣布将在其客户网站服务器上广泛部署mod_pagespeed。

mod_pagespeed 中有很多巧妙的设计,规避了以往必须要动复杂手术才能解决的问题。比如,它可以将图片文件的过期时间自动延长到一年,无论图片是否存在同名更新(即文件名 不变,图片内容随时可能改变,从而无法设置较长的过期时间)。假设网站原来的logo图片引用和HTTP header如下:

HTML tag : <img src="images/logo.gif" />
HTTP header: Cache-Control:public, max-age=300

经自动处理后,会变成:

HTML tag : <img src="images/ce.c17941127d34679357baa1b36fb4ecc5.logo,g" />
HTTP header: Cache-Control:public, max-age=31536000
mod_pagespeed 把原来的 logo.gif 转化为名称唯一的 ce.c17941127d34679357baa1b36fb4ecc5.logo,g ,并且将原先的过期时间300秒延长到31536000秒(一年)。mod_pagespeed 则仍然以此前定义的 TTL 300 秒为周期,定期检查图片是否更新,一旦图片内容发生改变,文件名也会相应变化,如此就不用管同名更新的问题了。

又如最常见且最难以控制的“大图小用”(80x80的图片框里塞一张1024x768的高清墙纸),mod_pagespeed是这样处理的:
<img src="images/Puzzle.jpg" width="256" height="192" />
识别 IMG 标记中设置的宽度和高度值,自动缩放为相应大小和质量的图片:
<img src="images/ic.HASH.256x192xPuzzle,j.jpg" />
还有很多有趣的功能,在 http://www.modpagespeed.com 可以看到实例展示。

mod_pagespeed 显然很适合中小规模网站使用,不用太多费力于前端改造,就能迅速成倍提升客户体验。但对于大规模商业网站来说,我认为还是要慎重,因为它实时过滤处理每一 次请求,存在不小的开销,而且作为beta版软件,即使要采用也得先进行充分测试。当然各种优化手段也可能有副作用,值得一提的 是,mod_pagespeed 的文档写得不错,条件、限制、风险都很明确,建议详细研究后再作抉择。
--EOF--

好象作者活在墙外,真让人痛苦,转载了他的文章吧,却不能给人家一个地址,所以贴上他的博客地址:http://hutuworm.blogspot.com/

Ubuntu10.10用Wine运行QQ2009

Ubuntu10.10用Wine运行QQ2009

乘着最近在大战,我也贴个UBUNTU下装QQ的方法。只是这个QQ也是被改过的版本。爱用不用喽。。。。经测试,比linux占资源少一点,只是一些QQ附加的功能都可能没有了。。但是,能够聊天已经很不错了。
如果不用虚拟机,你连WEBQQ也用不了,有这样的工具,你还能怎么样?

先装wine,然后用winetricks装上这些常用的(其实前两天我的博客里介绍的wine就已经有介绍这样的了)。

winetricks msxml3 gdiplus riched20 riched30 vcrun6 vcrun2005sp1

最后我COPY这段文字,请大家可以随便看:

第四步:最后建议下载这个由深度出品的qq2009单文件版,主要是兼容性好(下载地址在文章最后给出)。
下载解压后把“wineqq2009.exe”放到你的主目录,打开 Shell 来一句:
sudo chmod +x wineqq2009.exe
PS:加权限了才准许运行。
最后将wineqq2009.exe复制到“.wine/dosdevice/c:/windows/system32/”文件夹里改为qq.exe。
当然你也可以下载qq2008,但是由于和Ubuntu的输入法冲突,你只要在密码框打密码qq就会崩溃,当然也有解决办法。
1.在一个空白文档里打下密码,然后再粘贴到密码框。
2.用软键盘输入密码。
PS:记得把自动登录选上,下次就没有这么麻烦了^_^。
所以,综合考虑,还是选这个qq2009单文件版好多了!
第五步:加入WineQQ菜单。
1.在”.wine/dosdevice/c:/windows/Program Files/Common Files”文件夹内右键选择新建文件夹Icon.下载QQ图标放到此处。
2.右击菜单条,选择编辑菜单(E),新建项目位置如下图:

3.编辑项目图标就从第1点的位置找到图标,其它内容如下图:
541f7b186619a34fe428c2be74c7fb20
80ebd7b3b9170e6fee564836998387b6

由于文件太大,我不提供下载,请到这里下载单文件版的QQ:http://killmind.com/blog/?post=188,我的文章也是从这里看的。(其实前两天我装wine的时候就尝试过所有版本的QQ了,但都是只能装不能启动。真的很郁闷。所以试了一下这个单文件的QQ),运行后,所有的聊天记录和信息文件存在mydocument目录下。和2009选择存在我的文档下结果是一样的。GOOD LUCK

后记:最后我看了这里:http://blog.chinaunix.net/u/27383/showart_689260.html,虽然它写的是2007版的QQ,但我测试了一下,2010的确实能用。虽然在安装的时候注册组件出了两次错,但确实是启动成功了(输密码的时候,请使用软键盘,否则,光标一移动到密码框就出错了。)

备份:

我的安装环境是:RedHat.Enterprise.Linux.AS.V4.0.Update4 + wine-0.9.44.tar.bz2 + 珊瑚虫 2007v5.0b正式版

第一步,用root用户登陆Linux,挂载WindowsXP系统的C盘分区。

新建一个文件夹,作为WindowsXP系统C盘的挂载点,我选的是/mnt/WindowsXPc

mkdir /mnt/WindowsXPc
创建挂载点
mount -t ntfs /dev/sda1 /mnt/WindowsXPc

第二步,切换到普通用户登陆Linux,安装wine,因为用root用户安装wine时会提示错误。

打开终端,进入wine安装包所在的目录比如我放在了/opt
cd /opt

解压wine安装包(我在这无法用命令解压,只好右键“用归档管理器打开”,不知道怎么回事?)

tar xjvf wine-0.9.44.tar.bz2
进入解压得到的文件夹中
cd wine-0.9.44
运行wine自带的安装程序
./tools/wineinstall

接下来是极其漫长的等待,盯着编译状态中的终端长达10分钟以后,忍无可忍的我夺门而出 —— 吃晚饭去......安装过程会提示你选择"yes"或"no",全都选"yes",一路回车下去即可。安装的末尾阶段,终端中会提示你输入root用户的登陆密码,这就是安装即将结束的标志。如果一切顺利,安装结束以后会有"Goodlucky..." 的信息提示,这就说明wine已经成功安装到你的Linux上了。

为了接下来步骤的顺利进行,建议大家注销一下系统,以root用户名登录Linux。

第三步,因为之前我们已经挂载了WindowXP系统的C盘,这时便将WindowsXP系统 C:\Windows\system32 里的以下文件:mfc42.dll,msvcp60.dll,riched20.dll,riched32.dll 拷贝到Linux系统root用户目录下的 ./wine/drive_c/windows/system32 里,覆盖原有文件。

第四步,安装QQ。
在终端中切换到QQ安装文件所在目录,比如我放在了/opt
cd /opt
以wine的方式运行QQ的安装文件
wine IPQQ0750b.exe

接下来,我们便可以看到在Windows下常见的QQ安装窗口了,安装过程跟Windows下完全一样,一步一步“下一步”就行了。在这里我要提醒一点,QQ主程序的安装路径最好选默认值,系统会自动将其存放到Linux虚拟的WindowsXP C盘的相应位置中,这样可防止过后执行过程中出现一些未知的错误。

第五步,安装结束以后,把QQ安装目录 ./wine/drive_c/Program Files/Tencent/QQ 里的 TIMPlatform.exe 删除掉。

第六步,为QQ设置一下wine。
在终端中输入下面的命令打开wine的配置文件
winecfg

在"Applications"标签里添加QQ的主执行程序QQ.exe;在"Windows Version"下拉框中选择"WindowsXP";完成上述两步以后,点击“应用”,然后切换到"Libraries"标签,在"New override for library"下拉框中添加riched20和riched32,最后确定退出。

第七步,运行QQ。
安装QQ时在桌面上创建了快捷方式,但那是.lnk格式文件,Linux下好像无法运行。我自己又重新创建了一个QQ启动器,但是双击没反应;若将启动器修改为“在终端中运行”,双击以后只弹出一个小窗口,而且瞬间就消失了,不知道怎么回事?最后我只能选择在终端中用命令行来打开QQ。

在终端中切换到QQ主程序安装目录
cd ./wine/drive_c/Program Files/Tencent/QQ
wine QQ.exe
.
.(一大堆信息,看不懂...)
.

这个时候,熟悉的QQ登陆窗口就出现了!接下来的操作就不用我多说了吧,号码,密码,登陆,OK!

3Q大战

说实话,我本来不是特别想转这篇文章,毕竟我也不希望我的博客能够成为别人的战场,因此在yhustc让我转载这篇文章的时候,我犹豫了。但是为什么今天我又转载呢?是因为实在受不了了。。。
1、昨天下午开始,QQ有弹窗说是装360不安全,QQ不能在装有360的机器上运行
2、每天一次的360弹窗说是QQ不安全(我不知道他在说别人的时候,有没有想过自己的弹窗是那样的大,还是居中的。人家QQ再怎么样,也是在右下角。事实上,360平时也在右下角经常弹窗。。。)
拜托2位,发起战争的时候,不要在用户的电脑上折腾行不?你们的公关战、软件战能不能不要影响我们的正常电脑使用?基于此,我转了这篇博客(顺便而已),毕竟只要是文章,就会带有立场,所以本文不代表我的意见(突然想起来,昨天的新闻晚报上,把360与QQ之间的战争写成3Q之战,所以我的标题就是3Q大战)
原文在:http://www.yhustc.com/360vsQQ.html,顺便。如果你去他的首页,你会发现,他又写了两篇。yhustc也是一个忍不住寂寞的人啊。
请围观内容:

本文思维混乱,谢绝不看全文的小白直接评论。

网络调查,先卸载谁(网易科技)。从“公园门”里被曝光的360网络水军,不知道有没有参与投票。总之结果是支持360的远远高于QQ。

去cnbeta上面看评论,或者一些新闻网站的评论,支持360的大多就是一个中心点:免费的就是好,就应该支持。不知道红卫兵们是不是该问问自己,QQ是不是免费的。评论的一点技术含量都没有。那些开一大堆业务然后说又贵又费钱,说腾讯黑的找抽货,还是滚一边去吧。没有用过任何业务,然后说 XX业务要钱黑的很的货,更加可以无视。

继360官方提供工具屏蔽各大门户的广告后,又把屏蔽的大斧砍向了QQ。当然,赢得了一篇欢呼。我想问一下欢呼的小白们,你们看着门户,用着 QQ,不点击广告没有人说你什么,连展示都不让,你们不是想让他们去死吗?将心比心,你自己是门户的老板,你会一个广告不放,白掏钱给别人服务?用了十年 QQ不花一分钱,你连广告都不让人展示?

扣扣保镖就更不靠谱了。把所有东西做成开关,这样就能把责任转移到用户身上,因为他们只提供工具,用不用是用户的事情。结果吧,QQ一升级,不让用扣扣保镖了,昨天就看到有新闻出现了,说是QQ这么竞争有失公平。我就问360枪手:你要强奸别人,还不让别人跑?

当然,小白们的另外一个声音是:一家独大不好,干倒QQ最好不过。典型的仇富心理,不管是社会还是网络上,这种小白都只能沦为别人的棋子而已。干倒了一个,会有下一个出现,这是历史必然。除非哪个傻不垃圾的老板说保持份额就停止不动,跟大家相安无事,可能吗?当然了,那个时候估计小白们又开始不遗余力的喷XX不好用,不如当年的QQ等等。

今天早上还看到中国青年报关于网络打手公司的报道。他们的工作,就是引导互联网的舆论,干掉对自己不利的,发布大量引导话题的。不知道先卸载谁的投票里面,有没有打手的身影啊。

Over....不知道这场战争会有多久。反正,我现在是用UBUNTU了。。linux下的QQ也没有广告,安心了。

最后上张图。。。有意思:

316ac7503c01786f843c79b5944d9b45

比较快乐的事情

比较快乐的事情

最近虽然有一些不快,但还是有比较快乐的事情啦
1、小朋友的身体一直不太好,昨天好象有点好转了。记得上次提过在thinkinlamp Mysql专场的时候,带小朋友去过医院,后来往复往复的去了大约四次。就是发烧,并非是病毒性的。好了坏坏了好,反反复复,前两天又去检查了一下,昨天晚上的时候鼻涕也少了,咳嗽也几乎没了。这才是让人感到最开心的事情。与此相比,工作上的压力又能算什么?

2、软件,wiz 能够被wine启动,这个我也非常开心,这样我就不至于换上很多软件来保持我的数据与家中是否同步了。以前说过一些同步软件,但事实上效果都不是特别满意。dropbox,或许我的内存有问题,反正我家里的64位机器上几乎没有正常过。金山快盘,这,你说吧,国内的东西,你有多少是敢用的?wiz我用来存放一些不是特别重要的东西,手机上能打开,也能同步,够了。(evernote其实也行,但是他的功能在win下没有wiz那样更符合国人的习惯,空间也只有50M)

3、昨天晚上想了一些对系统优化的方案,也准备这两天上线了。估计可以让性能和速度提升3倍左右(不是我的水平好,而是原来都没有时间做优化,不过,原来的程序也没有提供一些优化接口,还得自己写和测试),速度快了嘛。总是让人开心的事情。

咱老百姓啊,今儿真呀真高兴

杂谈

杂谈

Cnbeta上介绍了一个软件,说是Soluto是一款号称“反郁闷”的系统工具,这家来自以色列的开发方承诺让电脑运行得更好。Soluto可以 监视你的PC,发现用户面临的问题。比如打印机问题,导致系统崩溃的软件,过渡消耗资源的程序等。更有意思的是公司还可以帮助你解决电脑问题。并且他们收 集的电脑问题数据(匿名)可能会对很多行业和服务带来帮助。这款软件曾在5月份获得了TechCrunch的创业大奖。下载:Soluto,当然很多人说了,360和QQ也帮助我们收集了很多信息,只是帮我们解决问题要收钱而已(360帮助用户启动是需要钱好象)

国内的新规定是自用手机不申报入关也要征税,深圳海关工作人员表示,根据目前情况,出境市民只能选择在出关前申报,否则海关将无法判断手机属于自带还是从香港购买。

腾讯旗下产品QQ宠物发布公告,称接到大量宠物用户QQ宠物无法正常启动的投诉,经过排查,原因系用户安装使用“360扣扣保镖”软件,存在对QQ宠物程序恶意的修改,在用户不知情的情况下,禁止了QQ宠物程序的启动和正常运行。这是360与QQ之间的战争。我是普通用户,只希望对我的影响不要太大就成。

随便说说喽。。。不要跨省

winetricks Permisson denied解决方法

winetricks Permisson denied解决方法

在UBUNTU下面想要使用WINDOWS下面的程序,除了用虚拟机,剩下的应该就是wine这种解决方案了。

wine目前支持的东西越来越多,但是,需要给wine安装很多win下面的库才行。于是,php研讨群中的lukin给了我一个常用的库的列表,让我安装:

$winetricks corefonts gdiplus gecko ie6 mdac28 mfc40 mfc42 msxml6 riched20 riched30 richtx32 vcrun6 vcrun2008

于是,兴冲冲的运行了一下,弹出这样的框:

gouki@gouki-desktop:~$ winetricks gdiplus gecko ie6 mdac28 mfc40 mfc42 msxml6 riched20 riched30 richtx32 vcrun6 vcrun2008
Executing wget -O WindowsXP-KB975337-x86-ENU.exe -nd -c --read-timeout=300 --retry-connrefused --header Accept-Encoding: gzip,deflate http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe
WindowsXP-KB975337-x86-ENU.exe: Permission denied
------------------------------------------------------
Note: command 'wget -O WindowsXP-KB975337-x86-ENU.exe -nd -c --read-timeout=300 --retry-connrefused --header Accept-Encoding: gzip,deflate http://download.microsoft.com/download/a/b/c/abc45517-97a0-4cee-a362-1957be2f24e1/WindowsXP-KB975337-x86-ENU.exe' returned status 1. Aborting.

网上找了一点资料,说法较多,比如winetricks没有权限啦,.wine目录不是当前用户权限啦,所以,我到home目录下执行了

chown -R gouki:gouki /home/gouki/.wine
sudo chmod +x /usr/bin/winetricks

更改完后,再次执行,还是上述错误。这回真的是找了很多资料,有一个回复比较靠谱,说是需要更改.winetrickscache权限为当前用户,或者下载最新的winetricks脚本(里面有含对目录权限的判断和更改)

然后,我找了一下我的home目录,却发现我根本没有.winetrickscache目录。因此,立刻

mkdir /home/gouki/.winetrickscache

然后再次执行下面的程序,终于可以开始安装了。问题自然是就此解决。作个笔记

参考:http://forum.winehq.org/viewtopic.php?t=5174&view=previous&sid=cc8cacaa4cb95e574ef0d6ae9d1706e3

转贴:每位开发人员都应铭记的10句编程谚语

转贴:每位开发人员都应铭记的10句编程谚语

  所谓谚语,就是用言简意赅、通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情。也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己。

1. 无风不起浪
代码设计是否糟糕,从某些地方就可以看出来。比如:

  • a. 超大类或超大函数
  • b. 大片被注释的代码
  • c. 逻辑重复
  • d. If/else嵌套过深


程序员们通常称它们作代码异味(Code Smell),但是就我个人认为“代码警报”这个名字更为合适一些,因为它有更高的紧迫感的含义。根本问题处理不当,终将引火烧身。

译注:Code Smell中文译名一般为“代码异味”,或“代码味道”,它是提示代码中某个地方存在错误的一个暗示,开发人员可以通过这种smell(异味)在代码中追捕到问题。


2. 预防为主,治疗为辅
20世纪80年代,丰田公司的流水作业线因为它在缺陷预防方法上的革新变得出了名的高效。每个发现自己的部门有问题的成员都有权暂停生产。这个方法意在宁可发现问题后马上暂定生产、解决问题,也不能由其继续生产而导致更棘手且更高代价的修复/更换/召回后的问题。

程序员总会做出生产率就等同于快速编码的错误臆断。许多程序员都会不假思索地直接着手代码设计。可惜,这种Leeroy Jenkins式鲁莽的做法多会导致软件的开发过程变得很邋遢,拙劣的代码需要不断的监测和修改——也可能会被彻底地替换。最终,生产率所涉及到的因素就 不仅仅是写代码所消耗的时间了,还要有调试的时间。稍不留神就会“捡了芝麻丢了西瓜”。(因小失大。)

译注:Leeroy Jenkins 行为:WOW游戏中一位玩家不顾大家独身一人迎敌,导致灭团。


3. 不要孤注一掷 (过度依赖某人)

一个软件开发团队的公共要素(bus factor)是指那些会影响整个项目进程的核心开发人员的总数。比如某人被车撞了或某人生孩子或某人跳槽了,项目可能就会无序,甚至会搁置。

译注: bus factor 即指公共要素,比喻了开发过程中的一些共同因素。如果挤上 bus 的 factor 越多,bus 就越不稳定,所以要控制好 bus factor ,以免问题发生。

换句话说,如果你的团队突然失去了一个主力成员,你会怎么办?生意依旧进行还是戛然而止?

很不幸,大多数软件团队都陷入了后一种情况。这些团队把他们的开发员培养成了只会处理他们自己专业领域的“领域专家”。起初,这看起来是一个比较合理 的方法。它 对汽车制造装配生产线很适用,但是为什么对软件开发团队就不行呢?毕竟,想让每个成员都掌握所编程序的细微差别也不太可能,对吧?

问题是开发人员不容易轻易替换掉。虽然当每位成员都可用时,“抽屉方法”很有效,但如果当“领域专家”突然因人事变动、疾病或突发事故而无法工作时, 抽屉 方法立马土崩瓦解。(所以,)软件团队有一些看似多余实则重要的后备力量是至关重要。代码复查、结对编程和共有代码可用成功营造一个环境,在这个环境中, 每位开发人员至少表面上是熟悉自己非擅长领域之外的系统部分。


4. 种瓜得瓜,种豆得豆

  《注重实效的程序员》一书中有这样一段话解释“破窗理论”:不要留着“破窗户”(低劣的设计、错误的决策或者糟糕的代码)不修。发现一个就修一个。如 果没有足够的时间进行适当的修理,就先把它保留起来。或许你可 以把出问题的代码放到注释中,或是显示“未实现”消息,或用虚拟数据加以替代。采取一些措施,防止进一步的恶化。这表明局势尚在掌控之中。

我们见过整洁良好的系统在出现“破窗”之后立马崩溃。虽然促使软件崩溃的原因还有其他因素(我们将在其他地方接触到),但(对“破窗”)置之不理,肯定会更快地加速系统崩溃。

简而言之,好的代码会促生好的代码,糟糕的代码也会促生糟糕的代码。别低估了惯性的力量。没人想去整理糟糕的代码,同样没人想把完美的代码弄得一团糟。写好你的代码,它才更可能经得住时间的考验。

译注:《注重实效的程序员》,作者Andrew Hunt / David Thomas。该书直击编程陈地,穿过了软件开发中日益增长的规范和技术藩篱,对核心过程进行了审视――即根据需求,创建用户乐于接受的、可工作和易维护 的 代码。本书包含的内容从个人责任到职业发展,直至保持代码灵活和易于改编重用的架构技术。从本书中将学到防止软件变质、消除复制知识的陷阱、编写灵活、动 态和易适应的代码、避免出现相同的设计、用契约、断言和异常对代码进行防护等内容。

译注:破窗理论(Broken Window theory):是关于环境对人们心理造成暗示性或诱导性影响的一种认识。“破窗效应”理论是指:如果有人打坏了一幢建筑物的窗户玻璃,而这扇窗户又得不 到及时的维修,别人就可能受到某些暗示性的纵容去打烂更多的窗户。发现问题就要及时矫正和补救。


5. 欲速则不达

经理、客户和程序员正日益变得急躁。一切都需要做的事,都需要马上就做好。正因如此,快速修复问题变得非常急迫。

没时间对一个新功能进行适当的单元测试?好吧,你可以先完成一次测试运行,然后你就可以随时回来继续测试它。

当访问Y属性时,会不会碰到奇怪的对象引用错误?无论怎样,把代码放到try/catch语句块中。我们要钓到大鱼啦!

是不是似曾相识呢?这是因为我们在以前已经都做到了。并且在某些情况下、它是无可非议的。毕竟,我们有最后期限,还得满足客户和经理。但不要过于频繁 操 作,否则你会发现你的代码不稳定,有很多热修复、逻辑重复、未测试的方案和错误处理。最后,你要么是把事情草草做完,要么是把事情好好做完。

6. 三思而后行

“敏捷开发”这个词最近被频繁滥用,经常被程序员用来掩饰他们在软件开发过程中的糟糕规划/设计阶段。我们是设计者,看到产品朝正当方向有实质进展, 我们理应高兴。但意外的是,UML图和用例分析似乎并不能满足我们的愿望。所以,在不知自己做什么的情况下或者不知自己身处何处时,我们开发人员经常就稀 里糊涂地写代码了。

这就好比你要去吃饭,但你根本没有想好去哪里吃。因为你太饿了,所以你迫不及待地找个餐馆,定个桌位。然后你上车开车后沿途在想(找地方吃饭)。只 是,这样会耗费更多的时间,因为你要过较多的U型弯道,还在餐馆前停车,也许最后因等待时间过长而不吃了。确切地说,你最后应该能找到地方吃饭,但你可能 吃的饭并不是你想吃的,并且这样花费的时间,可能比你直接在想去的餐馆订餐所花的时间更长。


7. 如果你惟一的工具是一把锤子,你往往会把一切问题看成钉子

  程序员有一种倾向,当一谈到他们工具时,其视野就变狭窄了。一旦某种方法在我们的一个项目上“行得通”,我们就会在接下来所有的项目上都用到它。学习 新东 西仿佛是一种煎熬,有时候甚至会心神不定。从始至终都在想“如果我用之前的方法做、这个就不会这么麻烦了”。一定要摒弃这种想法,按我们所知道的去做,即 使那不是最完美的解决方法。

坚持自己所知很简单,不过从长远的角度讲,选择一个适合这项工作的工具要容易得多。否则,就会与你的职业生涯格格不入。


8. 沉默即赞同

  "破窗理论"与"变成惯性理论"有着宏观的联系。

编程社区就好像一个现实社区。每个作品都是一个开发者的缩影。糟糕的代码发布的越多,就越容易反映现状。如果你不去努力编写优秀、整洁和稳定的代码,那你每天都将和糟糕的代码相伴了。

同样地,如果你看到别人写出了糟糕的代码,你就要跟这个人提出来。注意,这时候机智就应该用上场了。一般情况下,程序员都愿意承认他们在软件开发中还是有不懂的地方,并且会感谢你的好意。互相帮助对大家都有利,而对问题视而不见,只会使问题一直存在。


9. 双鸟在林,不如一鸟在手

如果可以讨论系统架构和重构,那么就差找个时间把事情做完。为了使正常运作的东西更加简洁而做改动,权衡改动的利弊很重要。当然了,简洁是一个理想目 标, 但总会有可以通过重构改进的代码。在编程世界中,为了代码不过时,会频繁简单改动代码。但有时候你又必须保证代码对客户有价值。那么,你面临一个简单窘 境:你不能一石二鸟。你在重构旧代码上所发时间越多,你编写新代码的时间就越少。在及时改进代码和维护程序之间,也需要找到平衡点。

10. 能力越大,责任越大

  毫无疑问,软件已成为我们生活中一个既基本又重要的一部分。正因如此,开发优秀软件格外重要。乒乓球游戏中的Bug是一回事,航天飞机导向系统或者航 空交通管制系统中的Bug是另外一回事。Slashdot曾发表一文,讲述了单单Google News的一个小失误使一家公司股票蒸发11.4亿美元。其他例子参见《软件Bug引发的十次严重后果》。这些例子便说明了我们正行使着多大的权利。你今天写的代码,无论你是否有意,说不定有朝一日在重要的应用程序中派上用场,这想想都令人害怕。编写正确合格的代码吧!

译注:Slashdot是一个资讯科技网站。

原文来自http://www.jobbole.com/entry.php/297,看了笑笑即可

摘:mysql主从同步快速设置

摘:mysql主从同步快速设置

记录一个比较简便的mysql的主从同步设置步骤,方便日后使用。

安装环境

  • centos 5.4
  • mysql 5.1.xx 采用rpm直接安装
  • xtrabackup 1.2.22 采用rpm直接安装
  • [mysqld]
    server-id = 1
    log-bin
    innodb_flush_log_at_trx_commit=1
    sync_binlog=1
    datadir=/var/lib/mysql
    character-set-server=utf8
    init_connect='SET NAMES utf8'

    设定了默认字符集为utf8,可以按实际情况取舍这段配置。

    2. Slave:/etc/my.cnf
    [mysqld]
    server-id=2
    datadir=/var/lib/mysql
    character-set-server=utf8
    init_connect='SET NAMES utf8'

    3. Master:在master数据库设置用来同步的slave用户权限
    GRANT REPLICATION SLAVE ON *.*
    TO '<slave_username>'@'<slave_ip>'
    IDENTIFIED BY '<slave_password>';

    4. Master:导出数据到slave

    采用xtrabackup来备份mysql,好处是在master的锁表时间很短,在实际的生产环境也可以使用,并且xtrabackup会自动记录同步日志文件的位置。

    sudo innobackupex-1.5.1 --stream=tar /tmp/ | ssh <slave_host> "mkdir /tmp/db; tar xfi - -C /tmp/db/"

    这个步骤会把master的数据包括表结构整个导出并压缩复制给slave,同时解压到slave的/tmp/db目录下。

    5. Slave:导入数据到slave
    innobackupex-1.5.1 --apply-log /tmp/db
    innobackupex-1.5.1 --copy-back /tmp/db
    chown -R mysql.mysql /var/lib/mysql/*

    6. Slave:开始同步数据

    查看/var/lib/mysql/xtrabackup_binlog_info,获得日志文件以及position。

    CHANGE MASTER TO
    MASTER_HOST='<master_host>',
    MASTER_USER='<slave_username>',
    MASTER_PASSWORD='<slave_password>',
    MASTER_LOG_FILE='<see xtrabackup_binlog_info>',
    MASTER_LOG_POS=<see xtrabackup_binlog_info>;
    START SLAVE;

    原文来自:http://www.ooso.net/archives/547,做个备份啦

    怎样让文件目录与VirtualBox中的虚拟机共享

    怎样让文件目录与VirtualBox中的虚拟机共享

    最近在用UBUNTU,那么遇到的问题就是如何让我的ubuntu的文件与windows共享?虽然一般来说我们有常见的几种:
    1、samba文件共享(windows可以直接搜索网上邻居来访问,但配置较烦和繁)
    2、remote desktop,这个,如果虚拟机是XP,那么在连接的时候,默认界面就被锁定了,不方便
    3、VirtualBox自带的sharefolder。推荐的也是这个。
    4、FTP(SFTP)这两种都可以,只是FTP需要HOST装FTP软件,sftp的话,则是需要HOST装ssh,XP装SSH客户端

    现在说说sharefolder吧,如果你开启了这个功能,默认系统会让你选择一个UBUNTU的目录,然后就可以共享了。只是你不知道这个共享后目录在哪里,怎么办?
    这时候,打开网上邻居,你会发现,除了windows network外,多了一个virtualbox network,在这里,你就找到:
    d658c47c4ba11c861f05fc7855ec49d7
    打开后,将这个目录映射为虚拟盘就OK了。
    然后就你可以象在本地一样操作了,灰常爽啊。

    判断QQ号是否为企业QQ

    在商城程序中,不可避免的会给商城的用户展示自己的QQ,于是QQ在线状态就好象比较重要了,因为光显示一个号码并不能使得用户直接与商家交流,所幸QQ提供了这样的功能。

    如果你是个人用户,那么:http://wp.qq.com/就可以生成自己的在线状态,比如我就这样显示了一下:

    点击这里给我发消息
    但如果你是企业QQ,上面的功能就不能用了,因为企业QQ的状态与其他的不太一样,他的在线状态生成在这里:http://b.qq.com/wp/

    但目前从网上找的资料来看,好象没有更好的办法来判断用户是否是企业QQ,因此只能找了一些相关资料:

    企业QQ是按您所购买的工号数,来收取相应的年费的。我们按工号数量划分为3个套餐,您可以根据自己的需要,购买我们的产品。同时我们会免费赠送一个尊贵的400/800开头的10位企业QQ号码,此企业QQ号码,可以与您的热线400/800电话一致,从而尽显您企业的专业形象。具体经销商联系方式,请参见“企业QQ经销售联系方式”。
    所以只能现在这样判断:10位的数字,前三位是400或者800:
    <?php
    $qqnumber = '';
    $bizPre = substr($qqnumber,0,3);
    if( ($bizPre == '400' || $bizPre == '800' ) && strlen($qqnumber) == '10' ){
    //企业qq
    }
    //至于那个判断是否是QQ号的,这里就不写了,也只是简单的判断而已
    于是,就可以根据QQ号显示不同的在线状态了