入手Nexus S
移动互联网的飞速发展,真的让我眼热,虽然没哥什么鸟事,但是也还是想快速走入这个领域看看。于是乎,想要一尝Android之鲜。充分分析了现在经济状况,Android系统的相应机型,最终挑选了Google亲历打造的Nexus S。哥玩的就是血统。在辗转反侧想了很多个日夜后,终于出手,并于今天下午拿到了手上。
移动互联网的飞速发展,真的让我眼热,虽然没哥什么鸟事,但是也还是想快速走入这个领域看看。于是乎,想要一尝Android之鲜。充分分析了现在经济状况,Android系统的相应机型,最终挑选了Google亲历打造的Nexus S。哥玩的就是血统。在辗转反侧想了很多个日夜后,终于出手,并于今天下午拿到了手上。
前一段日子,写了一篇《MVC就是一个选择题》,重点描述了我对MVC模式的迷惑。随着我对这个模式应用时间的深入,渐渐感到得心应手,这个模式早在30多年前就已经发明了,确实经受了时间的考验,可以说是千锤百炼。但是,实践过程中,我也发现,更多的时候照猫画虎还是有很多弊端的,想要真正做好MVC的选择题,必须在项目中不断犯错误,不断修正,才能逐渐走上正轨。我参加的项目主要运用了Yii框架,是目前比较流行的一个Web开发框架。随着前不久,1.1.6版本的发布,我发现Yii框架的文档中,多了一篇MVC最佳实践的文章。我想,这个文章对于初学者来说,应该具备相当的指导性,而且指导相当具体。如果也有跟我相同的迷茫,应该好好钻研一下这篇文章,并且身体力行去验证之,这里给出链接。我在这篇文章中,就是概括简述一下那篇文档的内容。
文章(post)是 WordPress 博客的核心价值所在,围绕一篇文章的增、删、改,我们可以开发很多有用的插件。近来,由于维护一款插件的需要,我碰巧研究了一下围绕文章发布流程而设立的一些钩子(hook)。微有所得,记录备查。
由于采用了Web开发框架来开发项目,所以我首次在真正的项目中采用MVC的开发模式。随着项目的不断深入,我也在不断反思,MVC设计模式到底给项目带来了什么?成倍的开发时间?复杂无比的目录结构?铺天盖地的文件数量?听起来都很难听对吗,但是确实如此。那么MVC所许诺的那些好处呢?清晰的代码结构,易于维护,易于扩展?真有吗?
初次打开Mac OS X的终端,我非常不习惯。以界面优美著称的苹果操作系统,终端竟然如此丑陋,实在是大出我的意料之外。别的我也就不说了,最不能容忍的是两个,一个是没有颜色的ls,还有一个就是那个命令提示符。
实际上,Mac OS X作为一个类Unix系统,或者说根本就是一个Unix系统,而且默认shell已经变更成了bash,那么它理应该可以配置到跟Linux下的表现一样才对。在Linux系统中,ls能呈现多彩的颜色,还需要终端的支持,而Mac OS里的终端显然是支持颜色的,那为什么ls就显示不出来颜色呢?网上有老外说,ls用的不是gnu的core-utils,给了一套更换core-utils的方案,太麻烦我没采纳。今天,静心看了下man,才发现,感情人家根本就是支持彩色的。只是参数变成了-G,而不是我们熟悉的–colors,唉,竟然这么简单。
另外提一点,如果大家想要自定义Mac下的bash的表现的话,那么不要像在Linux中一样使用.bashrc,因为在Mac下起作用的其实是.bash_profile文件。好了,这里把我配置上面说的两个特性的.bash_profile分享一下。
export PS1="\u@mac:\w > " export CLICOLOR="xterm-color" export LSCOLORS="gxfxcxdxbxegedabagacad" # aliases alias cd..="cd .." alias l="ls" alias ll="ls -l" alias la="ls -al" alias mysql='/usr/local/mysql/bin/mysql' alias mysqladmin='/usr/local/mysql/bin/mysqladmin'
苹果操作系统的 Dock 菜单,可能是个人桌面操作系统中,最成功的一种 UI 设计了。这个交互设计效果优美,使用简便,一目了然。无数爱好者,将 Dock 菜单的交互设计和视觉效果移植到了各种各样的系统和平台上。
在 Web 上实现 Dock 菜单,也不是什么新鲜事了,包括我以前想要汉化过的一个 favourite 类插件,也都是 Dock 的理念。
jQuery 有个插件,就是专门实现这个Dock菜单的效果的。在这里可以看到例子。文章标题里说的,是一个 WordPress 的插件,插件的名字翻译成中文的话,叫动态WP鱼眼菜单。我不知道为什么作者要取这么难听的名字,而且并不让人一目了然,既然 Dock 已经是几乎人尽皆知的效果了,何必再去自己发明名字。不过呢,这并不妨碍作者实现了这么一个使用简便的插件。到这里可以看效果。
从一个插件开发者的角度来看,Charles 觉得这个插件的结构是非常简单的,只是在 WordPress 的里面引入了一个 jQuery 的插件,顺便增加了后台管理界面。从一个用户的角度看,我觉得这个插件有一个值得赞扬的地方,它的后台非常之简单,简单到了一目了然的地步。应该成为所有插件作者设计插件后台时候参考的典范。不过呢,也有一个缺点,就是这个插件的安装却并不是那么简单。因为需要用户手动修改代码。我想,这会给这个插件的流行,带来巨大的阻力。我觉得这是每个插件开发作者应该竭力避免的事情。
因为一开始我就知道,周鸿祎是所有流氓软件、恶意软件的始作俑者,我认为流氓老祖改行做警察,相当于反水,那么查杀能力应该比较出色。虽然我不知道所有其他流氓都死绝后,会怎么样,但是那是以后的事情。
很简单,我是一个喜欢清净的人,当360开始越来越多的“善意提示”的时候,他已经被我列入了黑名单。开机速度,拦截了什么,什么有风险等等,各类消息层出不穷。我觉得一款真正贴心的杀毒软件,应该静默。杀掉该杀的,留下正直的,遇上可疑的,也要靠自己的能力“艰难的”去判断,而不是把这些见鬼的选择题留给用户,是杀掉?删掉?隔离?修复?四选一,不是那么好做的。而且我很烦这个套路,难道让杀软用户为自己的选择负责么??那要你干什么?
这个问题真的很好,腾讯对这个问题也一直回避。因为这个问题真的很难回答。我谈一点个人看法。
第一,怎么定义隐私。其实聊天记录是相当隐私的东西,腾讯已经完全掌握了所有人的聊天记录。我想这是没法子的事情。所以,隐私的定义就比较暧昧。其实,我来定义的话,就是我不想被别人随便知道的那些东西,就是真正的隐私了。
第二,关于扫描。QQ到底有没有扫描用户磁盘?我个人认为,QQ是扫描了的。主要扫描什么呢?盗号木马,系统环境,比如你用什么系统Win,还是别的,哪个版本,XP还是Win 7,浏览器是什么,IE?Firefox?还是别的。这些估计都要扫描的,不扫不知道。而且,也必须知道。360呢,它更加扫描了,所有的磁盘文件,它都要扫描,不过大家觉得好像360是正义的,因为它是杀软,当然可以扫描。
第三,有没有上传?关于这一点,我没有什么直接证据。但是我想说,腾讯没必要干这个事情。我先前已经说了,聊天记录就是最大的隐私了,里面什么都有可能有,很多人聊天的时候来回报卡号,密码,身份证,都有。有了聊天记录,QQ有了一切。那么为什么要上传用户文件呢?我百思不得其解。假设,我是说,假设上传了,那么腾讯必须解决这么几个问题,存放问题,3亿活跃用户的海量文件,存在哪里呢??难啊,做免费网络硬盘已经成本很高了。现在还要保存用户隐私文件,要消耗巨量的成本,腾讯是傻子么??好,如果不保存,那么传上来干什么呢?那势必要分析,分析完了丢弃。那么难题来了,怎么分析呢?学过一点点计算机的人可能都知道,写一个程序有多麻烦。更不要提写一个分析各种用户文档形成有用数据的程序了。大家骂腾讯是个没技术,没创新的山寨公司时候很起劲,那么这个时候为什么又认为腾讯有能力分析那么海量的数据了呢?有那个能力,不会把搜搜做好一点去抢google饭碗吗?何必跟用户的私人文件过不去?
我说这么多,无非想说,不管这个事情有还是没有,它本来就不符合逻辑。大家自己可以好好判断。
第四,关于监控。我估计,这不是谁都敢谈的话题。我也不想多谈。我只想说,在中国,不监控可能么?虽然我也没有什么直接证据说明QQ监控了,或者没监控。但是想想应该不难推理的。你们懂的。
最后,是一个很好的建议:
如果大家觉得聊天内容本就无关紧要,那么请继续使用网络聊天。否则,请放弃网络聊天,只打电话,或者面谈。
如果大家继续选择网络聊天,那么我觉得选择QQ是完全可以的,因为你本就不在乎被知道些什么。
如果大家非要觉得QQ是邪恶的,那么不选择QQ也是完全没问题的。不会伤害我的感情。不过,我希望大家不要选择使用MSN。那样才会让我痛心。基于几个理由:
1,MSN是个很烂的软件,登录困难,广告难缠,体验差劲,功能缺失。
2,MSN采用明文传输聊天内容,等同于你的聊天内容在互联网上裸奔,没任何安全可言。
3,MSN也不是一个开放架构,而且还是另一个超级流氓微软的产品,曾经做过捆绑到Windows里,视图抹杀一切IM软件的邪恶事情。
那么我来给大家推荐一款很好的QQ替代品,那就是GTalk。
google出品,信誉保证。
开放协议,保证透明。
无穷多客户端,手机上至少10种客户端,pc上更是无穷多客户端,还有web版,那就是GMail。
聊天内容加密传输,保护隐私。
最后,希望大家在网上冲浪愉快。
工作有半年多了,一直顺风顺水,今天一下子接连犯了几个严重的错误。记录下来,时刻惊醒。
**执行删除文件操作,一定要备份,应该让备份过程内化到自己的本质中去。**以前在自己的电脑上,想怎么折腾,怎么折腾,文件丢了也没什么大不了,现在到了工作岗位,所有的文件都很重要,其中有些甚至关乎客户,文件数据直接等同于金钱,不能随便删除。这次我犯的错误只是丢失了服务器的log,后果还不是特别严重,估计产品经理会帮我掩盖过去,如果捅到用户那里,不追究就好,追究的话,我就得背一个事故在身上了。
**使用*NIX的crontab运行定时任务的时候,一定要使用绝对路径。**这个错误实在是太低级了,我感觉自己就像个白痴。说明对Linux的理解,仍旧是一个小白级别的。正是因为填错了路径,造成我上面干的蠢事,把服务器log丢失了。**以后执行任何自动化脚本,应该尽量使用绝对路径。**这个也要内化到自己的本质中。本来自动化脚本就是写好了不用动的东西,为什么要偷懒少写一点路径呢??蠢死了,路径用变量存储,已经非常省事了,还要再偷那么一点懒干什么呢?相对路径害死人啊。
**不能相信实习生。**以前,作为一名实习生,我要求自己要可靠。我想每个实习生也对自己有所要求。但是,说白了,责任不会让任何实习生承担的。不管他们多么负责,也轮不到他们来承担任何责任。所以,你分发出去的任务,本质上都是你的责任。出了问题也要你负责。别人可以帮你做事,但是不会帮你承担责任。所以,不要相信实习生。其实我对实习生没意见,只是想说,一定要对自己负责。要把所有从自己身上分出去的事情,都当成是自己的事情。
引以为戒,引以为戒!!
用了Macbook Pro已经有一周多了,很是惊叹于苹果的工业设计。另外,也对Mac OS X的设计理念深感敬佩。我想,如果我不是一个被Win荼毒了十几年的Win-er,基本上应该是非常习惯并且能轻松上手Mac的。
在MBP上,有几个我非常熟悉的键,我找不到了。那就是PageUp,PageDown和Home、End。失去了才觉得珍贵,以前键盘上有这几个键的时候,不觉的怎么好用了,但是一旦失去了,还真的挺不习惯的。
在网上查了一些资料,看到了替代的方法。在这里记录一下,主要应用场景,就是网页浏览的时候:
PageUp = Fn + UP
PageDown = Fn + DOWN
Ctrl+End = Fn + RIGHT
Ctrl+Home = Fn + LEFT
上面提到的上下左右,就是指方向键。这只是一个替代方案,还是有其缺陷的,比如我发现当文本框获得焦点的时候,就会失灵。
在编辑的时候:
Home = Command + LEFT
End = Command + RIGHT
以上的键组合,基本上可以满足基本的使用,不过组合键总归是不如直接键来得方便。只好慢慢习惯了。
上一篇介绍了Git的一些基本信息和安装方法,这一篇来介绍一下Git的基本使用。首先声明,我不是使用这个的专家,哪怕连熟手也说不上,我这里只是记录了我自己在学习使用Git的过程中的一些领悟。大家要抱着怀疑态度和试试看的态度来利用我的文章,千万不要我说啥信啥。
我不知道一般人的思路是怎样的,我在了解Git的时候,我最迫切的愿望就是,首先能够让我像使用SVN一样来使用Git。我可以不关心Git的各种优秀特性,如果它不能像SVN一样地工作,那么对我来说,学习它的动力就会大打折扣。
先来看看我在SVN的帮助下,是如何工作的:
首先,我会找一个免费的项目托管服务,通常情况下,是Google Code或者是WordPress Plugins Directory,这是因为我大多数情况下开发的东西都是WordPress插件,而上述两个地方都提供以SVN为平台的项目托管;
创建一个名为my-foo-bar-project的项目,然后,我就已经在服务器上有了这个项目的根目录,一般我会这样设计我的项目根目录,根目录下会有三个子目录,一个叫trunk,一个叫tags,一个叫branches,第一个用来存放我大多数情况下在其上工作的版本,tags经常用来备份我项目的一个稳定并且已经发布的版本,branches通常情况下我并不使用;
事实上,这个时候my-foo-bar-project已经有了其基础的代码框架了,我并非一无所有。这时候,我会首先svn checkout http://svn.wp-plugins.com/my-foo-bar-project/trunk my-foo-bar-project,执行这个命令,我会在磁盘目录上得到一个叫做my-foo-bar-project的目录,并且,这个目录已经被纳入到了svn的管理之下,刚开始学习的时候,我用TortoiseSVN来做这部操作,要做的事情只是找到项目的url,然后在资源管理器里点点鼠标;
接着我会把我以后的项目代码拷贝到这个目录中,然后执行svn add . 命令,将所有的文件都加入到svn的监管之中,然后执行svn commit –m “Init commit.” ,如果我有乌龟SVN的话,我不需要add,只需要直接commit,然后用鼠标勾选新加入的文件,就可以完成任务;
到这里为止,我的项目的主要代码已经纳入到了SVN管理中,我可以放心地不断提交我的工作副本(working copy),因为我知道我可以随时回滚到旧的版本;
当我发布好一个稳定版本之后,我会用svn cp命令或者乌龟SVN的tags/branches命令来备份一个版本;
以上就是我在SVN管理下的全部日常工作了,注意,里面没有提到怎么回滚文件,因为事实上,我真的很少做文件回滚操作,我不喜欢回滚,我提交代码相当谨慎。或许以后,我会研究一下,到底怎么回滚,为了回滚而回滚。
我花了很多的篇幅来介绍我在SVN下如何工作,就是为了要说明我下面的一些举动以及尝试的指导思想,我只是想要一个更好的,更安全的SVN,然后,我才想要一个Git。