Eclipse自动检查编码规范插件checkstyle。

安装的方法有很多种,相信都能安装。

安装完后在Preferences里可以看到checkstyle。

点击代码的右键,在最下边也可以看到checkstyle,有check code(检查)和clear checkStyle(清除检查结果)。

在checkstyle里有两个默认的配置,但都不能修改。所以还是选择其中一个要Copy,这样才可以修改。再Save as Default。

其中有几个地方要修改下:

方法与全局的变量的javadoc一般不需要,有一些方法并不用写javadoc,当然可以不去。

 

每行的最大长度,默认是80,80肯定不符合要求,可以改成150或300(改成150,似乎对于85的长度还是有错,所以改成了300)。

Magic Number

根据意思是除了-1,0,1,2之外不能用数字作为常量。但有的时候数组还是会用到。

所以要把这个给去了。

还有一些错误要注意的是:

First sentence should end with a period.

在Javadoc > Style Javadoc里可以看到EndOfSentenceFormat的描述:([.?!][ \t\n\r\f<])|([.?!]$)所以在第一行里要加上.?!这几个字符,且要是英文字符,不能是中文字符。

Leave A Comment, Written on 四月 11th, 2012 , Eclipse

第二个Stylish 样式。

Gmail里搜索条太浪费空间了,还有那个操作条。

把搜索条移动到了顶部,操作条减少上下边距,这样看起来清爽多了。

修改后:

Stylish样式链接:Gmail – To maximize space

Leave A Comment, Written on 三月 25th, 2012 , 未分类

因为有人在酷壳里评论里说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件,让我很感动。其中,有一个故事让我回味很久,在脑海里挥之不去,可能是因为她的经历和我很相似,她的想法和我很有共鸣。

本来,我想通过收到的这些故事然后编辑成一篇关于女程序员的文章,但是我觉得这个故事已经足够好了,任何的编辑都是对这个故事的不尊重,所以,我原封不动,一字不改地把这个故事转到这里。我把一些我认为精彩的地方加了粗。

当然,我还是会再写一篇关于女程序员的文章,酷壳2011年底的最后篇文章和2012年的第一篇文章都是给女程序员的,因为,我为你们骄傲!

从哪里说起呢,我的程序员之路。有些话只是自己心里想的很明白,还从没说过。希望你有耐心看完,因为我的故事不精彩,也算不上奋斗史。我的文笔和叙事能力也很差。

高中报志愿的时候坚定的报了计算机技术及应用,当时对计算机的认识只是机房里的苹果机,和老师教的用basic 输出一个正方形之类的。 我当时觉得我对计算机一无所知,我想了解他,就选择了这个专业,当然当时程序员的收入也是可观的。 :)

大学四年下来,我的成绩 不好,基础也不好,没拿过奖学金。大学的课程很多不喜欢,我不知道为什么计算机系还要学高等物理,和马列毛邓。这是题外话。说实在的,很多课上的我一头雾 水。毕业后找工作不满意,我直接去读了软件工程(考研的专业课成绩没到线)。两年制,一年上课,一年实习。我想给自己的履历上增加一些至少能给我面试机会 的经历。(我仔细思考过我成绩不好的原因,心里因素是主要的,高中在重点中学,我不能接受自己不是尖子生的事实,总在想自己为什么这么差,以至于这样的心 情影响了我很多年,一直到工作后的几年)

 

实习的第一家公司是个私企,工作两周后他们不满意辞退了我,沮丧是当然的,我知道我的能力是有差距的。虽然他们没有任何培训,直接拉去干活,起码的业务流程也没给我讲,但是我真的发自内心感谢他们辞了我,让我认清了自己。其实当时干的就是一些perl 脚本和php的网页开发。

实习的第二家也是私企,给运营商做项目。我参加的是一个工作流项目,用java开发。我当时的java技术仅限书本身的不怎么牢靠基础知识,至于怎么设计这个系统也没有一点概念,终于一个月后我决定退出了。经过这一个多月,我似乎知道了自己该从哪里开始了。就从java开始吧

经同学介绍,去了第三家 实习公司,面试的经理对实习生要求不高,让我能有机会实习。做的是银行和证券公司的网站,我主要做前端jsp的页面,同时我也选修了学校请的一位 Weblogic的工程师开设的J2EE的课程。总算开始入门了。公司的同事很帮助我,有耐心让我了解了系统后台的架构。后来我随几位去客户那里出差,周 末和晚上加班,为了他们临时改的需求。同事说,你一个女生出差一点不发憷啊。其实我一点不觉得累。同组的team lead没事就鞭策我说,你就甘心写code么,不能总是做开发,该为以后想想。但是我当时想法是,我的视野当时有限,还不确定自己能做成什么样子。我在 这家公司完成了毕业论文。然后毕业。

毕业找工作,我没有留在 实习的公司,我想多试试。找工作的经历不多,我去过联想面试,笔试过了,一面是HR面,题目现在大概还记得,如果有化学家,天文学家,医生,乞丐,孕妇, 在一个荒岛上,你只能带走一个,你带走谁呢?分组讨论,得出一致的结论,也要说出自己的结论。 同组有清华的毕业生,真的很自信,她说要带走天文学家。我说,出于人道,我肯定带走孕妇。后来就没了消息。难道医生可以留下照顾孕妇么,还是HR以为我选 孕妇是注重家庭的人,没有事业心呢,我觉得这题真的不能说明什么。

之后面试了一家日资企 业,一面是很多人一起面,我听了一圈之后,觉得自己有些把握,因为同组的人比我差,看来我运气挺好的。他们之中有本科生,有研究生,都是男生,就我一个女 生。问的也挺基础,就是servlet如何工作,写没写过SP,其中有个人问,什么是SP,没人理他,我告诉他是store procedure。面试官是个部长。后来HR的人过来让我留下二面,说我一面打败了所有男士。说来惭愧,我真的是运气好,没碰到牛人。二面经理只问了些平常的问题,就过了,于是我来到这家工作。考虑的是,外企多少工作流程上比较规范,也见见日本人是怎么工作的,还有就是自己能力有限,欧美大公司估计是没戏的,我还是从力所能及的开始吧。

日本人工作的风格大家应 该有所耳闻,就是喜欢加班,我进公司的第一个项目是代码改造,把VB6.0d code重写为VB.net。 加班到凌晨是常事,另外一个就是team lead的风格是没事也不能早走,也得耗到半夜才行。开始做的真是一点技术含量都没有,都是日本人写好guide,告诉你什么改成什么,别问为什么,不能 有异议,他们怎么说你怎么改。弄得我当时都不去思考这里的技术细节,这是我当时犯傻的表现。除了技术本身,还有很多需要学习的。后来陆续做了一些我喜欢的 java的项目,用到了sping,hibernate,ibatis, struts, ant等等。还有一些日本人自己开发的框架。每个项目的业务也都不同。在这家工作了三年,我觉得这不是我要的,我的技术提高有限,做的事都是别人设计好, 甚至告诉你code应该如何写,而且做事风格不是我想要的。 我想去欧美文化的公司试试。也想做通讯相关的。

同学帮我投简历,我面试 一家对欧美的外包企业,一面是本公司的人面,问了项目情况,说了说英语,我准备还算充分,过了,二面是公司的客户面,到公司和客户开电话会议面试,第一次 和老美直接对话,我虽说有点紧张,但是还是专心听他的问题,听不清的就让他重复一遍,我现在记得的一个问题是如何写出高效的SQL。面完回家等通知。过了 几天我收到了offer。

客户是为运营商提供软硬 件服务。我们做的是BOSS系统的一个模块。都是java api。 几乎用到了J2EE中定义的所有组件和java相关的框架。我在这家工作至今。技术从不熟悉到熟悉,业务逻辑从不熟悉到熟悉,都是在开发每个 feature和改的defect中慢慢了解的,硕大的系统不允许我一口吃个胖子。只要脑子里绷根弦就每天都有进步。加班不是常事,但是也有紧张的时候。 有时候一个defect要跟踪成千上万行代码,你才知道哪里出了问题,这是需要耐心和细心的。给客户的客户做support的时候,经常被半夜的电话叫醒去看一个现场的问题,我不觉得累和烦,我觉得这是我价值的体现(当然这不会每天发生)。修复一个defect我会有一点小小的成就感,每天晚上回家方便的话也会看看邮箱,看看有没有紧急的事情。有的人认为你下班了就没必要再管工作邮箱了,但是我愿意这么做,我觉得这是我职业精神的一部分,也是工作态度

偶尔会帮着公司招聘毕业生,有时候会遇到什么简单问题都答不上来的人,我感觉就像看见当初刚毕业的我,临走,我会说一句,没关系,回去好好准备,看看基础知识。

我曾经怀疑过自己是否适 合做技术,总觉得自己不如男生,也总在问自己的路在哪。而且没有自信,曾经紧张到,有人看我打字,都紧张的手抖。到现在,我觉得做技术挺好,就像你说的, 我清楚的认识自己,我不是技术大牛,就每天写着自己的code,了解业务,挺好,但是不代表我不上进。很多女同学现在都不做技术了,也不写code了,但 是我还在做,甚至越来越喜欢,在中国有种普遍的想法是,作几年技术该转去做管理,否则认为你不成功,这是人云亦云的说法。我想我为什么不能一直做技术呢? 虽然中国的大环境可能不适合你一直做技术,但是我愿意试试。我不愿意放弃多年来积攒的一点点优势。何况我现在工作上越来越得心应手,不久前,我收到客户的邀请,他们想让我transfer到美国或者加拿大成为他们的一员,我在等待漫长的人事流程,也有可能会pending。但是我无所谓,我现在自信,知道想要什么。一直做技术,怎么了,不行么?

谈到男 女程序员的问题,有些男人以技术强自居,而少了一点谦逊和工作的严谨。有些技术不强的,有些懒散,得过且过。都是我遇到过真实的人。同组的一个女生来了几 个月就比一个来了一年多的男生上手快,这说明什么的,态度和努力是重要的。我更认同的是技术和男女无关,和个人有关,任何以偏概全都是片面的

同组的男同事们没有因为我是女性而轻视我,我很感谢他们,在一个team工作,技术是必要条件不是充分条件,合作,交流,态度,遵守流程,任何一个都缺少不了。如果我只是技术差点,那么我提高的空间是很大的。 多看看书,真的不难。虽然我可能离amazon或者是google这些企业的要求还有差距,但是那是我的方向。不过像baidu,腾讯这些流氓公司,给我多少钱也不去,女程序员也是有傲骨的,虽然也有可能他们看不上我的能力,但是,那又有什么所谓呢。

如果你能看完我这如白开水的文字,很感谢,因为我写的实在太不好了,这些经历普通不过,也证明我是个普通的人,如果我高中的时候不那么在意自己是不是优秀生,就能放轻松,大学(也在想这些)会有个好成绩,没准我就能如愿的毕业就进欧美大企业,不过那样我可能也少了以上跌入谷底的经历和现在平和的心态,我想后者对我更有意义

不用署名,有的话,一个女程序员,哈哈。有错误处,见谅,中午休息,仓促的回顾了这些。技术本身心得有限,我就不班门弄斧了,还需努力。也请不要注我的微薄行号啦。另外我老公也是程序员,我和他能谈些技术和项目上的事情,我想是非女程序员感受不到的乐趣,哈哈哈。

看到这里你还不想为她鼓掌吗?

最后,请让我我再次征集——

call 所有的女程序员,我想给你们写一篇blog,希望你们能和我分享你们的程序员的经历和技术心得。你是男程序员也没有问题,也欢迎分享你身边女程员的故事。 大家可以发邮件至:haoel(at)hotmail.com

(全文完)

原文:一个女程序员的故事

Leave A Comment, Written on 十二月 31st, 2011 , 转载

在Java平台上有很多官方的和非官方、第三方的压缩工具包,它们各有各的长处,比如Oracle官方的java.util.zip 类库,Apache网站上的Apache Commons Compress 类库,或者Chilkat Java Zip 类库,但总体说来,这些类库提供都是低级别的API,操作起来都不是很方便,而今天推荐给大家的这个叫做ZeroTurnaround(简称zt-zip)的压缩类库的特点就是方便、简易,我们可以比较一下,如果用标准的Java类库压缩一个目录里的所有文件,你需要写出的代码大概是这样:

<code>
File dir = new File("demo");
ZipOutputStream out = new ZipOutputStream(new FileOutputStream("demo.zip"));
try {
    File[] files = dir.listFiles();
    for (int i = 0; i < files.length; i++) {
        File file = files[i];
        ZipEntry entry = new ZipEntry(file.getName());
        entry.setSize(file.length());
        entry.setTime(file.lastModified());
        out.putNextEntry(entry);
        FileInputStream in = new FileInputStream(file);
        try {
            IOUtils.copy(in, out);
        } finally {
            IOUtils.closeQuietly(in);
        } out.closeEntry();
    }
} finally {
    IOUtils.closeQuietly(out);
} </code>

而使用zt-zip工具包,你的代码就变成了只有一行:

<code> ZipUtil.pack(new File("demo"), new File("demo.zip")); </code>

你不需要自己去关闭文件的数据流,这个类库的接口自动替你你做了这些。

可能经常做Java压缩编程的人会提到另外一个压缩类库:TrueZIP, 这也是一个非常好的类库,而zt-zip跟它比起来的一个优势是:消耗内存很少,这是因为TrueZIP大量的使用了虚拟机的堆内存,而zt-zip却是 只是以数据流的形式进行操作,当然这也是zt-zip的API提供的功能很有针对性、不是TrueZIP API那样通用的原因。

你可以在Github上下载这个类库

原文来自:软件开发工具推荐:ZeroTurnaround ZIP类库

Leave A Comment, Written on 十二月 15th, 2011 , 转载

自从上次Google Reader修改了样式后,就一直觉得那个白白的样式很是痛蛋。

于是终于用Stylish来修改样式 了。

下了一个样式,觉得挺好的,不过还是觉得不太满意。

于是就有了这个样式。

Stylish样式链接Google Reader – Minimal Readable Full Screen Expan

Leave A Comment, Written on 十一月 30th, 2011 , 自创 Tags: ,

因HP已明确表示放弃Web OS所以Touchpad的售价现在也是见了底。如果只是web OS操作系统的话相信对用户的吸引不是很大,但如果装上Android双系统相信会使它强大不少。要在HP Touchpad上安装Android的方法非常简单,请参考以下三步进行安装。

因HP已明确表示放弃Web OS所以Touchpad的售价现在也是见了底。如果只是web OS操作系统的话相信对用户的吸引不是很大,但如果装上Android双系统 相信会使它强大不少。Android已经成为与苹果的iOS在移动手机平板设备上最强大的移动操作系统平台。要在HP Touchpad上安装Android的方法非常简单,请参考以下三步进行安 装。

虽然惠普已经宣布将放弃web OS的升级,但惠普仍将为产品提供软件和硬件售后支持。如此低价的平板电脑再加上能够安装Android操作系统凸显出 Touchpad的性价比。在国外市场上当惠普宣布将Touchpad的售价调低为100美元时,有几个团体表示将尝试将Android系统移植到Touchpad上。甚至还有人开出了2000美元的奖金以 鼓励第一个实现移植的团队。

有以下几点需要在HP Touchpad安装Android操作系统前指出:

  • 1. 安装 Android操作系统可以影响产品质保。
  • 2. 此教程会安装Android和web OS双系统,而非替代web OS。
  • 3. 本教程使用的Android为移植版本,系统Bug无法避免。刷机失败后果自负。
  • 4. Android刷机后某些功能软件可能与HP Touchpad硬件不兼 容。
  • 5. 刷机后安装的Android版本为2.3(因Google没有开放3.0 Honeycomb源码,期待刚发布的Android 4.0),故Android 3.0应用将无 法运行。

此教程发布后相关刷机技术仍会继续,你可以访问此论坛了解最新进展更新的支持(英文)。

HP Touchpad刷Android操作系统必备文件下载

首先我们要为 刷机升级做好准备,我们需要下载以下几个文件到电脑上面。首先是要下载安装Palm Novacom。你可以通过免费下载安装webOS SDK来安装它,点击下载Windows版本。你不用安装 Virtualbox和Java,所以直接跳到SDK下载,然后安装(下图)。可以选择自定义安装,在以下界面上确认Palm webOS Command Line Interface Tools是选中的,它就是我们要的 Novacom。

  • 然后从Google代码上下载moboot。下载完后不要解压此压缩文件。
  • 下载CyanogenMod 7.1.0 ALPHA 1,这就是要刷机的系统文件了。你可以从上面的论坛里面去下载最新的版本也可以从镜像站下载。不用解压此软件。
  • 下载Clockwork recovery。可以从上面的论坛地址里下载到,或从镜像站下载。不用解压此文件。
  • 下载ACMEInstaller。可以从上面的论坛地 址里下载到,或从镜像站下载。解压此文件。

将刷机文件复制到TouchPad 打开TouchPad,并用USB数据线将它与电脑连接。连接后在TouchPad主屏上选择USB驱动(USB Drive)模式(下图)。 在TouchPad的内存上新建一个文件夹(例如cminstall),将CyanogenMod的Zip

将刷机文件复制到TouchPad

打开TouchPad,并用USB数据线将它与电脑连接。连接后在TouchPad主屏上选择USB驱动(USB Drive)模式(下图)。

在TouchPad的内存上新 建一个文件夹(例如cminstall),将CyanogenMod的Zip文件,ClockworkMod的Zip文件和moboot压缩文件复制到此目录(如下图)。

下一步请确认TouchPad有至少2GB的媒体空闲存储空间。CyanogenMod 需要至少2G的空间来存放系统文件,并且会重新调整媒体盘的空间大小。然后在电脑屏幕的右下角点击USB设备将TouchPad卸下(下图),但不要把USB连接线拔掉

安装刷机用的 Bootloader到TouchPad

关闭TouchPad,方法为按住电源键不放,直到弹出关机选项。选择关机(Power Off),如下图。

关机后再按下TouchPad的开机键,在开机时立刻按住音量调大键直到 屏幕上出现一个USB链接图标,如下图。

将ACMEInstaller.zip用解压到c:\Program Files\Palm, Inc目录(如下图)。 打开命令提示窗口(在Windows 7上点击左正解的微软图标,在搜索框中输入cmd然后回车。XP下在运行中输入cmd然后回车。)在命令提示框中输入

将ACMEInstaller.zip用解压到c:\Program Files\Palm, Inc目录(如下图)。

打开命令提示窗口(在Windows 7上点击左正解的微软图标,在搜索框中输入cmd然后回车。XP下在运行中 输入cmd然后回车。)在命令提示框中输入:

cd “c:\program files\Palm, Inc”,回车。然后再输入以下命令,如下图:

novacom.exe boot mem:// < ACMEInstaller

然后等几秒钟TouchPad就会重启,然后你不用做任何操作TouchPad会自动进入Linux的启动界面,如下图。

现在开始等待,刷机升级完成之后TouchPad又会重启,重启 后我们就可以看到CyanogenMod 7.1的Alpha版本(测试版)的界面了,如下图。

如何TouchPad在webOS与Android系统中切换 要在webOS和Android两个系统之间进行切换你只需要重启TouchPad,然后在开机时的moboot界面上使用调大和调小两个音量键来选择系统,然后用Home键确定就可以了,如下图。好了

如何TouchPad在webOS与Android系统中切换

要在webOS和Android两个系统之 间进行切换你只需要重启TouchPad,然后在开机时的moboot界面上使用调大和调小两个音量键来选择系统,然后用Home键确定就可以了,如下图。好了现在你可以体验一下 TouchPad上的Android 2.3系统了。

课外 作业 – 安装Google Market市场

CyanogyenMod系统自身不带任何Google官方的应用,也没有Android Market。如果有菜市场安装应用会方便得多。要安装 Android菜市场请依以下步骤操作。

第一步是从CyanogenMod Wiki下载Google Apps安装包,你需要的是CyanogenMod 7的版本。下装完成后不要解压下载到的文件。将TouchPad与电脑用USB连接线连接,在 电脑上将刚才下载的文件复制到之前在TouchPad的内存上创建的cminstall文件夹(如下图)。然后重启TouchPad。

 

在TouchPad上看到moboot界面时选择ClockwordMod。然后按Home键(如下图) 。

然后用音量键选择install Zip from sdcard,按home键(下图)。

然后定位到 TouchPad的cminstall的目录,选择刚才复制进去的zip文件,如下图。

再用Go back返回到moboot的界面,然后选择重启(Reboot)。进入系统后你需要设置Android帐号等基本配置。设置完成后你就可以看到和使用Android Market,Google地图和Gmail了,如下图。

到此 为止,所以的工作都完成了,开始体验TouchPad的Android吧。

相关介绍:

什么是CyanogenMod?

CyanogenMod是一个基于开源Android系统,供某些手机使用的二级市场固件。它提供一些在官方Android系统或手机厂商没有提供的功能 ,例如:支持Free Lossless Audio Codec – FLAC (无损音频压缩编码)音频格式的音乐,多点触控, 从SD外置存储器运行程式,压缩缓存(compcache),大量APN的名单,重新启动功能,Wi-Fi无线网络支持,蓝牙,USB网络 分享等。CyanogenMod也是第一个使用BFS作任务管理器的操作系统。CyanogenMod声称提供比官方固件版本更高性能和更可靠,【来源Wikipedia】。

转文原自:HP Touchpad平板刷机安装Android双系统图文教程

CM7的 HP touchPad版块

Leave A Comment, Written on 十一月 29th, 2011 , 转载

自从那篇rant了一堆公司都的文章发布来,得到了大家的关注,有些朋友让我写一下腾讯,在我的微博上(@左耳朵耗子)还有位腾讯的朋友让我也评价一下腾讯。本来不想写的,觉得腾讯没啥好说的,但是因为下面的几个原因,让我有点坐不住了:

  1. 这两天知乎上的一个“腾讯的核心竞争力”的贴子在微博上被很多人所推崇。
  2. 还有一个网友发邮件给我说让我别rant了,宁可C2C也比rant有意义。
  3. 我周末的时候去豆瓣和他们交流了一些关于产品和用户体验方面的话题。
  4. 还看到了Jeff Bezos的访谈文章《贝佐斯:亚马逊是科技界唯一一家低利润公司

于是就有了这篇文章,但不想再rant了,我希望这篇文章更有价值一些,但是我喜欢的调侃的风格依然,因为这是我觉得能让文章有趣味的方式。

腾讯的“价值”

首先我想说说腾讯的价值。根据我那篇 rant 的文章来 说,我觉得人要活得有价值,事业也要做得有价值。我不太待见那些没有价值的东西。所以,我在那篇文章里让大家都思考了一个问题,我们做这个事的价值在哪 里?所以,要评论腾讯,就得想想他的价值。众所周知,腾讯的起家是通过IM软件QQ,当然,他有段时间几乎快不行了。不过挺过来了,造就了这么一个帝国。 所以,腾讯的价值应该是即时通讯,让大家的沟通变得更顺畅,这点腾讯的确做得非常强大,视频,音频,涂鸦,抓屏,表情,Q币,共享,群聊,新闻,弹窗,离 线文件,远程协助…… 的确做得非常地体贴用户。除了扫描硬盘文件有点那个。

但是,最近的腾讯变了(当然有人说他也没有变,QQ本来就是抄来的),有什么就抄什么,没有创意,山寨大王,成了腾讯的代名词。马云也说过:“现在腾讯拍拍网最大的问题就是没有创新,所有的东西都是抄来的”。网上还有很多,什么“一直在抄袭,从未超越过”或是“一直在山寨,从没反省过”等等的话,还有“自从有了XXX,腾讯就出了XXX”的文体。

但是,你们都错了,包括马云,我不同意你们,我觉得这正是腾讯的价值所在

 

昨天有个网友写邮件给我说,整天rant也没啥意思吧,还不如真的做点C2C吧。他的想法是先把一些基本的东西如评论,发贴,头像,登录什么的都做 好,然后国外出什么就抄什么,抄的会飞快。我给他回信说,你抄得过腾讯吗?他无语了。你看,一个有C2C想法的人就这样被放弃了其想法。所以,我觉得,腾讯这样大规模的抄袭和山寨,对整个社会的价值就是——会让很多很多的创业团队放弃Copy,甚至让他们要放弃那些容易被复制的“业务型的项目”,而逼着他们去努力思考,如何才不能被腾讯复制,如何才能有自己的核心价值。而所有的骂名都被腾讯所承当,腾讯把住了所有的茅坑,让你不得不去做最有价值的东西,这是一种什么样的精神啊?!对于那些整天都在骂腾讯的人来说,你们好好地去面壁反思吧!

“腾讯的核心竞争力”一文

顶在这篇文章最上面的最佳答案是腾讯无线国际业务产品总监Andy Pan的答案,在微博上也广受推崇。不知道为什么,我总是有一些和大家不一样的想法,看来我是一个有相当逆反心理的愤青。没做出什么东西来,话还挺多,我都有点烦自己了,你也多多原谅我。

Andy Pan的答案中,说了两点核心竞争力,第一个是腾讯的IM平台,还用了Windows来做比较,很明显,这个前微软件的产品总监并不知道什么是平台,关于平台,Steve Y的这篇平台论说 得很清楚了,建议Andy同学学习一下。Windows之所以是个平台的原因是因为Windows没有什么都做,而是开放了很多很多的API和SDK让第 三方的产商去做,而腾讯并没有开放IM的API,不但搞定了珊瑚虫,而且什么事情都要自己做,这根本不是平台,平台是要去开放的,是要去为业界创造生态环 境的,而腾讯的做法更像是封闭的垄断。当Andy Pan说起Amazon收购Zappos的时候,他忘记了Amazon的云平台上还养了一个巨大的竞争对手Target(最近分手了),还养了十年。因 为,Bezos觉得有个竞争对手和自己进行良性的竞争对自己是有好处的。

Andy还说做为一个IM细分用户的领域是有必要的,没错,完全赞同。不过,实在看不出来对领域的细分,更多的是对领域的扩张。新闻门户,搜搜,拍 拍,百科,Q吧,炫风,炫舞,三国,英雄杀,浏览器,输入法,对战平台,电台,影音,图书,阅读,3366,QQTalk…… 一点都看不出来的是对IM的细分。你信吗?

第二个Andy说的核心竞争力是员工加班。加班到深夜也成了核心竞争力,看来是实在找不到核心竞争力了。好吧,我觉得这句话可以说得更好一些,再怎 么也应该说成是企业文化,或是企业文化催人奋进,每个人都有主人翁的精神,而不是工作负荷大嘛。你看,我都能说的这么漂亮啊,我才是像高管的样子哦,吼 吼。对我来说,加班文化是差团队的表现,要么就是管理不行,让大家都加班,要么就是自己不行(反正肯定有问题,我在多些时间能少些代码里论述过了)。当然,我知道了,腾讯的战线拉得很长,什么都要做,当然会那么累了,要学会做精不要做多嘛。

作为一位高管,应该要知道,重要的不是你有多努力,你花了多少时间,而是你有没有去思考,有没有去创造价值。腾讯难道不觉得,不断地创新去颠覆传统才是互联网行业的核心竞争力吗

我觉得腾讯那所谓的核心竞争力是用户数量大,大在关系链上,像我这样几本不用QQ的人有时候都会被朋友和同学逼着去用QQ收个文件照片或是远程协助个什么。QQ这个聊天工具做得非常不错,这点我是要赞一下的。所以,这才让用户聚集起来,没有了这个,不知道腾讯会怎么样。

腾讯的软肋

Andy Pan有一点说的是对的,就是腾讯和微软很像,不过像的不是平台,而是运营模式——那就是永远跳不出自己的模式。微软不管做什么,都必需誓死捍卫其 Windows平台,连那么有创造力的体感硬件Knect也只能用在微软的产品和平台上,更不用说hotmail,Bing和Sharepoint了,如 果能开放一些用点别的技术,我相信微软在互联网界可能还是很强大的。

腾讯也逃不出“腾讯的模式”——那就是大量的低端用户和低端内容。我不确定腾讯是不是像微软那样誓死捍卫其低端 用户和内容的。但是QQ的确驱逐了很多高质量的用户,因为QQ上的不成熟的小孩太多了,交友,网恋,甚至欺骗和色情在那里泛滥,造成劣币驱逐良币。另 外,QQ这个名词起得很不好,因为正常点的成年人都不会去Q(装可爱),所QQ好像也就成了未成年人的代名词。而似乎有自我价值诉求的人都不会用QQ,在 正式场合比如自己的应聘简历上留一个QQ邮箱还是有点掉价的。可见QQ的这个品牌形象很低端。腾讯的很多产品都走的都是这个路线。

不可否认,这和中国网民的群体素质有关系。但我以为,作为那么大的公司,应该担负起培养或引导网民素质,开启民智,引人向上的角色,而不是将就于低端的大众用户

另外,还值得一提的是近来关于通过QQ抓人的新闻很多,所以,大家都知道的为什么更多的用户去用gtalk了。不过有一点应该是真的,那就是通过QQ监控聊天用户的体验,应该是很不错的。

看到这里,你一定会对我抱怨说:“我擦,你这篇还照旧是一篇rant,fuck你一万遍”。别骂了,你没有看我已经赶快起了一个新段落来说点我觉得有点价值的东西。

真正的用户体验

说起用户的体验,这是一个可能比较大的,也可能比较具体的话题(以前本站有一篇关于UX比喻的文章)。关于用户体验来说,很多人都以为是对UI的一个加强,也就是说把UI的操作做得更好。所以,大家都在UI上花大力气做UX。这样的认识并不错,QQ做得也是非常好的,看看WebQQ,真是非常地强大。

不过,我想说,如果你认为用户的体验在UI上,那么你只看到了用户体验的冰山一角,用户的体验远远不只这个。“任何表面上的东西都是肤浅的”——这是写Effective C++的Scott Meyers说的。

你看——Reddit,Twitter,StackOverflow, 还有国内的豆瓣,界面做的真的不怎么的,Reddit的界面ugly到了就像是一个没有完成的原型网站一样!但是为什么人家的用户人气那么旺,为什么呢?

这就是我想说的比UI更高层次的用户体验了——关注用户的真正的体验。我先举个例子——

大家知道Amazon注册了很多个容易让人打错的域名吗?我这里有一个不完整的列表:Amamzon.com, Amaxon.com,Amazong.com,Amozon.com,Amazonc.com,Amazone.com,Amazn.com(翻 墙),namazon.com…… 为的都是用户体验。(注:你要是用拼音也可以,如:yamaxun.com)

这是一个很小的例子,旨在说明用户体验不单单是UI的事。

下面正式阐述真正的用户体验(这些东西我在前面那篇rant里提过了,这里说得更细一点)——

  • 注重社区的质量。很多论坛和网站的兴起都是因为一开始有高质量的文章和素质高的人,然而,人气一足,三教九流 的人都来了,于是劣币逐良币,那些素质高的人就只能离开了。所以,任何把高质量和低质量的东西放在一起的社区相当的破坏整体用户体验。尤其是那些对质量有 诉求的人。为了避免劣币逐良币,大家要学习一下豆瓣,StackOverflow,没有什么热文版,就算有,也要精心地控制内容的质量。你要知道,人们来这里是因为被这个社区有价值的东西吸引来的。 就像是去StackOverflow或Quora一样,可以得到很靠谱的答案,可以和很牛的人在一起交流,这是社区的价值。所以,像 StackOverflow或Quora这样的网站,一些质量不高的答案在那里就会被投反对票,其会影响你的reputation。看看 Amazon.com上的书评,IMDB上的影评,非常专业,还有打分,高质量的东西自然就浮出来了,低质量的东西自然就下降了。小心维护社区的质量必然会给用户有更好的体验。(不知道大家有没有参加过豆瓣的小组活动,我有一个朋友参加过一次关于绘画的活动,说是质量相当高)
  •  注重社区的权威。像豆瓣或是Stackoverflow上都有评分。你怎么能让你的评分有权威性呢?你知 道,在中国这块土地上有大量的五毛和水军,他们随时都可以开动,3Q大战的时候大家都见识过了,对于这些牛皮癣怎么办呢?在Stackoverflow 上,你会发现,你没有15点reputation,你没有资格vote什么,你为了要能去vote什么,你先得贡献些什么,对于不懂技术的五毛和水军们完 全搞不定这些东西了(当然,你可以去建一个问题,但是要小心被down vote)。对于豆瓣来说,豆瓣的每个用户都有个权威值,这个值通过用户的在线时间,发贴数量,访问次数,有没有高质量的文章,有没有参加社区活动,等等 等因素,得出一个权威值。刚注册的用户权威值为0,如果有了一些负面的东西还有可能是负数,有些被社区所推崇的牛人级的用户的权威可能高达几千几万。这 样,当水军和五毛们对一本书或是一个电影投票的时候,就算是数量大,但基本上没有什么作用。这就是为什么豆瓣里有的电影有70%的人投了三分或四分,但那 个电影还是在快5分的样子。这就是为了维护社区的权威和质量的体现。淘宝的好评差评也是一样,但是如果可以被水军去冲的话,那就很没有意思了。看看大众点 评网里的那些评论,很多都完全失去了权威。因为他们没有vote的机制。
  • 注重用户的个性化,并引导用户。登录进入Amazon或豆瓣或是新浪微博,在首页上,你会看到你所关注的东 西。整个首页是为你个人量身定制出来的。这样一来,就算这个社区里有什么流氓或是低端用户,那也不会影响用户的体验(新浪微博的隐私设置也是很不错的)。 最注要的是,这让为引导用户,开启民智做了充分的准备——这就是推荐。Amazon是推荐算法的鼻祖。推荐书,推荐产品的邮件,页面定制,等等。 Henry Ford 说过——“如果你问用户想要什么,他们会告诉你要一匹更快的马”,看看苹果的设计出来的产品,都是在引导用户,如果你只看到了苹果的UI,那只看到了一部 分。苹果开发的东西都在引导用户认可和追逐有艺术气息的数码产品。所以,根据用户的特征来向用户推荐并引导用户,告诉用户什么是好的,什么是有价值的,才是真正的用户体验
  • 把事变简单,把难度降低。还记得以前的PC上的Windows吗?还记得以前的个人主页,现在的blog吗? 他们可以让更多的人会更容易地操作电脑,发布信息。看看苹果的iPad,其可以让一个5岁的孩子或是60岁的没的接触过电脑的老人在5分钟内学会使用电脑 上网浏览。这意味着什么?这意味着会使用电脑的人越来越多;可以让更多的人发布自己的信息。这意味着什么?这意味着金字塔低端的人会越来越多,于是生态环境也会越来越好对于业务来说,你需要给予end-to-end的服务。就 像苹果一样,你不要担心买来电脑怎么去装软件,去下载音乐和电影,也不必担心会装上恶意的软件。就像Amazon的第三方商户平台,对于商户来说,你把货 发给Amazon就好了,你不必担心库存,物流,客服,退货,财务,所有的一切都由Amazon代劳了。这些东西才是最强悍的东西。(腾讯的QQ也是让很 多人能上网聊天,降低了网聊的难度,所以也流行了起来)

上面的这四点真正的用户体验,腾讯有没有做到?你有答案的。老实说,腾讯的用户体验只做了些很表面的东西。

最后,让我用我东家老大的话来结束这篇文章—— 

“我们对于完美客服体验的理解是,用户其实并不希望与我们直接对话。每次客户联系我们,我们都视为工作中的失误。我已经说 了好多年了,人们应该与他们的朋友交谈,而不是与商家。因此,我们充分利用各种客服信息来探究客户联系我们的真正原因。什么地方出现问题了?那个人为什么 要打电话?为什么他们花费时间与我们交谈而不是与家人交谈?我们如何解决这个问题?”

—— Jeff Bezos

尊重用户,提高品质,不断创新——这才是互联网企业的核心竞争力!

最后注明一下版权,本文由陈皓原创发表,你可以任意传载,但必需在明显位置注明作者和出处,而且不能用于任何商业用途

原文:腾讯,竞争力 和 用户体验

Leave A Comment, Written on 十一月 24th, 2011 , 未分类

通常你在进入Google.com的时候会被强制跳转到本地的Google搜索(应该是根据IP判断的),对于景德镇人民来说就是 Google.com.hk。资深Google用户都知道利用Google主页下方的Google.com in English链接即可进入正牌的美国英文Google搜索,老泡儿们则会通过 google.com/ncr (ncr=no country redirect不做国家跳转)这个地址直接强制进入美国英文Google搜索,不让Google自作主张的跳转。那么,现在Google给了我们第三个 方法:点击搜索结果框下方的Google.com in English链接(如上图)。

这个变化已经部署到了所有Google本地搜索页面里,包括Google.com.hk。

原文来自:http://www.guao.hk/posts/googles-new-link-for-bypassing-country-redirects.html

Leave A Comment, Written on 十月 14th, 2011 , 未分类

摘要:   Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新 …

Twitter将Storm正式开源了,这是一个分布式的、容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是由BackType开发的实时处理系统,BackType现在已在Twitter麾下。GitHub上的最新版本是Storm 0.5.2,基本是用Clojure写的。

Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。Storm的主工程师Nathan Marz表示:

Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

Storm的主要特点如下:

  1. 简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
  2. 可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
  3. 容错性。Storm会管理工作进程和节点的故障。
  4. 水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
  5. 可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
  6. 快速。系统的设计保证了消息能得到快速的处理,使用ØMQ作为其底层消息队列。
  7. 本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工 作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且 是无状态的,这样一来它们就变得十分健壮,两者的协调工作是由Apache ZooKeeper来完成的。

Storm的术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被处理的数据。Sprout是数据源。Bolt处理数据。Task是运行于Spout或Bolt中的 线程。Worker是运行这些线程的进程。Stream Grouping规定了Bolt接收什么东西作为输入数据。数据可以随机分配(术语为Shuffle),或者根据字段值分配(术语为Fields),或者 广播(术语为All),或者总是发给一个Task(术语为Global),也可以不关心该数据(术语为None),或者由自定义逻辑来决定(术语为 Direct)。Topology是由Stream Grouping连接起来的Spout和Bolt节点网络。在Storm Concepts页面里对这些术语有更详细的描述。

可以和Storm相提并论的系统有EsperStreambaseHStreamingYahoo S4。其中和Storm最接近的就是S4。两者最大的区别在于Storm会保证消息得到处理。这些系统中有的拥有内建数据存储层,这是Storm所没有的,如果需要持久化,可以使用一个类似于Cassandra或Riak这样的外部数据库。

入门的最佳途径是阅读GitHub上的官方《Storm Tutorial》。其中讨论了多种Storm概念和抽象,提供了范例代码以便你可以运行一个Storm Topology。开发过程中,可以用本地模式来运行Storm,这样就能在本地开发,在进程中测试Topology。一切就绪后,以远程模式运行 Storm,提交用于在集群中运行的Topology。Maven用户可以使用clojars.org提供的Storm依赖,地址是 http://clojars.org/repo。

要运行Storm集群,你需要Apache ZookeeperØMQJZMQ、Java 6和Python 2.6.6。ZooKeeper用于管理集群中的不同组件,ØMQ是内部消息系统,JZMQ是ØMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群。关于详细的步骤,可以阅读Storm Wiki上的《Setting up a Storm cluster》

欲了解Storm的更多信息,请访问官方Storm Wiki。你也可以加入Storm邮件列表和freenode上的Storm IRC(#storm-user)。

查看英文原文:Twitter Storm: Open Source Real-time Hadoop

原文来自:Twitter Storm:开源实时Hadoop

Leave A Comment, Written on 十月 12th, 2011 , 转载

今天下了一个Eclipse的PDT版本,下载地址:PDT

目前这个版本Windows下只有32位。

解压之后发现“Failed to load the JNI shared library “F:\Java\jdk1.6.0_25\jre\bin\jvm.dll””的错。
到网上查询后发现是由于我本机子上安装的JDK是64位,而Eclipse是32拉的,所以有冲突。
解决的方法当然可以重新安装一个32位的JDK,但这个不是很好的解决办法。
我从以前的机子上把32拉的JDK给考过来,在Eclipse的启动配置文件里增加参数。

<code>-vm F:/Java/32bit/jdk1.6.0_05/bin</code>

这样PDT的环境就可以用到32位的JDK了。

Eclipse的Equinox_Launcher配置说明:Equinox_Launcher

Leave A Comment, Written on 十月 6th, 2011 , 软件 Tags: ,

DreamCoder is proudly powered by WordPress and the Theme Adventure by Eric Schwarz
Entries (RSS) and Comments (RSS).

DreamCoder

一个IT人的梦想世界