2011年8月17日星期三

央视连续抨击百度推广黑幕

  8月15日开始,百度遭到中央电视台多套栏目“曝光”,指控百度推广的经营模式,使骗子们有了可乘之机,使消费者上当受骗。中央电视台连续两天时间高密度抨击百度推广等产品,引起网民广泛议论。

  对于百度竞价排名的问题,我在过去的几年都有过详细的分析报道,包括虚假医药广告,销售企业同行关键字造成竞争对手恶性竞争,百度推广中的支付钓鱼广告,甚至还有一些成人广告,今天初的百度营销会议甚至还被砸场子,百度受到压力和质疑可见一斑。

  从CCAV栏目的曝光可以看到,百度实际上对虚假广告有一些控制措施,尤其对于医药类广告,这种措施主要体现在由总部来审批广告资质,但是这些措施存在一些较为明显的漏洞可以绕过,甚至一些百度的业务员会向客户推荐介绍这些漏洞,显得很不专业。

  百度的错误:没有明显区分广告和结果

  CCAV这次曝光百度竞价排名固然有钓鱼执法的味道,但其记者对于互联网搜索的商业模式也并不十分了解,百度做为一个“中间环节”,服务条款里声明可以出售任何关键词,从法律上讲,这个平台义务承担不必要的审查功能。而百度的问题是,百度为了提高广告点击率,没有将广告和搜索结果明显区分开来,误导了搜索用户,让搜索用户以为广告就是自然排名,这点百度就不如Google做得好了,Google在所有的广告都用明显的颜色加以区分,并在广告下注明这些都是Google提供的广告。

  至于百度广告上的违法欺诈信息,这也是中国真实社会在网络上的一个投影,这并不完全是搜索引擎的错误,一个社会的诚信问题和网络的诚信问题仅靠一个企业也是无法改变的,百度可以做的是从制度上入手,通过制度、流程以及细节上的优化,抑制欺诈广告的发布,来保障用户资金安全和诚信。

  百度的垄断是谁造成的?

  在谷歌退出中国后,百度作为中国网络搜索行业的老大,已经拥有了接近“垄断”的权力,央视在节目中也不断指控百度的一家独大,然而,百度的这种垄断是谁造成的呢?

  根据我的统计,在2009年的时候,谷歌的市场份额和百度的差距已经越来越小,呈现出较好的竞争形态,如果这种良性竞争状态能够持续,对谷歌、百度、以及中国的搜索引擎市场来说都是一件好事。这时候,央视炮制了“高也事件”以及“儿子事件”,以莫须有的罪名指控谷歌散布色情信息,赶走了谷歌,导致谷歌在中国搜索市场不断下滑,而百度的市场份额则不断上升,间接验证了李彦宏五年前的那个预言:“5年以后,Google和百度之间的关系是百度一枝独秀,从市场份额来说,大家很难看到Google了。”

  由此看来,造成现在百度的一家独大,央视也有很大功劳。

  打击的背后:媒体电视话语权的遗失

  虽然百度在推广平台上的确存在一些不规范的地方,有不少漏洞,但CCAV这种“一竿子打死”的新闻报道态度也令人产生了质疑,CCAV上的电视购物广告就没有欺诈吗?商家在CCAV上打广告难道就不是烧钱吗?至少搜索引擎的广告是针对关键字的精准广告,CCAV的广告能统计出ROI(投资回报率)吗?恐怕不行吧。央视这两天拼命敲打百度,恐怕还有更深层的原因。

  在五年前,搜狐和新浪两家广告收入总和只是中央电视台广告收入的5%,但如今却已经增长为中央电视台广告收入的五分之一,百度原先只是一个搜索工具,现在已经成长为一个广告媒体,收入直逼央视的广告收入,不久的将来,中国网络广告营销市场营收规模可能很快就超过电视广告,这些变化都让传统媒体感受到了丢失话语权的恐慌。这次央视对百度的报道,也是对百度电子商务战略的一次打击,让人们质疑百度排名的合理性和公正性,降低网民对搜索引擎的依赖度。

  我们知道,任何商业模式都不是完美的,像CCAV这样的钓鱼执法,恐怕很多企业都会中招。中国的互联网发展的确存在一些问题,但解决的方法绝不是让一个不懂甚至敌视互联网的机构来管理,那样的互联网不会变得更好,只会变得更糟。

  下面是央视的一些相关视频内容。

  [经济与法]百度:阳光背后的阴影(20110815)

  [经济与法]构建网络诚信在行动——推广链接的真相(20110816)

  [经济与法]百度,被什么蒙住了眼睛(20110817)

2011年8月16日星期二

谷歌收购摩托罗拉移动

  据谷歌官方博客报道,谷歌CEO拉里·佩奇(Larry Page)今日宣布,已与摩托罗拉移动签署最终协议,将以每股40美元的现金收购后者,总价约125亿美元。该交易已经得到两家公司董事会的批准。

  谷歌收购摩托罗拉后,将会强化谷歌在Android平台上的综合能力,并提升谷歌在Android手机软硬件方面的核心竞争力,有效抵抗微软和苹果的专利攻击,对于摩托罗拉和谷歌都是双赢。而早先诺基亚没有在转型时投奔Android而是选择了微软,现在看来显得非常被动和失策。

  在专利问题上,收购摩托罗拉将增强谷歌的专利权组合,摩托罗拉拥有的大量移动方面的专利,另谷歌面对来自微软、苹果和其他公司的专利威胁具有了一定的优势。

  谷歌声称,交易完成后,摩托罗拉移动将作为谷歌的独立业务继续运营。因此很难判断谷歌是否会进军智能手机硬件市场,深度整合摩托罗拉在硬件上的制造能力,如果谷歌利用摩托罗拉进军Android硬件市场,有可能会威胁三星、HTC等传统Android制造商的利益,破坏Android社区的和谐,但也有可能会改变苹果iOS上的强势地位,让谷歌成为和苹果一样同时具有软硬件制造能力的智能手机厂商,消弱苹果iOS的优势,同时也让谷歌在硬件制造上获得利润。不过以摩托罗拉目前的市场份额,以及谷歌“不作恶”的信条来看,这种情况的可能性不大。因此有分析师认为谷歌可能会撤出硬件市场,然后把摩托罗拉品牌卖给中国厂商。不过也有分析认为,125亿的收购如果仅仅为了专利,价格似乎高了点,不如苹果45亿收购北电合算。北电约6000个专利,其中包含很多 4G 的基础专利。

谷歌收购摩托罗拉移动

  以下为拉里·佩奇(Larry Page)声明全文,中文翻译-新浪科技:

  自2007年11月推出以来,Android不仅极大地拓展了用户的选择空间,而且还改善了用户的整个移动体验。目前,全球有超过1.5亿部Android设备被激活,每天激活的设备数量高达55万部,这些设备遍及全球123个国家的231家运营商的网络上。将于Android所取得的巨大成功,我们一直在寻求新的方式来进一步强化Android。这就是我今天很高兴地宣布收购摩托罗拉移动的原因所在。

  在通信技术、产品领域和知识产权开发领域,摩托罗拉有着80多年的创新历史,这些创新推动着我们今天所享受到的移动计算的发展。摩托罗拉的里程碑主要包括:约30年前推出全球首款便携式手机,当时全球最小、最轻的手机StarTAC。2007年,摩托罗拉组建了“开放手机联盟”(Open Handset Alliance),共同推广Android平台。

  2008年,摩托罗拉豪赌Android,将Android作为其全部智能手机的唯一操作系统。这是一个 明智的选择,我们为摩托罗拉今天所取得的成功感到兴奋。我们相信摩托罗拉的移动业务将 继续发展,并呈爆炸式增长。

  摩托罗拉同时还是家庭设备和视频解决方案市场的领头羊,由于整个市场向互联网方向转移 ,我们很愿意与摩托罗拉和整个行业合作来支持我们的伙伴,推动市场创新。

  摩托罗拉完全致力于发展Android平台是我们收购摩托罗拉的原因之一,合并后,我们将为用 户提供更出色的用户体验,从而进一步强化整个Android生态系统,这有利于用户、合作伙伴 和开发人员。我十分欢迎摩托罗拉员工成为谷歌大家庭中的一员。

  该交易不会改变我们将Android作为开放平台的立场,Android将继续开放,摩托罗拉将继续支持Android。交易完成后,摩托罗拉移动将作为谷歌的独立业务继续运营。许多硬件合作伙伴成就了Android的成功,我们期望与他们继续合作,提供更出色的用户体验。

  最近我们解释过,为什么微软和苹果等公司联合对Android发动专利攻击。美国司法部当前正在审查北电专利的拍卖结果。我们收购摩托罗拉就是希望通过强化自身的专利实力来提升市场竞争力,这有利于我们抵御来自微软、苹果和其他公司的反垄断威胁。

  谷歌合并摩托罗拉不仅将进一步强化Android,而且还将刺激市场竞争,为消费者提供更佳选择,更出众的用户体验。我相信这些伟大的体验将为股东带来巨大价值。我期待摩托罗拉员工加入谷歌大家庭中。

  佩奇(Larry Page) CEO

2011年8月14日星期日

LinkedIn是否开启了互联网泡沫四溢的2.0时代?

  2011年最闪亮的科技公司IPO非Linkedin莫属。作为美国本土首家公开上市的大型社交媒体公司,在第一天交易中,LinkedIn的股价一度最高达到 122.70美元,估值超过100亿美元。这也是2004年8月Google上市以来,美国市场规模最大的一起互联网IPO。

  许多硅谷人将Linkedin的上市与1995年的Netscape相提并论。尽管Netscape在上市时只是一个创仅建1年半、尚未实现盈利的公司,但Netscape却开创了网络经济的“十亿美金时代”,更深刻的意义在于,Netscape开启了全世界的数字经济创新的热潮,从某种意义讲,我们甚至可以将Netscape视为在2000年破灭的那一波互联网泡沫的根源。

  但Linkedin和Netscape不同。Linkedin已经创办十年,而且盈利状况良好,每年收入增幅高达100%.这正是资本市场梦寐以求的好像目,哪怕后面还有更加令人疯狂的Facebook,毕竟一鸟在手胜于二鸟在林,先把Linkedin吃了再说。

  如果一定要说Linkedin给硅谷公司们一个什么样的启示,答案只有两个字:估值。抛开Google不论,哪怕那些今天笑傲江湖的明星互联网公司们,大多在上市之初的市值都没有跨过10亿美金大关(包括长期霸占中国互联网市值第一宝座的腾讯),而且,对这些公司至关重要的最伟大创新往往发生在上市之后,资本在这些公司的发展中起到的是催化剂的作用,毫无疑问,这是一个双赢的结局。

  然而Linkedin的高估值却给这种创业者和资本双赢的模式带来了一丝隐忧。美国财经网站24/7WallSt.com的调查显示,近七成受访者认为这一价格过高。这有两重意义:太大的基数往往会造成之后的增长速度有限,而在林军的《十亿美金的教训》一书中,我们同样看到,有的时候钱太多也容易让人找不着北,这未必是件好事情。

LinkedIn是否开启了互联网泡沫四溢的2.0时代?

  需要我们考虑的,是Linkedin的上市是否会引发像1995年Netscape上市之时对资本市场的示范效应。一人得道,鸡犬升天,在Netscape上市后,任何只要带着。com的东西都能很容易拿到投资,但是当2000年的网络泡沫破灭后,许多投资者悲哀地发现,原来自己一直是在裸泳。Linkedin尽管不是社交媒体公司中的老大,但作为这个行业中首家上市公司,其走向对之后真正的巨头,Facebook的上市将有深远的影响。

  有人担心,Linkedin的高估值是否会使得即将到来的社交媒体上市潮成为资本巨头们洗钱的游戏?这种可能的确存在,市场是疯狂的,前两个月在纳斯达克上市的另一家公司Yandex,“俄罗斯的Google”,上市首日收盘时市值已超过125亿美元,门槛的提高势必使造成资本的集中,也为资本巨头们创造了合谋的先天有利条件。今年以来美国市场“中国概念”股股价过山车一般的表现,也正是资本逐利的结果。今年以来的中国互联网企业排队上市,或许也能从另一个角度说明互联网的泡沫正在兴起。这些公司们希望抢在泡沫破灭的“窗口期”前上市,其结果反而是造成了整个行业泡沫的加剧。

  互联网的泡沫就像啤酒的泡沫一样——如果没有泡沫或者泡沫太少,那么啤酒的口味就会大打折扣;如果泡沫过多,那么大多数啤酒会随着泡沫流走。虽然现在“关于互联网泡沫2.0”的话题日渐热烈,但似乎现在讨论这个问题还为时过早,毕竟“2.0”时代往往会有与以往不一样的规则,互联网产业链和互联网生态也在发生根本性变化,过去的泡沫或许是今天的常态,Linkedin价值百亿的IPO就是如此。

  但有一点是相同的:当肥皂泡漫天飞舞的时候,互联网的噩梦也就要开始了。

  来源:雷锋网供稿,作者:岑峰

2011年8月13日星期六

Windows IIS日志文件分析程序

  Windows Server具有事件日志记录的功能,其IIS日志文件里记录了包括下列信息:谁访问了您的站点,访问者查看了哪些内容等等。通过定期检查这些日志文件,网站管理员可以检测到服务器或站点的哪些方面易受攻击或存在其他安全隐患。

  不过,目前的日志分析工具并不是很完善,有些功能并不具备,特别是针对某个URL地址进行攻击的分析并不多,下面是一个VB Script程序,保存为VBS程序后可以在服务器上运行,用于分析和检测IIS日志里针对某个URL地址进行攻击的IP地址。

'代码开始
targeturl = "/archives/2761.html"  '受攻击网站的URL地址。
logfilepath = "C:LogFilesW3SVCex110813.log"  '受攻击网站的日志路径。

 

On Error Resume Next
Set fileobj = CreateObject("scripting.filesystemobject")
Set fileobj2 = CreateObject("scripting.filesystemobject")
Set myfile = fileobj2.opentextfile(logfilepath, 1, False)
 
Do While myfile.atendofstream <> True
myline = myfile.readline()
myline2 = Split(myline, " ")
newip = myline2(9)
myurl = myline2(5)
If targeturl = myurl Then
      writelog newip
End If
Loop

myfile.Close
Set fileobj2 = Nothing
Msgbox "结束."

Sub writelog(errmes)
ipfilename = "blockip.txt"
Set logfile = fileobj.opentextfile(ipfilename, 8, True)
logfile.writeline errmes
logfile.Close
Set logfile = Nothing
End Sub
'代码结束
 

IIS日志

  分析出来的IP如果出现异常,可以通过程序,将其批量添加到IIS的屏蔽IP列表里,下面是网上找到的一段VBScript代码,将其改名为vbs后,把上面那段程序的IP导入,即可批量屏蔽攻击者的IP地址。

'代码开始
'/*=========================================================================
' * Intro VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP
' * FileName VBScript-ADSI-IIS-Add-Deny-Grant-IP-Change-MetaBase.xml.vbs
' *==========================================================================*/
'AddDenyIP2All "192.168.1.106,255.255.255.0"
'AddDenyIP "123456","127.0.0.1"
'AddDenyIP2All "14.113.226.116"

 

'添加要屏蔽的IP或一组计算机,到一个指定站点上
Sub AddDenyIP(strWebNo, strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加要屏蔽的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddDenyIP2All(strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到一个指定站点上
Sub AddGrantIP(strWebNo, strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddGrantIP2All(strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'显示IIS公共配置里禁止访问的IP
Sub ListDenyIP()
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
IPList = MyIPSec.IPDeny 'IPGrant/IPDeny
WScript.Echo Join(IPList, vbCrLf)
' For i = 0 To UBound(IPList)
' WScript.Echo i + 1 & "-->" & IPList(i)
' Next
End Sub
 

智能手机管理软件进入红海

  在中国,一个新产品出现后最好的选择就是去抄它,抄得比它更好更本地化,再集合自身已有的用户、流量、资源优势一举奠定位置。如果是出现一种新趋势,最好的选择就是思考怎样从中找准自己的价值,一个新趋势的成功不是一两家公司能决定的,这也就是之前在某社区说的一切从小处着手,不要动不动就想做平台、做巨头,概念越大可能死起来越快。

  出版行业有人写书,有出版社卖书号,有编辑负责编校,有印刷厂负责印刷,有物流负责配送,有经销商负责销售。一个完整的产业链能够让上下游获利,而智能手机正是这样一个新兴的大趋势,看看周围有多少抛弃诺基亚投入HTC怀抱的朋友,未来两三年智能手机将会继续完成由上至下的普及,而运行在PC的智能手机管理软件就是备受看重的一环。

  这一类软件存的价值是:智能手机的性能配备、输入与使用、网络连接稳定性与性价比、资源获取便利性仍然与PC有着较大差距。例如我希望在手机上获取一段视频,可能会遇到的问题包括小尺寸操作麻烦,连接速度太慢且价格昂贵,下载完成后才发现播放器不支持这一格式,更好的选择是从PC搜索、下载、转码然后通过数据线传输,这样的过程同样适用于应用程序、图片、音乐的获取。另一个可以佐证的例子是,多个移动应用开发者的数据显示用户活跃度在每天的晚间大幅增加,做完用户调研后发现,除了下班空闲时间更多等因素外,最重要的因素居然是因为家里的WIFI更快更便宜。

  这些现象说明智能手机短期内不可能成为一个完整的独立平台,内容获取、资料管理等多方面都需要依赖PC,这时候PC端的智能手机管理软件就应运而生。目前主流的智能手机平台包括苹果的iOS以及Google领衔的Android,Android平台已经成为全球范围内增速最快的智能手机平台。Android手机管理软件不得不提豌豆荚,这是我去年买第一部Android手机后曾经痴迷两个月的软件,虽然之前已经有了91手机助手,但广告繁多且黑暗绯闻众多,豌豆荚界面有点小清新,各种功能做得颇有条理,孚一出现便有一丝王霸之气。

智能手机管理软件进入红海

  回头看看今天,市场上同类产品不下五款,就连腾讯都推出了同类产品,而且产品间功能并无实质差异。尽管豌豆荚已经拿了第二轮投资,但反倒是变得默默无闻了,一个纯手机管理器无法支撑一家公司,要么做矩阵要么另求出路,豌豆荚不像小米有那么完整的布局,同宗的点心OS也并不面向通用市场。豌豆荚也侧面印证了其它Android管理软件的处境,不能快速找出突围方法,产品都是无差异的软件、资料、应用管理,稍微有一点创意也会迅速被模仿,而巨头的加入更是他们无法摆脱的噩梦。

  而iOS平台的状况更糟,由于苹果是更封闭的产品体系,有自己的iTunes给用户管理设备,用户缺少对第三方管理软件的刚需。传统的越狱路线只能覆盖少部分用户,而以同步助手为代表的模拟iTunes派最终无法脱离苹果的生态链,苹果一发威他们就可能灰飞烟灭,这种行为还涉及到未知的法律风险。

  更大的风险是,智能手机或移动设备用户对于PC的依赖会越来越小,操作系统和越来越多的应用程序都致力于给用户提供更多的选择,看视频、下载资料都可以直接在手机上完成,我已经越来越少使用手机与iPad的数据线了,而更多的WIFI热点、更廉价的资费在未来都是可以期待的,PC端的管理软件注定只是一个过渡产物,终究会在发展车轮的碾压下消失。

  来源:XJP投稿,原文链接

2011年8月11日星期四

关于编程,大学没有传授的十件事

  笔者依然记得当年完成学业时,深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久,笔者就意识到,还有很多事是我所不了解的。

  在不断吸取经验的同时,笔者一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是笔者希望自己能在学校就学到的十件事。

编程

  1. 我们总是错的

  开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。

  理解并接受这个事实非常重要,我们只有这样做了,才能敞开心胸去听听别人的意见,采用他们的想法,来得出一个更好的解决办法。

  2. 事情若有可能出错,就一定会出错

  也就是说“希望驱动开发(hope driven development)”,如果你对于某些事并不确定,如果你发现自己使用了“应该”这个词,那你就麻烦了。

  而这只有一个解决方案,尽己所能去保证它不会出错,这可能意味着你需要编写一个测试、调试并验证需求……

  3. 所有的代码都烂

  在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,所有的(包括我自己写的)代码,都烂。当然,烂还是有等级之分的,但即便是我见过写得最好的代码,也是难以读懂的。

  这并不意味着把你的代码写得更好是没有意义的,恰恰相反,最好和最坏的代码还是有天壤之别的。

  4. 错误(Bug)总会存在

  永远存在!问题只在于要发现它困难与否。

  5. 客户最大

  许多客户并不在乎你在方案中使用了哪些技术,应用程序需不需要做更多的事……或通俗上说,你是否使用了好的实践方案。

  也因为我可以想象,要是我只说了前面那一段,我会收到多少恶评,让我说得更清楚些……我想说的是,我们永远不应该忘记客户的立场,有时候,开发人员为了最佳实践而在项目工程中过度坚持采用(某些)技术,但要记住,若这些技术无法给客户带来价值,那就放弃吧!

  6. 纸上谈兵是行不通的

  我曾认为,我可以在前期就把我的整个设计置于纸上,然后只要将缺漏处填上就好,但这样根本行不通。

  软件开发是复杂的,若不亲手去碰碰看,很难看到所有的实际层面以及它们之间的关系。因此,在前期保持规划与设计是很有用的,但不要过度坚持,也不要把设计图表当作合约固守。

  7. 少即是多

  或者,你可能知道更好的说法是:“Keep it simple, stupid!”(保持简单,KISS设计原则)。所以,如果没有必要的就舍弃吧!因为要记住:“事情若有可能出错,就一定会出错。”

  8. 编写代码只是我们所做工作的20%而已

  请准备好,花80%的时间用于思考、调试、测试、开会、谈话……而所有的其他活动都是非常重要的,所以若要成为一个优秀的软件开发人员,你必须培养广泛而全面的技巧(Skill),而不仅仅是技术(Technical)。

  9. 客户永远不知道他/她想要的是什么

  客户若有需求,或是想法,但是他们不知道详细情况……软件开发要做的工作就是,发现细节并去除所有的不确定性,将这些需求转换成客户想要一个应用程序。

  10. 已经有人做过了

  所以不要再重新发明轮子,用谷歌找找看,或者更好的方法是,请教你的同事,很多时候他们可能都已经做了相同、或非常类似的事情。

  英文原文:10 things they never teach in college about programming

  中文翻译:伯乐在线

Twitter支持上传图片功能

  Twitter官方微博中称,已经全面推出新版Twitter页面,旧版Twitter页面下线,用户将无法再使用旧版页面。新版中,用户可以使用图片上传功能,上传用户本地的图片到Twitter里。

  用户可以在他们的个人状态更新框的最左侧找到一个相机图标,用户可以点击该图标进行图片上传。用户可以从自己的桌面中上传不超过3MB的图片,然后相关图片信息将会嵌入到用户的Twitter状态中。如果用户发现传错了图片,可以直接点击“X”按钮来删除该图片。

  在用户的Timeline里,图片会显示一条以“pic.twitter.com”开头的链接来表示,所有通过Twitter上传的图片都将交由图片共享网站Photobucket托管,用户点击后会查看到图片信息,目前手机上好像可以正常访问Twitter发的图片。

Twitter支持上传图片功能

  稍后,Twitter会进一步增强这个图片上传功能,包括支持iPhone摄像头直接发布微博图片。

  总的来看,Twitter正在向“富媒体”微博方向转变,今天Twitter支持发图片,明天可能就支持发Youtube视频,之后再支持个投票、音乐什么的,Twitter就变成新浪微博了。